繁体   English   中英

如何从意图中提取蓝牙扫描结果?

[英]How to extract Bluetooth Scan Results from intent?

有人如何从 C# 中的意图 object 中提取扫描结果?

我有一个来自 BroadcastReceiver 的回调 class。 在同一个 class 中,我有这种覆盖方法,我正在扫描蓝牙设备。

public override void OnReceive(Context context, Intent intent)
{
   BluetoothDevice device = (BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExtraDevice)
}

我需要知道是否有办法从该意图 object 中提取 ScanResults,以便我可以将这些 ScanResults 转换为 byte[] 并开始解析信息。

public override void OnScanResult(ScanCallbackType callbackType, ScanResult result)
{
}

换句话说,我可以使用所描述的第一种方法来获得关于 ScanResult 的第二种方法的结果吗?

看一下Newtonsoft ,它可以将any object序列化为 json 字符串然后反序列化。

这里我们需要ScanResult转换为string ,然后将其传递给Intent ,然后在BroadcastReceiver接收器class中将ScanResult反序列化为ScanResult。

  1. 安装插件: https://www.nuget.org/packages/Newtonsoft.Json/

  2. ScanResult转换为 Json 字符串。

     public override void OnScanResult(ScanCallbackType callbackType, ScanResult result) { string json = JsonConvert.SerializeObject(result); Intent intent = new Intent("MyAction"); intent.PutExtra("MyJson",json); SendBroadcast(intent); }
  3. 将 Json 字符串转换为ScanResult

     public override void OnReceive(Context context, Intent intent) { if ("MyAction".Equals(intent.Action)) { string json = intent.GetStringExtra("MyJson"); ScanResult result = JsonConvert.DeserializeObject<ScanResult>(json); // do something } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM