gpt4 book ai didi

java - 如何在 Android 中将后台服务注册为 SensorEventListener

转载 作者:行者123 更新时间:2023-12-01 10:23:19 25 4
gpt4 key购买 nike

我正在尝试提供一个后台服务来读取手机的方位角、俯仰角和横滚角,并通过网络发送它们。我已经创建了一个 IntentService 和计算代码来计算方向,但是我不太确定如何将后台服务注册为事件监听器。

public class SocketService extends IntentService implements SensorEventListener {
Socket my_socket;
PrintWriter out;
float[] mGravity;
float[] mGeomagnetic;
float azimuth,pitch,roll;

public void onAccuracyChanged(Sensor s, int accuracy){

}
public void onSensorChanged(SensorEvent event){
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
mGravity = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mGeomagnetic = event.values;
if (mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
if (success) {
float orientationData[] = new float[3];
SensorManager.getOrientation(R, orientationData);
azimuth = orientationData[0];
pitch = orientationData[1];
roll = orientationData[2];
out.print("Hello");
out.flush();

}
}
}
public SocketService(){
super("Socket Service");
}


protected void onHandleIntent(Intent workIntent) {
try {
my_socket = new Socket(ip, 5000);
out = new PrintWriter(my_socket.getOutputStream());
}catch(Exception e){
Log.v("ERROR",e.getMessage());
}
}

}

我已经尝试在onHandleIntent内部放置

        Sensor mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Sensor mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
mSensorManager.registerListener(this,mAccelerometer,SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this,mGravity,SensorManager.SENSOR_DELAY_FASTEST);

编译但是在套接字的另一端没有检测到数据(即使我尝试记录它也没有检测到数据,所以实际的SensorEventListener

最佳答案

问题似乎在于

Sensor mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);

不同
 Sensor mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

一旦我改变了这一点,一切都变得魅力十足。

关于java - 如何在 Android 中将后台服务注册为 SensorEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35458797/

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