最近在学习通信和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传感器开发而设计的项目,通过两个具体的Activity,深入浅出地展示了如何利用Android的传感器API。 第一个Activity的主要目标是展示手机中的传感器数量和类型。在...
在Android平台上,传感器应用是移动开发的一个重要领域,它允许开发者创建各种有趣和实用的交互式功能。"摇一摇"动作就是一个常见的用户交互模式,常用于游戏、抽奖或者清理缓存等场景。本篇文章将深入探讨如何在...
综上所述,《Android传感器高级编程》全面覆盖了Android传感器开发的各个方面,无论你是初学者还是经验丰富的开发者,都能从中获取宝贵的实践经验和理论知识,提升你的Android传感器应用开发能力。通过深入学习这...
摘要:Java源码,Android源码,传感器 SensorSample源码下载,Android传感器应用基础源代码,传感器在Android智能手机中是必不可少的,其实很多智能是由很多的传感器传递数据给手机处理,才显得手机很智能,比如传感器...
Android 传感器编程实例开发——三轴数据采集 Android 传感器编程实例开发是一种...通过本文的介绍和示例项目,开发者可以快速了解 Android 传感器编程的基本概念和步骤,并开始开发自己的 Android 传感器应用程序。
物理传感器应用的是物理效应,诸如压电效应、磁致伸缩现象、离化、极化、热电、光电、磁电等效应。化学传感器包括那些以化学吸附、电化学反应等现象为因果关系的传感器。 二、Android 中的传感器 Google Android ...
在Android平台上,指南针应用程序是利用手机内置的传感器来指示方向的一种实用工具。这个实例将带你深入了解如何使用Android的传感器API来开发一个简单...不断实践和探索,你将成为一个熟练的Android传感器应用开发者。
Basic4android(B4A)是一个简化版的 Android 开发工具,它使用 Basic 语言,使得非专业程序员也能快速上手开发 Android 应用,包括传感器应用。 本文后续部分将详细阐述如何在 Android 中访问和处理传感器数据,...
在Android平台上,传感器技术是移动设备中不可或缺...理解和熟练掌握这些知识点,对于开发出高效、准确的Android传感器应用至关重要。在开发过程中,不断进行测试和优化,可以提升应用的用户体验并降低问题发生的风险。
在高级编程部分,作者将引导读者探索更复杂的传感器应用,如运动识别(行走、跑步、骑行等)、室内定位与导航、环境感知(光照、噪声水平)等。这部分内容将涉及传感器数据的分析、机器学习算法以及多传感器数据融合...
在Android平台上,传感器技术是移动应用开发中的一个重要组成部分,它为开发者提供了与设备硬件交互的能力,从而实现各种创新的功能。本示例源码主要涵盖了三种常见的传感器:加速度传感器、方位传感器和光线传感器...
总的来说,这份“android传感器高级编程源码+apk”涵盖了Android传感器API的使用、数据处理和应用开发等多个方面,对于希望提升Android传感器编程能力的开发者来说,是一份宝贵的参考资料。通过研究源码,我们可以...
【Android传感器技术的游戏开发应用】 随着Android系统的普及,越来越多的开发者开始利用其丰富的传感器功能进行创新应用,特别是在游戏开发领域。Android手机中的传感器为游戏带来了前所未有的交互体验,让玩家...
对于一个传感器应用,可能需要在该文件中声明对传感器的访问权限,如`<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>`,以便读取GPS等传感器数据。 3. **SensorManager**: Android...
综上所述,这个源码项目为学习Android传感器应用、UI绘制、多线程管理和Activity及SurfaceView的使用提供了实践案例。通过分析和理解这个项目,开发者可以深入学习到Android开发的核心技术,并提升自己在移动应用...
在Android平台上,我们可以利用内置的传感器系统来实现各种创新的功能,比如本文提到的"手机摇一摇解除闹铃"。...总的来说,Android的传感器系统为开发者提供了丰富的可能性,让我们能够创造出更多富有创意的应用。
总的来说,这篇文章为读者提供了一条从理解Android传感器工作原理到实际应用开发的清晰路径。通过学习,开发者不仅可以了解Android系统中传感器的运用,还能掌握如何设计和实现基于传感器的应用,从而提升Android...