`
bk_lin
  • 浏览: 331328 次
社区版块
存档分类
最新评论

对 Android 重力感应器的初步认识

阅读更多

 

今天写了一个关于监测 Android 重力感应器的小例子,只是初步认识,能够获取x,y,z坐标轴的值,暂时还无法将其应用到实际应用中,有空慢慢研究吧。例子在我的手机上的效果如下图:

accelerometer1

accelerometer1

accelerometer2

accelerometer2

主要代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package net.androidla.accelerometer;
 
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;
 
public class AccelerometerActivity extends Activity {
    private SensorManager sm = null;
    private Sensor sensor = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        // 1,获得传感器管理器
        sm = (SensorManager) getSystemService(SENSOR_SERVICE);
        // 2,获得重力感应器
        sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        // 3,注册重力感应器的监听器
        sm.registerListener(sl, sensor, SensorManager.SENSOR_DELAY_GAME);
    }
    @Override
    protected void onPause() {
        super.onPause();
        sm.unregisterListener(sl);
    }
    @Override
    protected void onResume() {
        super.onResume();
        sm.registerListener(sl, sensor, SensorManager.SENSOR_DELAY_GAME);
    }
 
    private SensorEventListener sl = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            float x = event.values[SensorManager.DATA_X];
            float y = event.values[SensorManager.DATA_Y];
            float z = event.values[SensorManager.DATA_Z];
            //当 x=y=0 时,手机处于水平放置状态。
            //当 x=0 并且 y>0 时,手机顶部的水平位置要大于底部,也就是一般接听电话时手机所处的状态。
            //当 x=0 并且 y<0 时,手机顶部的水平位置要小于底部。手机一般很少处于这种状态。
            //当 y=0 并且 x>0 时,手机右侧的水平位置要大于左侧,也就是右侧被抬起。
            //当 y=0 并且 x<0 时,手机右侧的水平位置要小于左侧,也就是左侧被抬起。
            //当 z=0 时,手机平面与水平面垂直。
            //当 z>0 时,手机屏幕朝上。
            //当 z<0 时,手机屏幕朝下。
            Toast.makeText(AccelerometerActivity.this, "x:" + x + ", y:" + y + ", z:" + z, Toast.LENGTH_SHORT).show();
        }
 
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
 
        }
    };
}

这个例子需要在 AndroidManifest.xml 文件中加入重力感应器的使用权限:

1
<uses -permission android:name="android.hardware.sensor.accelerometer"/>

download:

testSensor

分享到:
评论

相关推荐

    android 利用重力感应监听

    在Android开发中,利用重力感应来实现特定功能是一种常见的技术。通过集成传感器API,开发者可以获取设备的重力变化数据,从而实现如来电时翻转手机静音这样的实用功能。下面将详细介绍如何在Android中利用重力感应...

    Android重力感应示例(源码)

    Android系统的Sensor框架提供了对各种传感器事件的访问,包括重力感应器(Gravity Sensor)。重力感应器是一种硬件传感器,它可以检测设备在3D空间中的重力分量。在Android中,这些数据可以通过`SensorManager`类...

    Android 重力感应游戏-疯狂的小球源码程序

    Android 重力感应游戏-疯狂的小球源码程序,基于Android 平台的重力感应游戏-疯狂的小球。

    android重力感应源代码

    在Android平台上,重力感应功能是通过Android Sensor框架来实现的,它允许应用程序获取设备的运动数据,包括重力、加速度、陀螺仪等。本文将深入探讨Android重力感应源代码的相关知识点,帮助开发者理解和实现这一...

    android重力感应实例代码

    在Android平台上,重力感应功能是通过利用内置的传感器来实现的,这些传感器通常被称为“重力传感器”或“加速度计”。这个“android重力感应实例代码”提供了一个具体的示例,帮助开发者理解如何在Android应用中...

    Android重力感应实例

    在Android平台上,重力感应是一种常见且重要的功能,它允许应用程序根据设备的移动或倾斜来感知和响应物理世界中的变化。这个"Android重力感应实例"可能是为了展示如何利用Android SDK中的传感器API来开发一个控制...

    Android 重力感应游戏-疯狂的小球

    在Android平台上,重力感应游戏是一种利用设备内置的传感器来响应用户移动或旋转设备的方式,为玩家带来沉浸式的游戏体验。"疯狂的小球"作为一款这样的游戏,它充分展现了Android平台上的重力感应技术。下面将详细...

    Android 重力感应的测试程序源码-IT计算机-毕业设计.zip

    本项目“Android重力感应的测试程序源码”提供了一个实用的示例,帮助开发者理解如何在Android应用中集成并利用重力感应器的数据。下面将详细解析这个项目的知识点。 1. **Android传感器服务**: - Android系统...

    android_重力感应demo

    在Android平台上,重力感应是通过传感器服务(Sensor Service)来实现的,它允许开发者获取设备的物理运动数据,如重力、加速度等。这个"android_重力感应demo"是一个示例项目,旨在帮助初学者理解如何从设备获取并...

    android关闭重力感应

    android系统里面常常没用做关闭重力感应的软件。。。。。o(∩_∩)o 哈哈

    Android手机平台重力感应Demo

    这个"Android手机平台重力感应Demo"是一个示例项目,用于演示如何在Android应用中利用重力感应器的数据。以下是关于这个Demo及其相关知识点的详细说明: 1. **Android传感器系统**:Android系统提供了丰富的传感器...

    Android重力感应跑步测速应用.rar

    1. **重力感应器**:Android设备内置了多种传感器,其中重力感应器(Gravity Sensor)用于检测设备在三维空间中的重力分量。它能够感知手机的倾斜和翻转,通过测量X、Y、Z三个轴上的加速度变化,来确定设备的动态...

    安卓Android源码——重力感应的测试程序源码.zip

    【描述】提及的源码是专门设计用来测试重力感应功能的,这意味着开发者可以借此了解如何在Android系统中获取并处理来自重力感应器的数据。在安卓应用开发中,通常会使用SensorManager类和Sensor事件监听器来实现这一...

    android重力感应插件

    重力感应装置包括感应器、处理器和控制器三个部分。感应器负责侦测存储器的状态,计算存储器的重力加速度值;处理器则对加速度值是否超出安全范围进行判断;而控制器则负责控制将磁头锁定或者释放出安全停泊区。一旦...

    重力感应器

    重力感应器在Android平台上的应用开发是一项常见且重要的任务,尤其对于创建具有动态交互体验的移动应用。本文将深入探讨如何在Android中利用重力感应器,以及如何构建一个简单的示例应用。 首先,我们需要了解重力...

    Android重力感应跑步测速应用.zip

    Android重力感应跑步测速应用.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android重力感应跑步测速应用-IT计算机-毕业设计.zip

    这个应用利用了Android设备内置的传感器技术,特别是重力感应器,来追踪用户的运动数据,并计算出跑步速度。以下将详细介绍该项目涉及的主要知识点: 1. **Android开发环境**:首先,开发者需要熟悉Android Studio...

    Android手机平台重力感应SensorDemo

    SensorDemo是Android开发中的一个示例项目,它展示了如何利用Android的Sensor API来获取并处理来自重力感应器的数据。 首先,Android系统提供了Sensor框架,它是一个硬件抽象层,允许开发者通过SensorManager服务...

Global site tag (gtag.js) - Google Analytics