Возможно ли установить соединение через L2CAP через Bluetooth?

У меня есть коллекция наушников Bluetooth, и я хотел иметь возможность подключиться напрямую к их профилю AVRCP.

Основным камнем преткновения является то, что не существует общедоступного способа создания сокета L2CAP. Теоретически приведенный ниже код должен работать, но я получаю сообщение об ошибке отказа в разрешении.
У меня есть это в моем манифесте:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Фрагмент кода здесь:

private BluetoothSocket createL2CAP(BluetoothDevice bd, UUID uuid) {
    BluetoothSocket result = null;
    try {
        c=BluetoothSocket.class.getDeclaredConstructor(int.class,int.class,boolean.class,boolean.class, BluetoothDevice.class,int.class,ParcelUuid.class);
        result=(BluetoothSocket) c.newInstance(BluetoothSocket.TYPE_L2CAP, -1, true, true, bd, -1, new ParcelUuid(uuid));
    } catch (NoSuchMethodException e) {
        addln("BluetoothSocket: No Such Constructor");
    } catch (IllegalAccessException e) {
        addln("BluetoothSocket: Illegal access");
    } catch (InvocationTargetException e) {
        addln("BluetoothSocket: Target exception "+e.getMessage());
    } catch (InstantiationException e) {
        addln("BluetoothSocket: "+e.getMessage());
    }
    return result;
}

Он находит конструктор, но выбрасывает исключение IllegalAccessException. Кому-нибудь посчастливилось убедить Android Bluetooth установить любой тип соединения, кроме RFCOMM? И / или есть ли другой подход, который может иметь больший успех?

(PS: addln просто отправляет сообщения в текстовое представление, чтобы я мог видеть, что происходит)

0 ответов

Другие вопросы по тегам