setPin () показывает ошибку в затмении, что "setPin () не определен для BluetoothDevice" - PullRequest
0 голосов
/ 08 февраля 2012

Я не нахожу много BluetoothDevice методов, таких как, setPasskey(), setPin(), setPairingConfirmation(), setRemoteOutOfBandData().

Я также искал на Android сайте, но не нашел его.Когда я использую эти методы в моей программе в eclipse, она показывает мне ошибку: она не определена для типа BluetoothDevice .

Они устарели сейчас?Если да, то каковы новые методы того же типа.

1 Ответ

0 голосов
/ 22 мая 2012

Предполагается, что процесс сопряжения выполняется только приложениями, поставляемыми с платформой! Это означает, что у этого приложения есть доступ к скрытому API. Например, вы можете найти скрытый API для Bluetooth здесь . Настоятельно рекомендуется не использовать скрытый API, поскольку он может измениться без предупреждения в следующем выпуске Android. Если вы все еще планируете использовать этот API, самый безопасный способ - использовать отражение:

try {
    Class<? extends BluetoothDevice> c = device.getClass(); // BluetoothDevice.class
    Method createBond = c.getMethod("createBond");
    Object result = createBond.invoke(device);
    Boolean castedResult = (Boolean)result;
    Log.d(TAG, "Result: " + castedResult.toString());
} catch (SecurityException e) {
    e.printStackTrace();
} catch (NoSuchMethodException e) {
    e.printStackTrace();
} catch (IllegalArgumentException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

Существует также альтернативный способ простого использования скрытого API , но я не пробовал.

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