如何在java中从inputStream读取每个字符串
我正在尝试通过蓝牙将加速器值从Android应用程序发送到PC。我正在开发BluetoothChat演示应用程序。在Android应用程序中,我有一个名为onSensorChanged的方法,每次加速度变化时都会调用该方法。该方法如下所示:如何在java中从inputStream读取每个字符串,java,string,inputstream,Java,String,Inputstream,我正在尝试通过蓝牙将加速器值从Android应用程序发送到PC。我正在开发BluetoothChat演示应用程序。在Android应用程序中,我有一个名为onSensorChanged的方法,每次加速度变化时都会调用该方法。该方法如下所示: @Override public void onSensorChanged(SensorEvent e) { // the work done when the accelerometer data changes try {
@Override
public void onSensorChanged(SensorEvent e) {
// the work done when the accelerometer data changes
try {
Thread.sleep(25);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
sensorX = e.values[0];
sensorY = e.values[1];
Toast.makeText(BluetoothChat.this, "x coordinate = " + sensorX + "y coordinate = " + sensorY Toast.LENGTH_SHORT).show();
BigDecimal sensorXDec = new BigDecimal(e.values[0]).setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal sensorYDec = new BigDecimal(e.values[1]).setScale(2,BigDecimal.ROUND_HALF_UP);
String vals = String.valueOf(sensorXDec.toPlainString() + "," + sensorYDec.toPlainString());
mChatService.writeFromString(vals);
}
方法writeFromString
public void writeFromString(String temp){
// Create temporary object
ConnectedThread r;
// Synchronize a copy of the ConnectedThread
synchronized (this) {
if (mState != STATE_CONNECTED) return;
r = mConnectedThread;
}
// Perform the write unsynchronized
r.writeString(temp);
}
writeString方法如下所示:
public void writeString(String out) {
try {
if(D) Log.d(TAG, "Sending File....AS STRING");
mmOutStream.write(out.getBytes(), 0, out.getBytes().length);
} catch (IOException e) {
Log.e(TAG, "Exception during write", e);
}
}
在下面的方法中,我在PC端处理inputStream
@Override
public void run() {
try {
// prepare to receive data
InputStream inputStream = mConnection.openInputStream();
System.out.println("waiting for input");
while (true) {
int command = inputStream.read();
if (command == EXIT_CMD)
{
System.out.println("finish process");
break;
}
processCommand(command);
}
} catch (Exception e) {
e.printStackTrace();
}
}
问题是:我如何从Android应用程序中检索发送的每一组字符串 试试这个
字符串msg=nullBufferedReader br=新的BufferedReader( 新的InputStreamReader(inputStream) ); msg=br.readLine() 这将解决问题
Scanner scanner = new Scanner (inputStream);
while(true){
if(!scanner.hasNextInt()){
continue;
}
// at this point we've got an int, so get it and use it
try{
int commmand = scanner.nextInt();
if (command == EXIT_CMD){
System.out.println("finish process");
break;
}
processCommand(command);
} catch (Exception catchThem){
// Deal with the caught exceptions
}
}
我没有测试这个,希望它能为您工作。检查这个(读取/转换输入流为字符串):嘿,IGwe,这很容易理解,但我实际上正在尝试获取一个字符串并使用它做一些工作。我检查了scanner方法,hasNextString丢失了。有什么建议吗?谢谢你的回复,这正是我所需要的。我唯一需要更改的是onSensorChanged方法,我必须在其末尾添加以下内容:mChatService.writeFromString(“\n”);这样我就可以正确地阅读每一行。否则,输入流就是一大行VAL字符串。多谢各位。它正在按预期工作