我正在尝试使用 .我的Bluetooth
gui将 androidSeekBar
数据发送到arduino我改变了 SeekBar。Sockets
OutputStream
Socket
onSeekBarChanged()
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(seekBar.getId() == R.id.seekBar)
{
speed.setText(String.valueOf(progress));
String outputData = String.valueOf(progress)+",";
try
{
streams.write(outputData.getBytes());//writes data to OutputStream of Socket
}catch (Exception e){
Log.d("RTR","Sockets not yet formed");
}
}
}
问题是我需要Accelerometer
与当前值一起连续发送数据。SeekBar
所以我尝试写入加速度计OutputStream
的Socket
fromonSensorChanged(SensorEvent event)
方法。Result:Program not responding.
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
{
float accXYZ[] = event.values;
float accX = accXYZ[0];
float accY = accXYZ[1];
float accZ = accXYZ[2];
x.setText(String.format("%.2f",accX));
y.setText(String.format("%.2f",accY));
z.setText(String.format("%.2f",accZ));
String outputData = x.getText().toString()+","+speed.getText().toString()+";";
try{
streams.write(outputData.getBytes());
}catch (Exception e){
//Log.d("RTR","X");
}
}
}
我知道这对 . 来说太重了UI Thread
。我想我应该在方法中创建一个new Thread
无限循环run()
来连续发送数据。我怎样才能将加速度计和 SeekBar 数据连续发送到这个新线程。
或者我应该从这个新线程中收集 UIThread 的加速度计和 SeekBar 的数据。
In Short, how do I get data from UIThread to this new Thread.
请提供您知道的所有可能的解决方案,以解决我的问题以及我当前程序的任何并发症。