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

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

1 голос
/ 18 августа 2010

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

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

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

Ответы [ 3 ]

0 голосов
/ 18 августа 2010

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

0 голосов
/ 03 октября 2012

Следующие значения приемника вещания должны сообщать вам, когда какое-либо устройство 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 голосов
/ 18 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...