Невозможно создать ObjectInputStream с InputStream для разъема Bluetooth на платформе Android

Я пишу многопользовательскую игру для телефонов Android. Связь осуществляется через Bluetooth. Мне удалось отправить байты с одного телефона на другой, используя поток ввода / вывода. Поскольку мне нужно иметь возможность передавать объекты, мне нужны потоки объектов. Однако, когда я пытаюсь создать поток объектов с моими потоками, моя программа зависает на инструкции.

public class ConnectedThread extends Thread {
private static final String TAG = "Connected Thread";
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
private Handler mHandler;
private ObjectInputStream ois;
private ObjectOutputStream oos;

public ConnectedThread(BluetoothSocket socket,Handler h) {
    mmSocket = socket;
    mHandler = h;

    InputStream tmpIn = null;
    OutputStream tmpOut = null;

    // Get the input and output streams, using temp objects because
    // member streams are final
    try {
        tmpIn = socket.getInputStream();
        tmpOut = socket.getOutputStream();
    } catch (IOException e) { }

    mmInStream = tmpIn;
    mmOutStream = tmpOut;
    Log.d(TAG,"attempting to create OIS");

    try {
    ois = new ObjectInputStream(mmInStream);

// Инструкция new ObjectInputStream (mmInStream) НИКОГДА НЕ ЗАВЕРШАЕТ ВЫПОЛНЕНИЕ . Кажется, это не вызывает ошибки, потому что я бы ее поймал. Просто зависает по этой инструкции. Ни один код ниже этой строки никогда не выполняется.

    } catch (Exception e) {

        Log.e(TAG,"Error");
        Log.d(TAG,e.getMessage());
        e.printStackTrace();
    } 

    Log.d(TAG,"attempting to create OOS");
    try {
        oos = new ObjectOutputStream(mmOutStream);
    } catch (IOException e) {
        Log.e(TAG,"IO exception for Output Stream, I have no idea what caused this");
        Log.d(TAG,e.getMessage());
    }

}

public void run() {.....}

Что я делаю не так?

8
задан Alexander 9 April 2011 в 12:56
поделиться