OBEX オブジェクト プッシュ プロファイルをサポートするデバイスがあります。このプロファイルは、シリアル ポート プロファイルに基づいています。私の推測では、Android Bluetooth チャットの例を使用して、このデバイスを Android Phone に接続できると思います。socket.accept()
しかし、Android SDKの機能に関して問題が発生しました。私は次のように自分の電話をこのデバイスに接続することを達成しようとしています:
adapter = BluetoothAdapter.getDefaultAdapter();
device = adapter.getRemoteDevice("00:1B:DC:0F:EC:7E");
AcceptThread = new AcceptThread(true, adapter, device);
AcceptThread.start();
AcceptThread のコンストラクターは次のようにコーディングされます。
public AcceptThread(boolean secure, BluetoothAdapter adapter, BluetoothDevice device) {
BluetoothServerSocket tmp = null;
this.adapter = adapter;
this.device = device;
// Create a new listening server socket
try {
tmp = adapter.listenUsingInsecureRfcommWithServiceRecord(device.getName(), UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch (Exception e) {
Log.e(TAG, ".AcceptThread # listen() failed", e);
}
mmServerSocket = tmp;
}
問題は、connect()
前に言ったようにしようとするときです
public void run() {
BluetoothSocket socket = null;
// Listen to the server socket if we're not connected
while (mState != STATE_CONNECTED) {
try {
// This is a blocking call and will only return on a
// successful connection or an exception
Log.d(TAG, "AcceptThread.run: accepting server socket connection");
socket = mmServerSocket.accept(20000);
Log.d(TAG, ".AcceptThread.run # server socket connection accepted");
} catch (Exception e) {
Log.e(TAG, ".run # accept() failed: "+e);
break;
}
}
}
ご覧のとおり、ServerSocket はすべての着信接続を受け入れる20 seconds
か20000 ms.
、時間切れになると、アプリは次のような IOException をスローします。
07-11 10:30:08.355: E/SIMPLECONNECT(1301): .run # accept() failed: java.io.IOException: Connection timed out
これは、私のデバイスが Android フォンに接続できなかったことを示しています。このデバイスには、ディスプレイに接続ボタンがなく、ファイルを電話に送信する送信機能だけがあります。この送信機能もバックグラウンドで接続を行うと思いますが、よくわかりません。
誰かが私のために解決策を特定できますか? でアプリを実行していSamsung Galaxy SIII
ますAndroid 4.0.4