2012-04-18 2 views
0

На моем ПК я запускаю сервер для отправки Bytes через Bluetooth на Android-телефон. Я отправляю каждые 10 секунд разные байты, используя тот же Outputstream.Java/Android - Запись в выходной поток после чтения из Inputstream

outputStream.write(buffer); 
outputStream.flush(); 
thisThread.sleep(10000); 

буфер является ByteArray, который меняется каждый цикл

Теперь я хочу, чтобы прочитать буфер на телефон Android:

while((bytes = inputStream.read(buffer)) != -1) { 
    //do something 
} 
//do more 

Моя проблема теперь, что возвращение чтения (буфер) оленья кожа - 1. Как я могу уведомить Android-телефон, что байты были переданы, поэтому я могу сделать вещи, которые я хочу после цикла while?

+0

Я предпочитаю потоки объектов, он решает проблемы, подобные этому – sherif

+0

никогда не пробовал с objectstream, никогда не слышал об этом раньше. поэтому мне нужно преобразовать мой bytearray в объект и вызвать ObjectOutputStream.writeObject (объект)? – tschakkkiiiii

+0

ObjectStreams являются одним из лучших, думающих о java. Ваш класс должен реализовать сериализуемый интерфейс (его просто формальность не существует никаких функций), то вы создаете ObjectOutputStream: новый ObjectOutputStream (someOtherStream), который он http://tutorials.jenkov.com/java-io/objectoutputstream.html – sherif

ответ

0

попробовать это ...

while((bytes = inputStream.read(buffer)) > 0) 
{ 
// 
} 
+0

также не работает – tschakkkiiiii

2

Вы пробовали закрыть соединение на стороне ПК? Из вашего примера это похоже, что вы этого не сделали.

[edit] Если вы не хотите закрывать соединение на стороне ПК, тогда отправьте известную последовательность байтов, которая укажет приложению andorid, что сторона ПК закончила отправлять данные и т. Д. ждет ответа

+0

Пытался закрыть, но тоже не работал. Также я не хочу его закрывать. Наконец я сделал это с известной последовательностью, как вы предложили. – tschakkkiiiii