Android Studio中陀螺仪的例子吗?(Android Studio Gyroscope e

2019-10-30 02:55发布

我试图建立它确实当设备被倾斜到一定程度所需影响的应用程序。

我已经采取了看,并成功启用,加速计,但是这并没有给我想要的影响。 就像我说的,我希望设备做什么,我希望它,只有当该设备已取得了一定的程度,说90度。

我有下面的代码,但是当装置倾斜不够快这仅适用:

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
    Sensor mySensor = sensorEvent.sensor;
    if (mySensor.getType() == Sensor.TYPE_GYROSCOPE) {
        float x = sensorEvent.values[0];
        float y = sensorEvent.values[1];
        float z = sensorEvent.values[2];

        long currTime = System.currentTimeMillis();

        if ((currTime - lastUpdate) > 100) {
            long diffTime = (currTime - lastUpdate);
            lastUpdate = currTime;

            float speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000;

            if (speed > SHAKE_THRESHOLD && !sound.isPlaying()) {
                sound.start();
            }

            last_x = x;
            last_y = y;
            last_z = z;
        }
    }
}

此代码最初是用加速度计用,我只是改变了Sensor.TYPE_ACCELEROMETERSensor.TYPE_GYROSCOPE ,希望这会透露给我做什么。

我可能做这样出头?

if (x > 90 || y > 90 || z > 90 && !sound.isPlaying()) {
    sound.start();
}

在地方的我

if (speed > SHAKE_THRESHOLD && !sound.isPlaying()) {
    sound.start();
}

我试图寻找如何做这样的事情的例子,但无法找到任何东西,甚至对Android开发者...

我想简单的东西,这将使我告诉当设备已经达到了一定的程度或弧度,速度无所谓。

任何帮助将是美好的。

谢谢!

弥敦道

编辑:

我已经做到了这一点:

 if (z > 5 || z < -5 || x > 5 || x < -5 && !sound.isPlaying()) {
     sound.start();
 } else if ( z == 4 || x == 4) {
     sound.stop();
     sound = MediaPlayer.create(this, R.raw.sound);
 }

而这个工程的程度。 一旦Z和X值已越过了“5”的阈值,那么将播放声音。 但是,如果我离开该设备在那个位置,然后,在返回设备返回到起始位置再次启动的声音,因为它仍然是“5”阈值之内。

这不是我一直在寻找的,所以我想我会尝试的东西有点不同:

if (z == 5 || z == -5 || x == 5 || x == -5 && !sound.isPlaying()) {
    sound.start();
} else if ( z == 4 || x == 4) {
    sound.stop();
    sound = MediaPlayer.create(this, R.raw.sound);
}

这并不是在所有的工作。

我希望设备能够检测时,它已经越过的“5”的门槛,但我不希望它能够再次启动的声音,如果它被移动和静止的门槛内。

基本上,我希望设备能够当线路交叉播放声音,而不是当它是行之后的任何一点。 我想,有它寻找时数== 5将做到这一点,但它似乎无法做到这一点。

停止功能完全不工作的。 如果我使用==可言,这是行不通的。 有另一种方式我可以编写这一点,Java将能够识别?

请记住,我希望它能够知道该点划线时,输入的面积不得的时候。

干杯!

Answer 1:

加速度计:“办法施加到一个设备上的所有三个物理轴(x,y和z),包括重力加速力在米/秒2。”

取向:“办法度的旋转,一个装置使得围绕所有三个物理轴(x,Y,Z)作为API级别3的可以通过使用重力传感器和地磁字段获得用于设备的倾斜矩阵和旋转矩阵传感器与所述getRotationMatrix()方法一起“。



文章来源: Android Studio Gyroscope examples?