Вопрос по android – Как предотвратить кэширование имен и обнаружить изменения имени Bluetooth при обнаружении

1

Я пишу приложение для Android, которое получает информацию с устройства Bluetooth. Наш клиент предположил, что устройство Bluetooth (которое они производят) изменит свое имя в зависимости от определенных условий - для простейшего примера его имя иногда будет «xxx-ON». и иногда "xxx-OFF". Мое приложение просто должно искать этот передатчик BT (я использую BluetoothAdapter.startDiscovery ()) и делать разные вещи в зависимости от имени, которое оно находит. Я НЕ соединяюсь с устройством Bluetooth (хотя я полагаю, что это возможно, приложение должно в конечном итоге работать с несколькими устройствами Android и несколькими передатчиками BT, поэтому я не уверен, что это будет хорошей идеей).

Мой код работает нормально, чтобы обнаружить устройства BT и найти их имена. Кроме того, если устройство выключается, я могу в следующий раз обнаружить, что его там нет. Но, похоже, что если оно есть и оно меняет имя, я выбираю старое имя - возможно, оно где-то кешируется. Даже если устройство Bluetooth отключается, и мы замечаем, что в следующий раз, когда я его обнаружу, я все еще вижу старое имя.

Я нашел эту проблему в Google Code:Вот но мне даже было непонятно, как использовать данный обходной путь («попытаться подключиться»). Кто-нибудь сделал это и повезло? Можете поделиться кодом?

Есть ли простой способ просто удалить кэшированные имена и выполнить повторный поиск, чтобы я всегда находил самые новые имена? Даже непростой способ был бы хорош (я пишу для рутированного устройства).

Спасибо

Ваш Ответ

1   ответ
1

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

public static void startServiceDiscovery( BluetoothDevice device ) {
    // Need to use reflection prior to API 15
    Class cl = null;
    try {
        cl = Class.forName("android.bluetooth.BluetoothDevice");
    } catch( ClassNotFoundException exc ) {
        Log.e(CTAG, "android.bluetooth.BluetoothDevice not found." );
    }
    if (null != cl) {
        Class[] param = {};
        Method method = null;
        try {
            method = cl.getMethod("fetchUuidsWithSdp", param);
        } catch( NoSuchMethodException exc ) {
            Log.e(CTAG, "fetchUuidsWithSdp not found." );
        }
        if (null != method) {
            Object[] args = {};
            try {
                method.invoke(device, args);
            } catch (Exception exc) {
                Log.e(CTAG, "Failed to invoke fetchUuidsWithSdp method." );
            }               
        }
    }
}

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Kibi

Похожие вопросы