android - 如何在 Android 中获取 G-Force Sensor?
问题描述
有没有办法使用 Android Studio 从我的设备读取或计算 G-Force 到 TextView 中?
解决方案
我假设你的意思是加速度计?它内置于手机中,用于测量 X、Y 和 Z 轴上的运动。当然可以在 TextView 上显示这些。为此,您首先要在类中声明 aSensorManager
和 a ,如下所示:Sensor
MainActivity
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 );
为此,请将其连接到SensorManager
with registerListener()
。
现在,您将在上面的代码中看到一个红色下划线。不要惊慌,你只是还没有实现所需的方法。我们使用“this”来指代SensorEventListener
,但 Android Studio 看不到它。为此,请使用您的public class MainActivity extends AppCompatActivity
并添加implements SensorEventListener
到其中。它最终应该是:
public class MainActivity extends AppCompatActivity implements SensorEventListener {
...
}
现在,之前的红线已经消失,但新的红线出现了!您现在所要做的就是右键单击implements SensorEventListener
,Android Studio 应该会为您提供实现方法的选项。单击它并实施onSensorChanged()
and onAccuracyChanged()
。您现在将看到代码中弹出两个新函数。
我们不需要onAccuracyChanged
,所以就这样吧:
@Override
public void onAccuracyChanged( Sensor sensor, int accuracy ) {
// unused, but android studio needs this here
}
onSensorChanged
是我们需要的。这就是每次传感器更新或更改时调用的内容。在这里我们可以更新之前的 TextView 以显示值。
SensorEvent
'sevent
是一个包含 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 上。
推荐阅读
- amazon-web-services - React Native 中的 Auth.federatedSignIn({provider: "Facebook"}) 返回 [ERROR] OAuth - 处理身份验证响应时出错。[错误:invalid_client]
- sql - 如何解决“在动态 SQL 中创建视图时,关键字 'VIEW' 附近的语法错误”
- virtual - Twain 示例 数据源和虚拟扫描仪
- c++ - 递归快速排序:为什么这个分区是错误的?
- javascript - 如何使用 javascript 和 HTML 在浏览器上打印消息
- javascript - 用户未在组件的地图内定义
- python-3.x - 安装 Python 库的位置
- apache-flink - Flink keyBy:键太多?
- php - 语言环境定义的 Laravel 字体
- nginx - NGinx 发送 307 而不是 401