2
私はネットワーク経由でUDPメッセージを送信する方法を書いています。正しく動作しています。Android Accelerometer:onSensorChanged Runs常に
その後、私はギャラクシーSスマートフォンの加速度センサーを使用しようとしました。加速度計の値が表示され、画面に表示されます。値が変更されると(onSensorChangedメソッド)、私はUDPを使って自分のコンピュータ上のアプリケーションに送信します。
問題は、センサー値が変更されたときではなく、常に送信されることです。 したがって、onSensorChangedメソッドは常に実行されています。
私の電話を机の上に置くと、値は画面内では一定ですが、送信し続けます。
どうすればこの問題を解決できますか?
onSensorChanged方法:
public void onSensorChanged(SensorEvent event) {
float x,y,z;
if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
x=(event.values[0]);
y=(event.values[1]);
z=(event.values[2]);
outputX.setText("x:"+String.format("%.1f",x));
outputY.setText("y:"+String.format("%.1f",y));
outputZ.setText("z:"+String.format("%.1f",z));
sendPacket("192.168.2.40", 10001,
"X:" +String.format("%.1f",x) +
"Y:" +String.format("%.1f",y) +
"Z:" +String.format("%.1f",z));
}
}
は、メソッドを送信:
public void sendPacket(String ipString, int port,
String message) {
try {
byte[] bytes = null;
bytes = message.getBytes("ASCII");
InetAddress address;
try {
address = InetAddress.getByName(ipString);
} catch (Exception e) {
Log.e("Error","Exception");
return;
}
DatagramPacket packet = new DatagramPacket(bytes, bytes.length,
address, port);
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
socket.close();
} catch (Exception e) {
Log.e("Error","Exception");
return;
}
}
私はこの方法でお世話になりました。 –