7

デバイスをテストするために、基本的な Bluetooth アプリケーションを作成しようとしています。

developer.android からコードを取得しました。ここにリンクがあります:http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices

ここに私のスレッドコードの実行部分があります:

     public void run() {

        mBluetoothAdapter.cancelDiscovery();
        Log.i(TAG, "Discovery Cancel!"); 

        try {
            Log.i(TAG, "Connection Started");
            mmSocket.connect();
            Log.i(TAG, "Connection Ended");
        } catch (IOException e) {
            try {
                Log.e(TAG, "Connection Failed", e);
                mmSocket.close();
            } catch (IOException e2) {
                Log.e(TAG, "Connection Close Failed", e2);
            }
            return;
        }

何を試してmmSocket.connect();もうまくいきません。常に IOException をスローし、logcat からそのログを取得します。

java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)

私はこれらの記事を見て、書かれたことを試しましたが、どれも私の問題を解決していません.

Android Bluetooth: サービスの検出に失敗しました。デスクトップ/ラップトップへの接続

Android で Bluetooth を使用したサービス検出失敗例外

Android ICS での Bluetooth 接続ができない

Android Bluetooth java.io.IOException: 接続が拒否されましたか?

ところで、私はAndroid ics 4.0.4に取り組んでいます。

これはデバイスの問題ではないことはわかっています。別のデバイスでこのアプリを試したからです。

4

7 に答える 7

5

私は知りませんし、UUIDのこともまだ理解していませんが、問題はUUIDでした。カーネル ログから取得した UUID を使用しています00001105-0000-1000-8000-00805F9B34FB

于 2012-09-14T09:10:24.407 に答える
5

それは私のために働いています

BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);
Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});
socket = (BluetoothSocket) m.invoke(device, 1);
bluetoothAdapter.cancelDiscovery();
socket.connect();
于 2014-03-05T09:25:09.430 に答える
1

私は同様の学習プロセスを経て取り組みました。一連の例で学んだことを文書化しようとしました。

これが役立つかもしれません:

http://digitalhacksblog.blogspot.com/2012/05/android-example-bluetooth-simple-spp.html

Bluetooth 経由で Android デバイスと PC 間の簡単な接続をセットアップするためのものです。例には、Android ファイルと、Java の SPP サーバーと PC 用の perl の SPP サーバーが含まれています。

お役に立てれば。

于 2012-08-28T03:08:50.210 に答える
1

アダプターが検出でビジー状態になっている間、アプリが接続を試行していないことを確認してください。

clientSocket.connect()

私は電話する必要がありました

btAdapter.cancelDiscovery()

これは私にとって同じ問題を解決するのに役立ちましたMatts Reco

于 2012-10-25T23:54:24.907 に答える
0

デバイスをテストするだけの場合は、SDK の一部として提供されている Bluetooth チャット サンプル プロジェクトを使用してみてください。使用しようとしているコードと、developer.android.com で提供されているコードは、Bluetooth チャットの例に含まれています。

于 2012-08-23T18:49:00.317 に答える
0

サービス検出のために有効な UUID を提供する必要があります。

BluetoothSocket sock = bdevice.createRfcommSocketToServiceRecord(VALID_UUID);

さまざまな標準 (デフォルト) bluetooth サービス (ハンズフリー、ファイル転送など) には、いくつかの一般的な UUID があります。

こちらをご覧ください

于 2012-08-23T18:40:42.573 に答える