android中的很多游戏的游戏都使用了重力感应的技术,但其api demo却并没有重力感应的实例(不知道是不是我没找到,找到的朋友麻烦告诉我一下,谢谢),因为开发的需要,就研究了一下重力感应这方面,因为网上关于这方面的东西比较少,所以写出来跟大家交流一下,算是抛砖引玉吧。(ps.因为重力感应式需要真机才能测试的,所以,下面提供的demo程序只能在真机上跑。)
因为官方说明比较含糊难懂,我用最简单的方式讲一下android重力感应系统的坐标系
http://dl.iteye.com/upload/picture/pic/44045/8aff83b0-0a37-3870-979b-1b329569452d.jpg
以屏幕的左下方为原点(2d编程的时候,是以屏幕左上方为原点的,这个值得注意一下),箭头指向的方向为正。从-10到10,以浮点数为等级单位,想象一下以下情形:
手机屏幕向上(z轴朝天)水平放置的时侯,(x,y,z)的值分别为(0,0,10);
手机屏幕向下(z轴朝地)水平放置的时侯,(x,y,z)的值分别为(0,0,-10);
手机屏幕向左侧放(x轴朝天)的时候,(x,y,z)的值分别为(10,0,0);
手机竖直(y轴朝天)向上的时候,(x,y,z)的值分别为(0,10,0);
其他的如此类推,规律就是:朝天的就是正数,朝地的就是负数。利用x,y,z三个值求三角函数,就可以精确检测手机的运动状态了。
接下来,用最短的代码完成功能,程序效果就是在title上面输出x,y,z的值。
package com.ray.test;
import android.app.Activity;
import android.os.Bundle;
import android.hardware.SensorManager;
import android.hardware.Sensor;
import android.hardware.SensorEventListener;
import android.hardware.SensorEvent;
public class SensorTest extends Activity {
private SensorManager sensorMgr;
Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
private float x, y, z;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
SensorEventListener lsn = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
x = e.values[SensorManager.DATA_X];
y = e.values[SensorManager.DATA_Y];
z = e.values[SensorManager.DATA_Z];
setTitle("x="+(int)x+","+"y="+(int)y+","+"z="+(int)z);
}
public void onAccuracyChanged(Sensor s, int accuracy) {
}
};
//注册listener,第三个参数是检测的精确度
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}
分享到:
相关推荐
这个"Android手机平台重力感应Demo"是一个示例项目,用于演示如何在Android应用中利用重力感应器的数据。以下是关于这个Demo及其相关知识点的详细说明: 1. **Android传感器系统**:Android系统提供了丰富的传感器...
这个"android_重力感应demo"是一个示例项目,旨在帮助初学者理解如何从设备获取并处理重力感应数据。下面我们将深入探讨这个话题。 首先,我们需要了解Android中的传感器系统。Android系统提供了丰富的传感器接口,...
在Android平台上,重力感应是通过传感器服务来实现的,它可以帮助开发者获取设备在空间中的运动状态,例如手机的翻转、倾斜等动作。本文将深入探讨如何在Android中进行重力感应的开发,以及相关的知识和技术。 首先...
【安卓重力感应demo】是Android平台上用于演示如何利用设备内置的传感器——重力感应器进行数据采集和处理的应用示例。在Android系统中,重力感应器是一种关键的硬件组件,它能够感知设备在三维空间中的加速度变化,...
在Android平台上,开发一款利用重力感应功能的应用是非常常见的,比如“android 重力球demo”。这个Demo展示了如何集成和利用Android系统的传感器API,特别是重力感应器,来实现一个可交互的小球游戏,用户可以通过...
这个名为"Android手机平台重力感应Demo.zip"的压缩包包含了一个示例项目,旨在帮助开发者理解和实现如何在Android应用中利用重力传感器。通过这个Demo,我们可以深入学习到以下关键知识点: 1. **重力传感器**:...
在Android 3.0(API级别11)之后,系统引入了Sensor.TYPE_GRAVITY和Sensor.TYPE_LINEAR_ACCELERATION,使得开发者可以区分由地球引力引起的重力加速度和设备自身动态加速度。Sensor.TYPE_ACCELEROMETER返回的是两者...
1. **重力感应(Android手机平台重力感应Demo.zip)** 重力感应是Android设备的一项重要功能,它允许应用感知设备的移动和方向变化。这个示例代码演示了如何使用Android的Sensor框架来获取和处理来自加速度传感器的...
- **重力感应器(Gravity Sensor)**: 从加速度计数据中分离出重力部分,提供设备相对于地球引力的朝向。 - **线性加速度感应器(Linear Acceleration Sensor)**: 去除重力影响后,仅显示设备的运动加速度。 - *...
总结来说,这个“安卓重力感应 触控 onDraw方法的使用demo”展示了如何结合Android的重力传感器、`onDraw()`方法和`onTouchEvent()`方法,实现一个动态响应用户触摸和设备运动的应用。通过实时获取和处理传感器数据...
本资源包"Android常用传感器demo大全"涵盖了Android平台上最常用的传感器类型,包括陀螺仪、加速度计、磁场传感器、姿态传感器、范围传感器、光照传感器以及温度传感器。下面,我们将深入探讨这些传感器的功能、工作...
在本示例demo中,我们将会探讨Android平台上的多种传感器,包括加速度传感器、环境传感器、地磁传感器、GPS、重力感应器、陀螺仪、方向传感器以及距离传感器。 首先,加速度传感器是测量设备在三个轴(X、Y、Z)上...
【Android_a_Demo.rar_DEMO】是一个专门为Android平台设计的重力感应演示程序,它为开发者和学习者提供了直观地了解如何在Android设备上利用硬件传感器进行应用开发的机会。这个DEMO展示了如何通过编程接口(API)...
重力感应支持 Raw/Assets,本地视频文件播放支持 预览 下载 Demo Download 开始使用 build.gradle dependencies { // required implementation 'org.salient.artvideoplayer:artplayer-java:0.6.0' // ...
5. **重力感应数据**: GSensor不仅可以感知用户的运动,还能分离出重力成分。在静止状态下,加速度计在Z轴上会读出大约9.81,对应地球的重力加速度。 6. **小球移动逻辑**: 实例程序中的“小球”可能是一个...
21 重力感应 22 android 查询工具源代码 23 android进度条对话框Demo 24 Android实现渐显按钮的左右滑动效果 25 android天气预报源码 26 Android 文件浏览器源码 27 android源码分享之私密通讯录源码 28 Android...
在Android应用开发中,"仿微信摇一摇Demo"是一个常见的功能实现,它结合了设备的传感器技术,尤其是重力感应器(Sensor),以及振动器(Vibrator)和动画效果,来模拟微信的摇一摇交互体验。下面将详细介绍这个功能...