BluetoothServerSocket принимает сбой и выдает IOException

У меня есть устройство, которое поддерживает OBEX Object Push Profile, этот профиль основан на профиле последовательного порта. Я предполагаю, что я могу использовать пример Android Bluetooth Chat для подключения этого устройства к моему телефону Android. Но я столкнулся с проблемой, касающейсяsocket.accept() функциональность в андроид 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

Ответы на вопрос(1)

Ваш ответ на вопрос