Android BluetoothPAN для создания сети TCP/IP между устройством Android и ПК с Windows7

Вопрос 1) Я пытаюсь создать соединение TCP/IP между устройством Android и ПК с Windows 7. Для этой цели я использую скрытый класс Android BlutoothPan, используя API отражения Java. Вот код:

private void invokeConnectMehotd() {

    String sClassName = "android.bluetooth.BluetoothPan";

    try {  

        Class<?> classBluetoothPan = Class.forName(sClassName);

        Constructor<?> ctor = classBluetoothPan.getDeclaredConstructor(Context.class, ServiceListener.class);
        ctor.setAccessible(true);
        Object instance = ctor.newInstance(mContext, mServiceListener);                 

        if(mPairedBluetoothDevice != null) {

            //  Set Tethering ON
            Class[] paramSet = new Class[1];
            paramSet[0] = boolean.class;

            Method setTetheringOn = classBluetoothPan.getDeclaredMethod("setBluetoothTethering", paramSet);

            setTetheringOn.invoke(instance, true);

            //  IsTetheringOn?
            Class<?> noparams[] = {};

            Method m = classBluetoothPan.getDeclaredMethod("isTetheringOn", noparams);
            boolean isTetheringOn = ((Boolean) m.invoke(instance, (Object []) noparams)).booleanValue();           

            Log.d("Tether", "Tethered = "+ isTetheringOn);


            //  Connect to remote device
            Class[] paramDevice = new Class[1];
            paramDevice[0] = BluetoothDevice.class;

            Method connect = classBluetoothPan.getDeclaredMethod("connect", paramDevice);

            boolean isConnected = ((Boolean) connect.invoke(instance, mPairedBluetoothDevice)).booleanValue();
            Log.d("Connected", "Connected = "+ isConnected);
        }

    } catch (ClassNotFoundException e) {  
        e.printStackTrace();
    } catch (SecurityException e) {  
        e.printStackTrace();
    } catch (Exception e) {  
        e.printStackTrace();
    }  
}

Вот лог от logcat:

07-16 23:04:04.514: D/GLWebViewState(8937): Reinit shader
07-16 23:04:04.604: D/GLWebViewState(8937): Reinit transferQueue
07-16 23:04:12.452: E/QLBluetoothServer(8937): L-AV-SUDGUDI01
07-16 23:04:12.452: E/QLBluetoothServer(8937): E0:2A:82:2C:6E:E0
07-16 23:04:14.123: E/QLBluetoothServer(8937): HPTEST-PC
07-16 23:04:14.123: E/QLBluetoothServer(8937): 00:27:13:DC:AB:FD
07-16 23:04:18.608: D/BluetoothPan(8937): BluetoothPan() call bindService
07-16 23:04:18.628: D/BluetoothPan(8937): BluetoothPAN Proxy object connected
07-16 23:04:18.638: D/BluetoothPan(8937): BluetoothPan(), bindService called
07-16 23:04:19.318: D/BluetoothPan(8937): setBluetoothTethering(true)
07-16 23:04:19.328: D/BluetoothPan(8937): isTetheringOn()
07-16 23:04:19.338: D/Tether(8937): Tethered = true
07-16 23:04:20.469: D/BluetoothPan(8937): connect(E0:2A:82:2C:6E:E0)
07-16 23:04:20.529: D/Connected(8937): Connected = true

Несмотря на то, что в журнале говорится, что устройство подключено к ПК с Win7, я все еще не вижу IP-адрес, назначенный моему ПК с устройства, и мой компьютер не может получить доступ к Интернету через сеть 3G/4G моего устройства Android.

Пожалуйста, предложите, если это правильный метод для установки TCP/IP через Bluetooth?

Вопрос 2) Я также пытаюсь подключиться с ПК Win7 к устройству Android. Но я не нашел Win32 API для доступа к профилям Bluetooth на ПК с Win7. Я также попытался автоматизировать пользовательский интерфейс в Win7 для вызова отдельного приложения апплета панели управления (скажем, я хочу программно имитировать щелчок правой кнопкой мыши на моем устройстве -> Подключение с помощью -> Точка доступа).

Пожалуйста, предложите, если есть какие-либо методы, чтобы либо программно получить доступ к отдельным элементам апплета Панели управления и вызывать операции над ними, либо использовать API для установки TCP/IP через Bluetooth с ПК с Win7.

Любая помощь высоко ценится.

1 ответ

Пожалуйста, проверьте эту библиотеку http://bluecove.org/. Это может решить вашу проблему.

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