Привет 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;
}
Я получаю исключение в строке, которая вызывает метод, но я не уверен, что я делаю неправильно.