2011-05-11 84 views
6

我正在写一个小程序,通过蓝牙在Android和PC之间发送文件。我已经 在google android网站上阅读蓝牙聊天的例子。Android蓝牙发送文件问题

目前,我的版本的作品真的很好通过蓝牙发送文本消息,但是当我把周围> = 20 KB一些文件,它停止工作,并为下面扔EOFException类:

java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:2716) 
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1665) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) 
    at com.test.pcserver.BluetoothServerListener.run(BluetoothServerListener.java:74) 
    at java.lang.Thread.run(Thread.java:636) 

目前,

在Android中:

// Get the BLuetoothDevice object 
if (BluetoothAdapter.checkBluetoothAddress(address)) { 
    device = mBtAdapter.getRemoteDevice(address); 

     // Get a BluetoothSocket for a connection with the 
    // given BluetoothDevice 
    socket = device .createRfcommSocketToServiceRecord(ProgramConstants.BLUETOOTH_UUID); 
    socket.connect(); 

     out = new ObjectOutputStream(socket.getOutputStream()); 

    // Send it to PC 
    out.writeObject(contentObject); 
    out.flush();   
} 
0123使用 bluecove-2.1.0

这里是我的主要代码在PC上我的java程序

在我的电脑,我的理解是:

PC版本,服务器

StreamConnectionNotifier streamConnNotifier = null; 

// Create the service url 
String connectionString = "btspp://localhost:" + ProgramConstants.BLUETOOTH_UUID.toString() 
        + ";name=myappname"; 
// open server url 
streamConnNotifier = (StreamConnectionNotifier) Connector.open(connectionString); 

while (true) { 
    // Wait for client connection 
    StreamConnection connection = streamConnNotifier.acceptAndOpen(); 
    ObjectInputStream in = new ObjectInputStream(connection.openInputStream()); 
    RemoteDevice dev = RemoteDevice.getRemoteDevice(connection); 

    // read string from spp client 
    DataInController data = new DataInController(model); 
    data.processDataIn(in.readObject(), dev.getBluetoothAddress()); 
} 
+0

ProgramConstants.BLUETOOTH_UUID.toString()的值是什么? – Milhous 2011-06-23 19:59:33

+0

你有没有得到这个工作? – Jack 2011-08-11 19:16:22

+0

嘿,你可以请分享你的完整源代码。提前致谢。 – anddev 2012-03-29 05:52:18

回答

1

您需要冲洗的OutputStream

out.close(); 

否则流可能会被破坏后添加。