你如何在Xamarin中使用BluetoothA2dp类

时间:2014-02-17 16:50:21

标签: android bluetooth xamarin.android xamarin a2dp

我正在尝试使用A2DP配置文件控制与设备的蓝牙连接。 在Android的本机Java开发中,开发人员使用BluetoothA2dp类进行连接。

在Xamarin中有一个叫做相同的类--BluetoothA2dp。但我似乎无法理解如何初始化它的实例,因为它没有构造函数。

如何在该类端口的帮助下创建连接?

2 个答案:

答案 0 :(得分:2)

您不需要直接使用BluetoothA2dp类。根据Android文档...

  

BluetoothA2dp是用于控制蓝牙A2DP的代理对象   通过IPC服务。使用getProfileProxy(Context,   BluetoothProfile.ServiceListener,int)获取BluetoothA2dp代理   对象

您应该使用BluetoothAdapter.GetProfileProxy启动与A2DP代理对象的连接。

BluetoothAdapter.DefaultAdapter.GetProfileProxy(this, serviceListener, ProfileType.A2dp);

上面方法调用中的serviceListener参数需要是实现IBluetoothProfileServiceListener的类的实例,然后您可以通过OnServiceConnected方法访问代理对象。

public void OnServiceConnected(ProfileType profile, IBluetoothProfile proxy)
{

}

答案 1 :(得分:-1)

Xamarin版本5.0至5.2中提供了“BluetoothA2DP”类,refer to link

由于“BluetoothA2DP”是密封类,因此无法继承。您只能通过其实例使用它。

您需要覆盖其“GetConnectionState”“GetDevicesMatchingConnectionStates”方法来连接特定设备。

您可以做的最好的事情是尝试使用您自己的扩展方法扩展“BluetoothA2DP”的功能。

假设您的“BluetoothA2DP”类如:

public sealed class BluetoothA2dp : Java.Lang.Object,   IBluetoothProfile, IDisposable {
    public ProfileState GetConnectionState (BluetoothDevice device)  {
        return some_device_configs;
    }
}

然后您自己的类将“BluetoothA2DP”类功能扩展为:

public static class MyClassExtender
{
    public static void ExtendedTest(this BluetoothA2DP instance)
    {
        instance.GetConnectionState();        
    }
}

然后使用ExtendedTest()方法来使用“BluetoothA2DP”类。

希望这应该有效:)

您可以 refer here 获取完整的API文档。