Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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_Android Sensors - Fatal编程技术网

Java 未调用onSensorChanged()

Java 未调用onSensorChanged(),java,android,android-sensors,Java,Android,Android Sensors,今晚我在传感器方面遇到了很多问题,但似乎是因为没有调用onSensorChanged()。很抱歉,最后出现了重复的问题,但我没有看到任何解决方案。 这是我的密码: public SensorManager manager; public Sensor rotation_vector; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContent

今晚我在传感器方面遇到了很多问题,但似乎是因为没有调用onSensorChanged()。很抱歉,最后出现了重复的问题,但我没有看到任何解决方案。 这是我的密码:

public SensorManager manager;
public Sensor rotation_vector;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    manager = (SensorManager)getSystemService(SENSOR_SERVICE);
    rotation_vector = manager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
}

@Override
public void onSensorChanged(SensorEvent event) {
    int xValue = (int) event.values[0];
    int yValue = (int) event.values[1];
    int zValue = (int) event.values[2];
   Toast.makeText(getApplicationContext(),"this doesn't appear...",Toast.LENGTH_LONG);


@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    //TODO: we'll see later about it
}
public void onPause() {
        /*Et on le dés-enregistre quand on sort de l'activité, pour économiser de la batterie*/
        super.onPause();
        manager.unregisterListener(this);
}
@Override
    protected void onResume() {
        /*On enregistre le sensor quand l'utilisateur revient sur l'activité*/
        super.onResume();
        manager.registerListener(this, rotation_vector, SensorManager.SENSOR_DELAY_NORMAL);
        if (null != rotation_vector) {
        } else {
            Toast.makeText(getApplicationContext(),
                    "There is no gyroscope on your device",
                Toast.LENGTH_LONG).show();
        }
    }
我在不同的论坛上看到了很多类似的代码,但是appart和其他一些没有解决方案的主题,我还没有看到这样的问题。。。 我必须在AndroidManifest中添加一些内容吗? 这是一个普遍的问题吗? 有解决办法吗

谢谢, 托马斯
(很抱歉我的英语不好,我是法国人^^)

到目前为止我还没有使用传感器,但看起来您已经获得了
传感器管理器
,但没有注册任何侦听器以进行应发生的更改。问问你自己,如何才能调用
onsensorchange

查看关于传感器的示例,您可以在
onResume()
方法中看到这一点:

@Override
protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
}
也别忘了学习整页,它可以帮你很多

编辑:

我不得不复制粘贴你的资料,因为我没有看到任何问题。有两个基本原则:

  • 吐司没有出现是因为你没有告诉他<代码>Toast.show()将显示它。但您更愿意使用
    Log
    将更改输出到控制台。由你决定
  • 不要在
    onSensorChanged()
    方法中将float重新键入int,因为所有值都是0或(1/-1,如果幸运的话)
因此,结果如下:

@Override
public void onSensorChanged(SensorEvent event) {
    float xValue = event.values[0];
    float yValue = event.values[1];
    float zValue = event.values[2];
    Log.d(LOG_TAG, "x:"+xValue +";y:"+yValue+";z:"+zValue);
}

其他方法正确

您的设备可能没有传感器。请键入旋转向量。你应该检查
rotation\u vector
是否为
null

嗯,我忘记了我的代码的那部分,它在底部。。。它不能解决问题请更新你的问题然后,我很确定它必须工作。。。还可以尝试非空检查。如果它不工作,我会采取更深入的研究后完成!你说的“非空检查”是什么?我指的正是那些在其他回答中提到@hoan nguyen的检查,我该怎么做?抱歉,我是新的:xI使用了一个应用程序,列出了设备上的每个传感器,并显示了它们的数据。旋转矢量传感器也能很好地工作,同时也能记录U型陀螺仪的旋转矢量,看看它现在是否被称为。