2012-04-18 135 views
0

在我的PC上,我启动了一个服务器,通过蓝牙将字节发送到Android手机。 我每隔10秒发送一次使用相同输出流的不同字节。Java/Android - 从输入流读取后写入输出流

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

缓冲区是一个字节组从而改变每次循环

现在我想读取缓冲区的Android手机:

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

我现在的问题是,读(缓冲)犯规回报 - 1。 我如何通知Android手机的字节已被转移,所以我可以做 我希望在while循环后的事情?

+0

我更喜欢对象流,它解决了这样的问题 – sherif 2012-04-18 19:47:33

+0

从来没有尝试过对象流,从来没有听说过它。所以我必须将我的bytearray转换为一个对象并调用ObjectOutputStream.writeObject(object)? – tschakkkiiiii 2012-04-19 20:22:42

+0

ObjectStreams是关于java的最好的想法之一。你的类必须实现可序列化的接口(它只是一个形式没有函数),那么你创建一个ObjectOutputStream:new ObjectOutputStream(someOtherStream)它就是它http://tutorials.jenkov.com/java-io/objectoutputstream.html – sherif 2012-04-20 21:23:45

回答

0

试试这个...

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

也没有工作 – tschakkkiiiii 2012-04-19 20:19:00

2

你试过在关闭PC端连接?从你的例子看来你没有。

如果你不想关闭PC端的连接,然后发送已知的字节序列,它会告诉andorid应用程序PC端完成发送数据,即。正在等待响应

+0

试图关闭,但没有奏效。另外我不想关闭它。最后,我用你所建议的已知序列做了它。 – tschakkkiiiii 2012-04-19 20:20:17