BluetoothHeadset.getConnectedDevices返回0大小的BluetoothDevice列表

时间:2015-07-21 08:01:58

标签: android android-bluetooth

我已连接两部Android手机。一个是服务器,另一个是客户端。当他们处于连接状态时,客户端将尝试通过getProfileProxy()获取BluetoothHeadset。但它可以获得0连接的BluetoothDevice。我预计服务器可以是耳机,因为Android支持BluetoothHeadset包括蓝牙耳机和免提(v1.5)配置文件。因此,客户应该通过BluetoothHeadset获得至少1个连接的BluetoothDevice。

private void methodx() { mBluetoothAdapter.getProfileProxy(xx.this, mBluetoothProfileServiceListener, BluetoothProfile.HEADSET); }

private BluetoothHeadset mBluetoothHeadset;
private BluetoothDevice mBluetoothHeadsetDevice;

private BluetoothProfile.ServiceListener mBluetoothProfileServiceListener =
        new BluetoothProfile.ServiceListener() {
            @Override
            public void onServiceConnected(int profile, BluetoothProfile proxy) {
                mBluetoothHeadset = (BluetoothHeadset) proxy;
                List<BluetoothDevice> deviceList = mBluetoothHeadset.getConnectedDevices();
                if (deviceList.size() > 0) {
                    mBluetoothHeadsetDevice = deviceList.get(0);
                } else {
                    mBluetoothHeadsetDevice = null;
                }
            }
            @Override
            public void onServiceDisconnected(int profile) {
                if (mBluetoothHeadset != null) {
                    List<BluetoothDevice> devices = mBluetoothHeadset.getConnectedDevices();
                    if (devices.size() == 0) {
                        mBluetoothHeadsetDevice = null;
                    }
                    mBluetoothHeadset = null;
                }
            }
        };

经过几天的研究,我发现这不是一件容易的事。目前,Android确实支持HSP&amp; HFP,但它扮演音频门的角色。蓝牙耳机扮演耳机角色。在应用程序级别完成此任务是不可能的,但需要更多地研究Bluedroid(Android BT堆栈)和BT设备驱动程序。基本上,它需要一个定制的ROM。

0 个答案:

没有答案