0

ラップトップで、Bluetoothサーバーが着信接続をリッスンしています。Android はクライアントであり、PC に接続したいと考えています。

どうしたの?初めて接続してPCにデータを送ることができます。Android アクティビティをオフにして再度開始すると、接続機能はパスしますが、PC は新しい接続を登録しません。データを送信しようとすると、Android システムは次のようにログに記録します。

05-16 13:11:17.091: エラー/BluetoothEventLoop.cpp(102): event_filter: 受信信号 org.bluez.Device:PropertyChanged から /org/bluez/30064/hci0/dev_50_63_13_CB_52_96

何が機能しますか?サーバーとクライアントでサーバーのUUIDを変更すると、最初に接続を試みたときに再び機能します。後続の試行は機能しません。

サーバーコード:

    /** Waiting for connection from devices */
private void waitForConnection() {
    // retrieve the local Bluetooth device object
    LocalDevice local = null;

    StreamConnectionNotifier notifier;
    StreamConnection connection = null;

    // setup the server to listen for connection
    try {
        local = LocalDevice.getLocalDevice();
        local.setDiscoverable(DiscoveryAgent.GIAC);

        UUID uuid = new UUID("af29e59088cc11e1b0c40800200c9a56", false);
        System.out.println(uuid.toString());

        String url = "btspp://localhost:" + uuid.toString() + ";name=ThinBTClient";                     
        notifier = (StreamConnectionNotifier)Connector.open(url);
    } catch (Exception e) {
        e.printStackTrace();
        return;
    }

    // waiting for connection
    while(true) {
        try {
            System.out.println("Wait Thread: Waiting for connection...");
            connection = notifier.acceptAndOpen();        

            System.out.println("Got connection");               
            Thread processThread = new Thread(new ProcessConnectionThread(connection));
            processThread.start();              
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
    }
}

クライアントコード:

    BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
    UUID SPP_UUID = UUID.fromString("af29e590-88cc-11e1-b0c4-0800200c9a56");

    try {
        btSocket = device.createRfcommSocketToServiceRecord(SPP_UUID);
        mBluetoothAdapter.cancelDiscovery();
        btSocket.connect();
        outStream = btSocket.getOutputStream();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

何か案は?

4

1 に答える 1

0

アップデート:

別のラップトップ、Toshiba/Win7 で同じコードをテストしましたが、コードは問題なく動作します。したがって、これはドライバーに関係していると思われます。更新してみます。

于 2012-05-17T09:02:44.150 に答える