ラップトップで、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();
}
何か案は?