Android 2.2 программно сообщает, подключена ли моя Bluetooth-гарнитура при запуске приложения - PullRequest
2 голосов
/ 17 августа 2011

Я программирую для android 2.2 API Level 8 и пытаюсь выяснить, подключена ли в настоящее время Bluetooth-гарнитура при первом запуске приложения.Кажется, я не могу найти решение этой проблемы.

Как только мое приложение запущено и работает, я могу прослушивать BluetoothDevice.ACTION_ACL_CONNECTED и BluetoothDevice.ACTION_ACL_DISCONNECTED, как обозначено здесь , что прекрасно работает для вас,Но я не могу понять, как определить, перед включением BroadcastReceiver, подключена ли в настоящее время Bluetooth-гарнитура.

Я также выяснил, как определить, есть ли на устройстве сопряженные устройства, с помощью следующего.

BluetoothAdapter mBluetoothAdapter = null;
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter != null)
{
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
    if (pairedDevices.size() != 0)
    {
        // the device has paired devices
        for (BluetoothDevice device : pairedDevices)
        {
            Log.i(TAG, "device name: " + device.getName());
            Log.i(TAG, "device address: " + device.getAddress());
        }
    }
    else
    {
        // no paired devices
        Log.i(TAG, "no paired devices");
    }
}

Я надеюсь, что у кого-то уже есть решение этой проблемы для API уровня 8. Я понимаю, что в API 11 есть некоторые новые классы, такие как BluetoothProfile и BluetoothHeadset , который, вероятно, мог бы сделать это в 1 строке кода, но я снова пытаюсь сделать это на уровне API 8

Я готов попробовать что-нибудь на этом этапе.

Заранее спасибо

-H

Ответы [ 2 ]

4 голосов
/ 22 мая 2014

Следующий код работает для меня. Сначала подключите ваше BT-устройство с android вручную.

AudioManager am = getSystemService(Context.AUDIO_SERVICE)
if( am.isBluetoothA2dpOn() )
{
    //bt device is connected with phone
}
else{
   // no device is connected with phone
}
1 голос
/ 17 августа 2011

К сожалению, в Java нет способа сделать это на некорневом устройстве.Если у вас есть устройство с root-доступом и вы используете NDK, вы можете перейти на уровень программирования BlueZ и сделать это там, но с общедоступным Java API нет способа сделать это.

...