android中的很多游戏的游戏都使用了重力感应的技术,就研究了一下重力感应

以屏幕的左下方为原点,箭头指向的方向为正。从-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三个值求三角函数,就可以精确检测手机的运动状态了。

代码实例:

AndroidManifest.xml

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

代码很简单,直接看源码,最后提供了源码下载

Java Code:

package com.learn.sunboy; 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.view.MotionEvent; import android.widget.Toast; public class TestSensor extends Activity{ private SensorManager mSensorManager = null; private Sensor mSensor = null; private float x, y, z; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); mSensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE); mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } SensorEventListener lsn = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { x = event.values[SensorManager.DATA_X]; y = event.values[SensorManager.DATA_Y]; z = event.values[SensorManager.DATA_Z]; } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } }; @Override public boolean onTouchEvent(MotionEvent event){ if(event.getAction() == MotionEvent.ACTION_DOWN){ mSensorManager.registerListener(lsn, mSensor, SensorManager.SENSOR_DELAY_GAME); String str = "x=" + x + "; y=" + y + "; z=" + z; Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show(); } return super.onTouchEvent(event); } @Override public void onResume(){ mSensorManager.registerListener(lsn, mSensor, SensorManager.SENSOR_DELAY_GAME); super.onResume(); } @Override public void onPause(){ mSensorManager.unregisterListener(lsn); super.onPause(); } }
运行效果:

注明:这是在模拟器上截图(SDK  V1.5), 由于模拟器无法感应重力,请大家在物理机上测试

源码下载

转载于:https://www.cnblogs.com/wdpp/archive/2011/09/01/2386746.html

Android重力感应示例相关推荐

  1. android 重力感应view,Android重力感应示例

    android中的很多游戏的游戏都使用了重力感应的技术, 就研究了一下重力感应 以屏幕的左下方为原点,箭头指向的方向为正.从-10到10,以浮点数为等级单位,想象以下情形: 手机屏幕向上(z轴朝天)水 ...

  2. android重力传感器横竖反,Android重力感应实现方式

    在Android应用程序的开发中,占据主要地位的当属游戏的开发.我们在这篇文章中将会针对在游戏中需要用到的重力感应功能,来为大家详细分析Android重力感应的实现方法,以帮助大家解决相关问题. An ...

  3. Android重力感应开发

    一.手机中常用的传感器 在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用,具体如下:(Sensor类) #define SENSOR_TYPE_ACCE ...

  4. Android重力感应基础

    android中的很多游戏的游戏都使用了重力感应的技术,但其api demo却并没有重力感应的实例(不知道是不是我没找到,找到的朋友麻烦告诉我一下,谢谢),因为开发的需要,就研究了一下重力感应这方面, ...

  5. android重力感应横竖屏,Android开发 apk强制横竖屏

    Android开发 apk强制横竖屏 (2014-05-02 10:57:50) 标签: 杂谈 全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添 ...

  6. android 重力感应的使用

    作者:GrayD 重力感应主要是依靠手机的加速度传感器(accelerometer)来实现 在Android的开发中一共有八种传感器但是不一定每一款真机都支持这些传感器.因为很多功能用户根本不care ...

  7. android 重力感应 横竖屏切换,重力感应 横竖屏切换

    1,去掉StatusBar 在info.plist添加UIStatusBarHidden设置Boolean,设置为YES. 2,横屏 继续在info.list中添加UIInterfaceOrienta ...

  8. Android 重力感应

    Android重力感应器Sensor编程 [日期:2010-10-23] 来源:Linux社区  作者:Linux 1.取得重力感应器Sensor对象 在 Activity 中定义以下成员变量: pr ...

  9. android 重力感应 讲解

    一:什么是传感器:      所谓传感器能够探测如光.热.温度.重力.方向 等等的功能! 二:Android中提供传感器有哪些: 1.  加速度传感器(重力传感器) 2.  陀螺仪传感器 3.  光传 ...

最新文章

  1. vivado与modelsim的联合仿真(二)
  2. 今日学习心得——装饰模式
  3. 深入浅出讲解MSE Nacos 2.0新特性
  4. 坑 之 tensorflow使用sess.run处理图片时越来越慢,占用内存越来越大的问题
  5. struts.xml中class路径错误报错的问题
  6. springMVC 前后台日期格式传值解决方式之二(共二) @InitBinder的使用
  7. python基础七之copy
  8. 这本关于Node.js的书,是一本神书,助你学会Node.js,为你升职加薪,走上人生巅峰
  9. 《Spring Boot实战》读书笔记
  10. 树形$dp$学习笔记
  11. 设计模式-第二篇之简单工厂模式
  12. datagrid鼠标悬浮提示
  13. 简易鼠标模拟器 python
  14. 电子科技大学成都学院计算机考研,电子科大成都学院又双叒叕现学霸寝室,室友全考上研究生...
  15. 项目管理文档目录结构
  16. 怎样培养数据分析的能力
  17. 3.5 菜鸟无畏——《逆袭大学》连载
  18. win7 虚拟wifi服务器,在win7下建立虚拟wifi
  19. Git使用笔记[持续更新]
  20. focus和onfocus区别

热门文章

  1. 移动端报表JS开发示例--获取定位
  2. android系统图标大小
  3. 高德地图获取坐标距离_【转】根据高德地图得出的坐标算出两点之间的距离
  4. 手机访问电脑文件_手机直接访问电脑文件,不用数据线,方便快速
  5. AcWing 1055. 股票买卖 II
  6. 无人驾驶——路径规划的学习笔记
  7. 【已解决】输入mysqld -install时报错Install/Remove of the Service Denied
  8. sklearn聚类评价指标
  9. Python Socket编程初探
  10. Maven使用archetype迅速生成项目骨架