亲爱的Android开发者,
我开发了一个应用程序(在XAMARIN中),可以发现该范围内的所有蓝牙设备。它工作正常。但是,为了获得实验的良好数据,我需要进行100次发现。我每隔30秒发起一次发现。问题是应用程序总是在19次“测量”后发生故障并且调试器无法处理错误。
我的代码的重要部分:
首先,我在MainActivity的OnStart()方法中注册BluetoothReceiver:
RegisterReceiver(bluetoothDeviceReceiver, new IntentFilter(BluetoothDevice.ActionFound));
我在MainActivity中启动BluetoothAdapter
BluetoothAdapter adapter = BluetoothAdapter.DefaultAdapter;
发现设备时会调用此方法
public override void OnReceive(Context context, Intent intent)
{
System.Diagnostics.Debug.WriteLine("Devices found");
string action = intent.Action;
if (action == BluetoothDevice.ActionFound)
{
BluetoothDevice newDevice = (BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExtraDevice);
short rssi = intent.GetShortExtra(BluetoothDevice.ExtraRssi, (short)0);
System.Diagnostics.Debug.WriteLine(newDevice.Name);
}
}
每隔30秒,这行代码称为
adapter.StartDiscovery();
我已经厌倦取消注册蓝牙接收器并打开并关闭设备的蓝牙(在代码中)。它没有帮助。
感谢您的任何反馈。
//编辑
我在MAC Visual Studio上找到了这个堆栈跟踪: https://drive.google.com/file/d/0B9oT4PKLRpTMd3o2UTludjVzWjQ/view?usp=sharing