如何监控蓝牙连接状态的变化来自Xamarin.Forms

时间:2017-02-23 15:20:08

标签: xamarin xamarin.forms bluetooth-lowenergy core-bluetooth android-bluetooth

需要检查与远程设备的蓝牙连接是否存在或已断开连接。它基本上是一种主要针对Android和UWP的表格。

我尝试使用Dependency服务并在Android中实现如下,

    _[assembly: Xamarin.Forms.Dependency(typeof(BluetoothListenerActivity))]
namespace demotool.Droid
{
public class BluetoothListenerActivity : Activity,IBluetoothListener
{
public event EventHandler OnDeviceDisconnected;
public static BluetoothListenerActivity mySelf;

    //string device;
    public void start()
    {
        mySelf = this;
        BluetoothStatusBroadCast mreceiver = new BluetoothStatusBroadCast();
        IntentFilter mfilter = new IntentFilter(BluetoothDevice.ActionAclDisconnected);
        Forms.Context.RegisterReceiver(mreceiver,mfilter);
    }
    public void receivedstatuschangd(string devicename,string state)
    {
        OnDeviceDisconnected(this, new DeviceDisconnectedEventArgs(name: devicename,status: state));
    }
}
}_

BroadcastReceiver: 
namespace Demo.Droid
{
[BroadcastReceiver]
class BluetoothStatusBroadCast : BroadcastReceiver 
{
public override void OnReceive(Context context, Intent intent)
{
BluetoothDevice device =(BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExtraDevice);
BluetoothListenerActivity.mySelf.receivedstatuschangd(device.Name, intent.Action);
}
}
}

Xamarin Forms Part:
_ protected override void OnStart()
{
IBluetoothListener bluetoothlistener = DependencyService.Get();
bluetoothlistener.start();
bluetoothlistener.OnDeviceDisconnected += Bluetoothlistener_OnDeviceDisconnected;
}
private void Bluetoothlistener_OnDeviceDisconnected(object sender, DeviceDisconnectedEventArgs e)
{
Page page1 = new Page();
page1.DisplayAlert(e.Name+ " " +e.Status, "Alert", "OK");
}_

我已注册的Intent Action-BARTDevice.ActionAclDisconnected,在配对完成或发出连接请求后会被触发,我认为这不是设备的实际断开连接

是否有任何常见的插件可以监控远程设备的蓝牙连接变化。或者你能不能告诉我我应该听的实际意图行动。

提前致谢!

0 个答案:

没有答案