gpt4 book ai didi

安卓加速度计 : onSensorChanged Runs Always

转载 作者:行者123 更新时间:2023-11-29 02:09:02 30 4
gpt4 key购买 nike

我已经编写了一种通过网络发送 UDP 消息的方法。它工作正常。

在那之后,我尝试使用我的 Galaxy S 智能手机的加速计传感器。我得到了加速计值,并将它们显示在屏幕上。当值发生变化时(onSensorChanged 方法),我使用 UDP 将它们发送到我计算机上的应用程序。

问题是程序总是发送传感器值,而不是在它们发生变化时发送。因此,onSensorChanged 方法一直在运行。

我 Handlebars 机放在 table 上,屏幕上的值是恒定的,但它会继续发送。

我该如何解决这个问题?

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;
}

}

最佳答案

当差值大于定义的阈值时,最好保存最后收到的值,并且只保存 sendPacket()。

关于安卓加速度计 : onSensorChanged Runs Always,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528442/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com