Я работаю над проектом Xamarin.Android, и мне нужно сканировать близлежащие устройства Bluetooth и после выбора подключить его к моему устройству.Это то, что я сделал до сих пор:
AndroidManifest.xml
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
BluetoothDeviceReceiver.cs
public class BluetoothDeviceReceiver : BroadcastReceiver
{
private static BluetoothDeviceReceiver _instance;
public static BluetoothDeviceReceiver Receiver => _instance ?? (_instance = new BluetoothDeviceReceiver());
public override void OnReceive(Context context, Intent intent)
{
var action = intent.Action;
if (action != BluetoothDevice.ActionFound)
{
return;
}
// Get the device
var device = (BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExtraDevice);
}
}
MainScreenView.cs
protected override void OnResume()
{
base.OnResume();
RegisterReceiver(BluetoothDeviceReceiver.Receiver, new IntentFilter(BluetoothDevice.ActionFound));
}
protected override void OnPause()
{
base.OnPause();
UnregisterReceiver(BluetoothDeviceReceiver.Receiver);
}
Команда включения:
BluetoothAdapter.DefaultAdapter.StartDiscovery();
Я установил точку останова в методе OnReceive, но он там никогда не достиг.
Что мне здесь не хватает?
ОБНОВЛЕНИЕ
Устройство, на котором я работал, имеет версию Android 8.0.0.Это не работает только на этом устройстве.При переключении на другую версию Android то же решение работало нормально.Мне нужно выяснить, почему это происходит