我有一個支持OBEX對象推送配置文件的設備,此配置文件基於串行端口配置文件。我的猜測是我可以使用Android藍牙聊天示例將此設備連接到我的Android手機。但是我遇到了一個問題,關於android SDK中的socket.accept()
功能。我盡力去完成我的電話與該設備這樣的連接:BluetoothServerSocket接受失敗並拋出IOException
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
在三星xcover相同的問題,seemes是一個三星的問題,因爲我的其他設備適用於相同的代碼。我向三星的支持報告了這個問題,但我並不期待...所以我會開始一個小賞金。 – 2red13 2012-08-06 18:06:40