最近在学习通信和Android,打算将这两个知识联系在一起,和小组的人一起做一个小项目,利用Android手机上的传感器搜集数据,把手机充当一个带有重力感应的游戏手柄。在这个项目中用到了Android中的Sensor类,SensorManager类,SensorEvent类,SensorEventListener类。
在Android中,Sensor类的常量有:TYPE_ACCELEROMETER/TYPR_ALL TYPE_AMBIENT_TEMPERATURE/TYPE_GRAVITY/TYPE_GYROSCOPE/TYPE_LIGHT/ TYPE_LINEAR_ACCELERATION/TYPE_MAGNETIC_FIELD/TYPE_ORIENTATION/TYPE_PRESSURE/TYPE_PROXIMITY/TYPE_RELATIVE_HUMIDITY/TYPE_ROTATION_VECTOR/ TYPR_TEMPERATURE,但是在这个项目中,我们只用到了TYPE_ACCELERAMETER,加速度传感器。
通过SensorManager连接设备的传感器,通过以下语句进行实例化:
Context.getSystenmService(SENSOR_SERVICE)。
下面是测试传感器的简单的代码,其作用是读取加速度传感器的X,Y,Z轴上的加速度变化,并用Toast把变化呈现出来。
public class MainActivity extends Activity {
private SensorManager manager;
private Sensor sensor;
private SensorEventListener listener;
private TextView text;
//waystate记录赛车行驶方向,默认值为向前
private String waystate="forward";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置为全屏显示
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN );
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//保持屏幕常亮
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
text=(TextView)findViewById(R.id.TextView01);
//初始化屏幕显示字符串
text.setText("摇摆手机,观察传感器数字变化\nx=0,y=0,z=0");
//初始化加速度传感器
manager=(SensorManager)this.getSystemService(SENSOR_SERVICE);
sensor=manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//初始化加速度变化事件监听器
listener =new SensorEventListener(){
int x,y,z;
//当sensor的有效值改变时,从SensorManager中接收通知。
public void onSensorChanged(SensorEvent e) {
//立体坐标系的加速度
x=(int)e.values[SensorManager.DATA_X];
y=(int)e.values[SensorManager.DATA_Y];
z=(int)e.values[SensorManager.DATA_Z];
if(y<2.5&&y>-2.5){
if(waystate!="forward")
{
//运动操作:让赛车向哪个方向跑的动作,这里先由吐司提示代替~
Toast.makeText(MainActivity.this,"forward",1).show();
}
waystate="forward";
}
if(y>=2.5){
if(waystate!="right")
{
Toast.makeText(MainActivity.this,"right",1).show();
}
waystate="right";
}
if(y<=-2.5){
if(waystate!="left")
{
Toast.makeText(MainActivity.this,"left",1).show();
}
waystate="left";
}
text.setText("摇摆手机,观察传感器数字变化\nx="+x+",y="+y+",z="+z);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
}
//自定义方法,传感器停止工作,300毫秒后恢复
private void makeSensorDalay(){
//加速度传感器休眠300毫秒,方法是先注销监听器,再注册监听器
manager.unregisterListener(listener);
Handler handler=new Handler(){
public void handleMessage(Message msg){
if(msg.what==1){
//注册监听器
manager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_GAME);
}
}
};
Message message=Message.obtain();
message.what=1;
/*
* 傻瓜注释一:这里可以设置延时时间
* 延时时间是传感器休眠时间!!
*/
handler.sendMessageDelayed(message,600);
}
public void onResume(){
super.onResume();
//注册监听器
manager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_GAME);
}
public void onPause(){
//注销监听器
manager.unregisterListener(listener);
super.onPause();
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
- 大小: 25.2 KB
分享到:
相关推荐
Android传感器应用之摇一摇小球运动实现 看代码吧
Android 传感器应用举例 结合实际案例, 介绍了在程序中注册传感器监听器对手机的加速度变化进行感应的方法, 以及使用Intent 在Activity 与Service 之间进行通信, 以及对Android 平台下的嵌入式数据库SQLite 进行...
Android 系统的一大亮点之一就是对传感器的应用,利用传感器可以开发出很多新奇有 趣的程序,小到水平仪、计步器,大到传感器游戏,本文详细介绍各种传感器的原理及使用方法,并通过一个水平仪的开发向读者介绍...
Android传感器开发实例,学习用。两个Activity,一个用来查看手机里的传感器的个数和种类,另一个是小游戏,用加速度传感器控制小球的位置。
摘要:Java源码,Android源码,传感器 SensorSample源码下载,Android传感器应用基础源代码,传感器在Android智能手机中是必不可少的,其实很多智能是由很多的传感器传递数据给手机处理,才显得手机很智能,比如传感器...
Android重力传感器应用源代码,代码有注释
详细解释andorid上传感器的应用,包括GPS定位传感器,light sensor,等等
介绍Android手机常用的传感器类型,阐述了手机传感器的使用方法以及参数。以姿态传感器为例,研究了手机传感器在手机游戏开发中的应用,详细介绍了姿态传感器实现开发游戏核心模块代码及其优越体验。
基于Android的传感器app应用,能够实现传感器功能的测试,采集数据,并将数据可视化。
《Android传感器高级编程》利用你所需的知识和代码来武装你,帮助你很好地利用Android中的传感器。从确定智能手机的位置和解释物理传感器,到处理图像、音频和识别语音,你将学会如何有效地调用传感器相关的API。...
基于android传感器的应用, 一.可以检测你手机中的有的传感器 二.实现了像Google map方向识别,就是手机向哪个方向,箭头朝你走的反向!
浅析Android手机传感器机制及应用设计举例.pdf
11种安卓传感器使用源码
android 指南针实例 传感器应用入门 各种传感器的应用
Android应用之加速度传感器,文档,代码
教程名称: Android传感器开发【】57_采用方向传感器实现指南针【】Android应用案例开发大全.吴亚峰等.扫描版【】Android核心技术与实例详解ppt课件【】Android核心技术与实例详解【源代码】【】Android游戏开发...
演示在Android下使用SDK进行传感器开发,详细参见博客:http://www.cnblogs.com/plokmju/p/android_SensorManager.html
大家好,由于最近会有对智能硬件相关的开发需求,所以最近这些天分享的博文也就大致挂钩智能硬件了,像上一篇的蓝牙分享,相信很多读者已经看过了,那么今天我为大家带来Android传感器方面知识的介绍与使用方法,...
实现:1、应用级屏幕亮度随关照强度变化 2、基于计步传感器的简易步数统计 3、基于地磁传感器与加速度传感器的简易指南针
Android高级应用源码-Android加速度传感器源代码.rar