Android Bluetooth: подключен?

1

Есть ли способ выяснить, подключены ли вы к устройству Bluetooth?

У меня есть приложение для подключения, отправки/получения просто отлично. Тем не менее, мне нужен способ узнать, не подключен ли я еще к этому вопросу. Если я выйду из диапазона и вернусь в диапазон.

Я заметил, что в сокете Bluetooth нет функции isConnected, как в материалах TCP... есть ли способ увидеть, подключены ли вы или подключиться к устройству, с которым вы должны быть связаны?

Теги:
bluetooth

3 ответа

0
Лучший ответ

Единственный способ, которым я мог обойти это, - отправить сообщение "сердцебиение" раз в секунду. Если он не пройдет, я предполагаю, что Bluetooth отключен.

0

Следующие значения широковещательного приемника должны сообщать вам, когда какое-либо устройство BT отключено:

intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); // API 5
intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); // API 5

Вероятно, вы должны реализовать прокси-сервер BluetoothProfile.ServiceListener, если вас интересует конкретное устройство:

private class MyBluetoothHeadsetListener //
                implements BluetoothProfile.ServiceListener
{
    @Override
    public void onServiceDisconnected(int profile)
    {
    }

    @Override
    public void onServiceConnected(int profile, BluetoothProfile proxy)
    {
        if (profile == BluetoothProfile.A2DP)
        {
            BluetoothA2dp bluetoothA2dp = (BluetoothA2dp) proxy;
            mDevicesA2dp = bluetoothA2dp.getConnectedDevices();
            for (BluetoothDevice deviceA2dp : mDevicesA2dp)
            {
                boolean isA2dpPlaying = bluetoothA2dp.isA2dpPlaying(deviceA2dp);
            }
            return;
        }

        if (profile == BluetoothProfile.HEADSET)
        {
            BluetoothHeadset bluetoothHeadset = (BluetoothHeadset) proxy;
            mDevicesNonA2dp = bluetoothHeadset.getConnectedDevices();
            if (mDevicesNonA2dp.size() > 0)
            {
                for (BluetoothDevice deviceNonA2dp : mDevicesNonA2dp)
                {
                    BluetoothClass bluetoothClass = deviceNonA2dp.getBluetoothClass();
                    String bluetoothDeviceClass = bluetoothClassToString(bluetoothClass);
                    boolean isAudioConnected = bluetoothHeadset.isAudioConnected(deviceNonA2dp);
                }
            }
            return;
        }
    }
}

...

private MyBluetoothHeadsetListener mProfileListener = new MyBluetoothHeadsetListener();

...

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
adapter.getProfileProxy(mApp, mProfileListener, BluetoothProfile.HEADSET);
adapter.getProfileProxy(mApp, mProfileListener, BluetoothProfile.A2DP);
0

Отправьте наименьший объем данных, которые вы можете, и посмотрите, получите ли вы ответ. Если вы этого не сделаете, ну, у вас нет связи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню