#c# #xamarin #bluetooth #switch-statement #toggle
#c# #xamarin #bluetooth #оператор переключения #переключить
Вопрос:
Есть ли способ заставить приложение считывать активацию Bluetooth с внешнего триггера, например, когда пользователь проводит пальцем по экрану и включает его, и соответствующим образом переключает переключатель в приложении (т. Е. Если пользователь внешне включает его, мой переключатель должен автоматически переключаться на on и наоборот). Вот код xamarin C #, который я использую для включения и выключения Bluetooth в моем приложении.
MainActivity.cs
void Enable(object sender, EventArgs e)
{
BluetoothManager _manager;
_manager = (BluetoothManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.BluetoothService);
bool on = _manager.Adapter.IsEnabled;
if (on == true)
{
string error = "Bluetooth is Already on";
Toast.MakeText(this, error, ToastLength.Long).Show();
e.Equals(true);
}
else
{
string okay = "Bluetooth has been turned on";
_manager.Adapter.Enable();
Toast.MakeText(this, okay, ToastLength.Long).Show();
}
}
void Disable(object sender, EventArgs e)
{
BluetoothManager _manager;
_manager = (BluetoothManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.BluetoothService);
bool on = _manager.Adapter.IsEnabled;
if (on == false)
{
string error = "Bluetooth is Already off";
Toast.MakeText(this, error, ToastLength.Long).Show();
e.Equals(false);
}
else
{
string okay = "Bluetooth has been turned off";
_manager.Adapter.Disable();
Toast.MakeText(this, okay, ToastLength.Long).Show();
}
}
Центр обмена сообщениями подписчиков, который я использовал в mainactivity, — это этот
BluetoothAndroid();
MessagingCenter.Subscribe<object, bool>(this, "Bluetooth", (sender, isEnabled) =>
{
if (isEnabled)
{
Enable(null, new EventArgs());
}
else
{
Disable(null, new EventArgs());
}
});
и метод MainPage.xaml.cs Subscriber.sender является
private void Enable(object sender, ToggledEventArgs e) {
if (e.Value == true)
{
MessagingCenter.Send<object, bool>(this, "Bluetooth", true);
// await DisplayAlert("Bluetooth Status", "Bluetooth has been turned on", "OK");
}
else
{
MessagingCenter.Send<object, bool>(this, "Bluetooth", false);
// await DisplayAlert("Bluetooth Status", "Bluetooth has been turned off", "OK");
}
}
Все, что мне нужно, это код C sharp, чтобы разобраться в технике, получить состояние и установить переключатель переключателя включенным или выключенным, когда пользователь запускает состояние из внешней активности, спасибо
Комментарии:
1. Есть ли какие-либо обновления для этой проблемы?
2. Нет, его класс не показал никаких ошибок, но я все еще не могу включить Bluetooth с внешнего триггера
Ответ №1:
Вы можете создать BroadcastReceiver
прослушивание android.bluetooth.adapter.action.STATE_CHANGED
действия и действовать соответствующим образом.
[BroadcastReceiver]
[IntentFilter(new[] { BluetoothAdapter.ActionStateChanged })]
public class BluetoothStateChangedReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
if (intent.Extras == null)
return;
var state = intent.GetIntExtra(BluetoothAdapter.ExtraState, -1);
switch(state)
{
case (int)State.On:
// bluetooth is on
break;
case (int)State.Off:
// bluetooth is off
break;
}
}
}
Вам нужно будет создать экземпляр и зарегистрировать свой приемник, хорошим местом будет ваш MainActivity.
Комментарии:
1. Большое спасибо @CheeseBaron, позвольте мне реализовать это, я сразу вернусь с отзывом