如何解决在OnePlus上搜索蓝牙设备时找不到设备
我有一个oneplus 8 pro设备,并测试了我们的android应用程序(Xamarin)。
当我尝试使用三星设备时,我可以发现BLE设备没有问题,但是当我尝试使用oneplus时,我什么也没得到,对于ActionBondStateChanged,ActionFound以及ActiondiscoveryFinished,OnReceive方法均未触发。
但是当打开蓝牙设置并触摸“配对新设备”时,它会搜索,当我返回到我的应用程序时,会触发ActiondiscoveryFinished(而不是ActionFound)
PS:我关闭了省电模式。
我真的不知道什么可能导致此问题。 这是我的代码
public class Receiver : broadcastReceiver
{
actDetectBluetoothDevices _parentActivity;
public Receiver(actDetectBluetoothDevices parentActivity)
{
_parentActivity = parentActivity;
}
public override void OnReceive(Context context,Intent intent)
{
string action = intent.Action;
// When discovery finds a device
switch (action)
{
// Get the BluetoothDevice object from the Intent
case BluetoothDevice.ActionFound:
var device = (BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExTradevice);
// If it's already paired,skip it,because it's been listed already
if (device.BondState != Bond.Bonded)
{
// check if the device has been already added,if added then skip it.. (prevent duplication)
if (!_addedBluetoothDeviceAddresses.Contains(device.Address))
{
_addedBluetoothDeviceAddresses.Add(device.Address);
_newDevicesArrayAdapter.Add(string.Format("{0}\n{1}",device.Name,device.Address));
}
}
break;
// When discovery is finished,change the Activity title
case BluetoothAdapter.ActiondiscoveryFinished:
_parentActivity.ShowProgressBar(false);
_parentActivity.ShowScanButton(true);
_parentActivity.SetTitle(Resource.String.config_bt_select_device);
if (_newDevicesArrayAdapter.Count == 0)
{
var noDevices = _parentActivity.Resources.GetText(Resource.String.config_bt_none_found);
_newDevicesArrayAdapter.Add(noDevices);
}
break;
}
}
}
这里是我如何初始化
_receiver = new Receiver(this);
var filter = new IntentFilter(BluetoothDevice.ActionFound);
RegisterReceiver(_receiver,filter);
RegisterReceiver(_receiver,new IntentFilter(BluetoothDevice.ActionBondStateChanged));
// Register for broadcasts when discovery has finished
filter = new IntentFilter(BluetoothAdapter.ActiondiscoveryFinished);
RegisterReceiver(_receiver,filter);
_btAdapter = Devicetools.GetBluetoothAdapter(this);
_btAdapter.Startdiscovery();
public static BluetoothAdapter GetBluetoothAdapter(Context context)
{
BluetoothAdapter adapter = null;
// Retrieve the adapter differently based on the current android version
if (IsOsversionEqualOrLessthan(BuildVersionCodes.JellyBeanMr1))
{
adapter = BluetoothAdapter.DefaultAdapter;
}
else if (IsOsversionEqualOrGreaterThan(BuildVersionCodes.JellyBeanMr2))
{
var bluetoothManager = (BluetoothManager)context.GetSystemService(Context.BluetoothService);
adapter = bluetoothManager.Adapter;
}
return adapter;
}
PS:在上面的代码中输入“ else if”部分。我也尝试过BluetoothAdapter.DefaultAdapter,但结果相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。