Привет user496854, как вы обошли проблему, не вызывая частные API? Я сталкиваюсь с той же проблемой

ужно проверить, какие BT-гарнитуры в настоящее время подключены (а не просто сопряжены) в OS 2.0 - 2.3. Такая функциональность не существует до API версии 11, где был представлен класс Bluetooth Headset. Но в предыдущих API уже существовал класс BluetoothHeadset, но он не был общедоступным. Вот документация для этого:http://www.kiwidoc.com/java/l/x/android/android/9/p/android.bluetooth/c/BluetoothHeadset, Итак, я пытался использовать рефлексию для вызова метода isConnected, но я довольно ужасен в рефлексии и получаю ошибкуjava.lang.IllegalArgumentException: object is not an instance of the class.

Я получил список сопряженных устройств, использующихBluetoothDevice.getBondedDevices()и я пытаюсь использоватьisConnected() метод на каждом. Вот код:

public boolean isBtDevConnected(BluetoothDevice btDev){
    boolean connected  = false;
    try {
        Class<?> BTHeadset = Class.forName("android.bluetooth.BluetoothHeadset");
        Method isConnected = BTHeadset.getMethod("isConnected", new Class[] {BluetoothDevice.class});
                connected = isConnected.invoke(BTHeadset, new Object[] {btDev});
            }
        }
    } catch (Exception e) {
        WriteToLog(e);
    }
    return connected;
}

Я получаю исключение в строке, которая вызывает метод, но я не уверен, что я делаю неправильно.

Ответы на вопрос(1)

Ваш ответ на вопрос