【问题标题】:How to get G-Force Sensor in Android? [duplicate]如何在 Android 中获取 G-Force Sensor? [复制]
【发布时间】:2021-10-17 12:21:08
【问题描述】:

有没有办法使用 Android Studio 将 G-Force 从我的设备读取或计算到 TextView 中?

【问题讨论】:

  • 什么是“重力感应器”?你是说加速度计吗?

标签: android sensors calculation


【解决方案1】:

我假设您是指加速度计?它内置于手机中,用于测量 X、Y 和 Z 轴上的运动。当然可以在 TextView 上显示这些。为此,您需要首先在 MainActivity 类中声明 SensorManagerSensor,如下所示:

private SensorManager SensorManager1;
private Sensor AccelSensor;

SensorManager 基本上允许您访问设备的传感器,Sensor 本身可以从您选择的传感器检索数据。

在你的OnCreate(),你可以设置它们。

SensorManager1 = ( SensorManager ) getSystemService( SENSOR_SERVICE );

分配给系统的传感器后,您现在可以继续设置您的个人传感器。

AccelSensor = SensorManager1.getDefaultSensor( Sensor.TYPE_ACCELEROMETER );

AccelSensor 现在已设置为从手机的加速度计接收数据,但是它尚未连接到SensorManager,这意味着它无法访问读数。

SensorManager1.registerListener( this, AccelSensor, SensorManager.SENSOR_DELAY_NORMAL );

为此,请使用registerListener() 将其连接到SensorManager

现在,您将在上面的代码中看到一个红色下划线。不要惊慌,你只是还没有实现所需的方法。我们使用“this”来指代SensorEventListener,但Android Studio 看不到它。为此,请使用您的 public class MainActivity extends AppCompatActivity 并将 implements SensorEventListener 添加到其中。它最终应该是:

public class MainActivity extends AppCompatActivity implements SensorEventListener {
...
}

现在之前的红线已经消失了,但新的红线出现了!您现在所要做的就是右键单击implements SensorEventListener,Android Studio 应该会为您提供实现方法的选项。单击它并实现onSensorChanged()onAccuracyChanged()。您现在将看到在您的代码中弹出两个新函数。

我们不需要onAccuracyChanged,所以就这样吧:

@Override
    public void onAccuracyChanged( Sensor sensor, int accuracy ) {
        // unused, but android studio needs this here
    }

onSensorChanged 我们需要的。这就是每次传感器更新或更改时调用的内容。在这里我们可以更新之前的 TextView 以显示值。

SensorEventevent 是一个包含 3 个值的数组。这三个值是加速度计的 X、Y 和 Z 读数,分别位于索引 0、1 和 2。因此,我们可以将它们与一个字母简单地连接起来(以显示哪个读数是哪个),如下所示:

这应该将每个值显示为“[X/Y/Z] = [value]”

@Override
    public void onSensorChanged( SensorEvent event ) {
        ViewX.setText( "X = " + event.values[ 0 ] );
        ViewY.setText( "Y = " + event.values[ 1 ] );
        ViewZ.setText( "Z = " + event.values[ 2 ] );
    }

就是这样!您现在有一个可以工作的传感器来查看来自加速度计的读数,它们将显示在 TextViews 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2016-06-05
    • 2016-04-18
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多