在Android上多次发现本地蓝牙设备

时间:2017-07-27 14:15:43

标签: android xamarin bluetooth xamarin.android

亲爱的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

0 个答案:

没有答案