Я пишу многопользовательскую игру для телефонов 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() {.....}
Что я делаю не так?