android - onSensorChanged 检查手机是否处于水平位置(无横向)

标签 android android-sensors

我需要检查手机是否处于水平位置(没有横向,我的意思是就像你将它放在 table 上一样)。

我知道我必须使用“SensorEventListener”接口(interface)和“onSensorChanged”事件,但我无法获取如何检查移动位置的示例。

@Override
public void onSensorChanged(SensorEvent event) {
    //
}

最佳答案

试试这个:

@Override
public void onSensorChanged(SensorEvent event) {

    float[] values = event.values;
    float x = values[0];
    float y = values[1];
    float z = values[2];
    float norm =(float) Math.sqrt(x * x + y * y + z * z);

    // Normalize the accelerometer vector
    x = (x / norm);
    y = (y / norm);
    z = (z / norm);
    int inclination = (int) Math.round(Math.toDegrees(Math.acos(z)));

    if (inclination < 25 || inclination > 155)
    {
        // device is horiontal
        Toast.makeText(this,"device horiontal !",Toast.LENGTH_SHORT).show();
    }
}

关于android - onSensorChanged 检查手机是否处于水平位置(无横向),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49750948/

相关文章:

java - 如果Android应用程序的OBB文件被意外删除,如何重新下载?

Android xhdpi密度和分辨率

Android-检测手机何时翻转

Android 倾斜补偿指南针

android - 检测施加到智能手机的力(而不是加速力)

android - 如何在 Android Studio 中以相反的顺序显示 git 日志历史记录?

android - 将 EditText 中的 int 类型变量插入到 Android 中的 SQL 数据库中

android - 查明罗盘传感器的精度是否低

android - 可以为两个不同的 Activity 使用相同的布局吗?

Android camera onpreviewframe回调与旋转传感器回调同步