Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onSensorChanged()中的值不';不能存储在变量中_Java_Android_Sensors - Fatal编程技术网

Java onSensorChanged()中的值不';不能存储在变量中

Java onSensorChanged()中的值不';不能存储在变量中,java,android,sensors,Java,Android,Sensors,我有以下功能,用于收听加速度计和磁强计的值: //传感器读数的存储 公共浮动[]管理层=新浮动[3]; 公共浮点数[]mGeomagnetic=新浮点数[3]; 公共无效注册表传感器(上下文){ //首先,获取SensorManager的一个实例 SensorManager sMan=(SensorManager)context.getSystemService(context.SENSOR\u SERVICE); //第二,得到你感兴趣的传感器 传感器磁场=sMan.getDefaultSen

我有以下功能,用于收听加速度计和磁强计的值:

//传感器读数的存储
公共浮动[]管理层=新浮动[3];
公共浮点数[]mGeomagnetic=新浮点数[3];
公共无效注册表传感器(上下文){
//首先,获取SensorManager的一个实例
SensorManager sMan=(SensorManager)context.getSystemService(context.SENSOR\u SERVICE);
//第二,得到你感兴趣的传感器
传感器磁场=sMan.getDefaultSensor(传感器类型\u磁场);
//获取加速度计的参考
传感器加速计=sMan.getDefaultSensor(传感器类型\加速计);
//第三,实现SensorEventListener类
SensorEventListener magnetListener=新的SensorEventListener(){
精度更改时的公共无效(传感器,int精度){
//如果你对精度变化感兴趣,就做些事情
}
传感器更改时的公共无效(传感器事件){
mGravity=新浮动[3];
//Log.i(“位置更新程序”、“磁强计更新”);
System.arraycopy(event.values,0,mGravity,0,3);
//Log.i(“LocationUpdater”,Float.toString(mGravity[0]);
}
};
SensorEventListener accelListener=新的SensorEventListener(){
精度更改时的公共无效(传感器,int精度){
//如果你对精度变化感兴趣,就做些事情
}
传感器更改时的公共无效(传感器事件){
mGeomagnetic=新浮子[3];
//Log.i(“位置更新程序”、“加速计更新”);
System.arraycopy(event.values,0,mGeomagnetic,0,3);
}
};
//经理权限[0]=5;
//最后,注册你的听众
sMan.寄存器侦听器(magnetListener、magnetField、SensorManager.传感器延迟\正常);
注册监听器(加速度监听器、加速度计、传感器管理器、传感器延迟正常);
Log.i(“LocationUpdater”、“已注册的侦听器”);
}
之后,我尝试在类中的另一个方法中访问
mGravity

public-double-getUserDirection(){
Log.i(“LocationUpdater”,Float.toString(mGravity[0]);
if(mGravity!=null&&mGeomagnetic!=null){
浮点旋转矩阵[]=新浮点[9];
...
}
但是,从传感器读取的值不会写入阵列,并且所有值都保持
0
。这是为什么

所有方法都是从另一个类中这样调用的:

SensorUpdater updater=newsensorupdater();
startBlukii(上下文);
寄存器传感器(上下文);
双向=updater.getUserDirection();
Log.i(Log_标签,双方向串(方向));

我通过访问如下变量解决了这个问题:
LocationUpdater.mGravity
在监听器中,这似乎解决了这个问题

传感器更改时的公共无效(传感器事件){ System.arraycopy(event.values,0,LocationUpdater.mGravity,0,3); }