Tom*_*tom 16 c# android bluetooth xamarin
我刚刚开始看看xamarin,现在我想扫描蓝牙设备.因此我使用以下代码:
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
bluetoothAdapter.StartDiscovery();
Run Code Online (Sandbox Code Playgroud)
我得到以下class结果:
[BroadcastReceiver]
[IntentFilter(new [] {BluetoothAdapter.ActionDiscoveryFinished})]
public class BluetoothReceiver : BroadcastReceiver
{
public BluetoothReceiver()
{
}
public override void OnReceive(Context context, Intent intent)
{
if (BluetoothAdapter.ActionDiscoveryFinished.Equals(intent.Action))
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还将我的应用程序的权限设置为BLUETOOTH和BLUETOOTH_ADMIN.一切正常,OnReceive-Method被正确调用.我现在的问题是:如何从OnReceive-Method的参数中获取找到的设备?
ACTION_DISCOVERY_FINISHED除了发现操作已完成之外,不会告诉您任何其他信息。https://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#ACTION_DISCOVERY_FINISHED
如果您想从扫描中获取设备,您应该阅读startDiscovery()有关查找设备的说明:
发现过程通常涉及约 12 秒的查询扫描,然后对每个新设备进行寻呼扫描以检索其蓝牙名称。
这是一个异步调用,它会立即返回。注册 ACTION_DISCOVERY_STARTED 和 ACTION_DISCOVERY_FINISHED 意图以确定发现何时开始和完成。注册 ACTION_FOUND,以便在发现远程蓝牙设备时收到通知。
https://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#startDiscovery()
因此,您应该使用ACTION_FOUND并解析EXTRA_DEVICEfor devices:
广播操作:发现远程设备。
在发现过程中发现远程设备时发送。
始终包含额外字段 EXTRA_DEVICE 和 EXTRA_CLASS。可以包含额外字段 EXTRA_NAME 和/或 EXTRA_RSSI(如果可用)。
https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#ACTION_FOUND
按照事件的顺序,您将执行以下操作:
ACTION_DISCOVERY_STARTED- 这将开始发现ACTION_FOUND- 它将找到一个设备ACTION_DISCOVERY_FINISHED- 这将结束发现| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |