Java 我的一些安卓传感器已经注册,但无法工作
我注册了6个安卓传感器。在注册之前,我检查了传感器是否为空 11-25 20:21:09.896 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=3 11-25 20:21:09.976 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=9 11-25 20:21:09.976 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=1 11-25 20:21:09.976 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=4 11-25 20:21:09.986 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=2 11-25 20:21:09.996 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=5 如果一个传感器工作,则文本视图应显示其内容Java 我的一些安卓传感器已经注册,但无法工作,java,android,sensors,android-sensors,Java,Android,Sensors,Android Sensors,我注册了6个安卓传感器。在注册之前,我检查了传感器是否为空 11-25 20:21:09.896 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=3 11-25 20:21:09.976 10355-10355/ex11.vr.ex11_应用程序I/SensorManager﹕ getReportingMode::sensor.mType=9 11-25 20:21:09.976 10355
public void onSensorChanged(SensorEvent event) {
if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
return;
String output = "";
float[] v = event.values;
Log.d("sensor type", Integer.toString(event.sensor.getType()));
switch (event.sensor.getType()) {
case Sensor.TYPE_ORIENTATION:
output +=
"\n azimuth:" + v[0] +
"\n pitch:" + v[1] +
"\n roll:" + v[2] + "\n";
TextView txt1 =(TextView) findViewById(R.id.textView2);
txt1.setText(output);
break;
case Sensor.TYPE_GRAVITY:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
TextView txt2 =(TextView) findViewById(R.id.textView4);
txt2.setText(output);
break;
case Sensor.TYPE_ACCELEROMETER:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
TextView txt3 =(TextView)findViewById(R.id.textView6);
txt3.setText(output);
break;
case Sensor.TYPE_GYROSCOPE:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
TextView txt4 =(TextView)findViewById(R.id.textView8);
txt4.setText(output);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
Log.d("content", output);
TextView txt5 = (TextView)findViewById(R.id.textView10);
txt5.setText(output);
break;
case Sensor.TYPE_LIGHT:
output +=
"\n Lux: "+v[0]+"\n";
TextView txt6 = (TextView)findViewById(R.id.textView12);
txt6.setText(output);
Log.d("content", output);
break;
}
}
};
我用onResume方法注册了传感器。之后,我执行了应用程序。但这是日志
11-25 20:21:36.016 10355-10355/ex11.vr.ex11_应用程序D/传感器
类型﹕ 四,
11-25 20:21:36.016 10355-10355/ex11.vr.ex11_应用程序D/传感器
类型﹕ 九,
11-25 20:21:36.016 10355-10355/ex11.vr.ex11_应用程序D/传感器
类型﹕ 三,
11-25 20:21:36.086 10355-10355/ex11.vr.ex11_应用程序D/传感器
类型﹕ 四,
11-25 20:21:36.086 10355-10355/ex11.vr.ex11_应用程序D/传感器
类型﹕ 一,
11-25 20:21:36.086 10355-10355/ex11.vr.ex11_应用程序D/传感器
类型﹕ 九,
11-25 20:21:36.086 10355-10355/ex11.vr.ex11_应用程序D/传感器
类型﹕ 三,
传感器2、5(5是光传感器,2是磁场传感器)完全不工作。我在我的代码中找不到任何错误。是否有任何特定的不同方式来注册磁/光传感器?
我用三星Galaxy Note 3设备测试了它,没有用任何模拟器
public void onSensorChanged(SensorEvent event) {
if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
return;
String output = "";
float[] v = event.values;
Log.d("sensor type", Integer.toString(event.sensor.getType()));
switch (event.sensor.getType()) {
case Sensor.TYPE_ORIENTATION:
output +=
"\n azimuth:" + v[0] +
"\n pitch:" + v[1] +
"\n roll:" + v[2] + "\n";
TextView txt1 =(TextView) findViewById(R.id.textView2);
txt1.setText(output);
break;
case Sensor.TYPE_GRAVITY:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
TextView txt2 =(TextView) findViewById(R.id.textView4);
txt2.setText(output);
break;
case Sensor.TYPE_ACCELEROMETER:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
TextView txt3 =(TextView)findViewById(R.id.textView6);
txt3.setText(output);
break;
case Sensor.TYPE_GYROSCOPE:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
TextView txt4 =(TextView)findViewById(R.id.textView8);
txt4.setText(output);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
output +=
"\n X:" + v[0] +
"\n Y:" + v[1] +
"\n Z:" + v[2] + "\n";
Log.d("content", output);
TextView txt5 = (TextView)findViewById(R.id.textView10);
txt5.setText(output);
break;
case Sensor.TYPE_LIGHT:
output +=
"\n Lux: "+v[0]+"\n";
TextView txt6 = (TextView)findViewById(R.id.textView12);
txt6.setText(output);
Log.d("content", output);
break;
}
}
};