Android传感器编程入门
第8章 传感器(Sensor)-App Inventor Android移动应用开发实战-范士喜

【运行结果】:
8.3 方向传感器(OrientationSensor)
方向传感器(OrientationSensor)组件用于确定手机的空间方位, 该组件为非可视组件,以角度的方式提供三个方位值: 方位角(Azimuth): 当设备顶部指向正北方时,其值为0°,正东为 90°,正南为180°,正西为270°。 倾斜角(Pitch): 当设备水平放置时,其值为0°;随着设备顶部向下 倾斜至竖直时,其值为90°,继续沿相同方向翻转,其值逐渐减小,直 到屏幕朝向下方的位置,其值变为0°;同样,当设备底部向下倾斜直 到指向地面时,其值为-90°,继续沿同方向翻转到屏幕朝上时,其值 为0°。 翻转角(Roll):当设备水平放置时,其值为0°;并随着向左倾斜到 竖直位置时,其值为90°,而当向右倾斜至竖直位置时,其值为-90°。
(2-8 简易计步器
源程序:Pedometer.aia
【功能描述】:使用计步器(Pedometer)组件设 计一个简易计步器APP,实现计步、计路程、计 时等功能。
【组件设计】:
【逻辑设计1】:
【逻辑设计2】:
【运行结果】:
思考与练习:
(1)案例8-1 简易计时器为何要使用两个计时器(Clock)? (2)加速度传感器(AccelerometerSensor)、方向传感器
【逻辑设计】:
【运行结果】:
8.4 位置传感器(LocationSensor)
(1)属性面板
(2)事件
(3)方法
(4)主要属性
案例8-4 简易定位仪
源程序:LocationSensor.aia
【功能描述】:使用位置传感器(LocationSensor) 组件设计一个APP,显示手机所在位置的纬度、 经度、海拔和当前地址。
如何使用Android的传感器和智能房屋设备进行智能家居应用开发(五)

智能家居技术正逐渐成为人们生活中不可或缺的一部分。
随着智能手机和智能设备的普及,利用Android的传感器和智能房屋设备进行智能家居应用开发成为一种前沿的技术趋势。
本文将介绍如何利用这些技术来开发智能家居应用。
一、了解传感器技术智能手机上常见的传感器包括加速度计、陀螺仪、磁力计、光线传感器、温度传感器等。
这些传感器可以帮助我们获取周围环境的各种数据,比如手机的加速度计可以感知用户是否在走路或者跑步,陀螺仪可以感知手机的旋转方向,磁力计可以感知地磁场的变化等等。
在智能家居应用中,我们可以利用这些传感器的数据来实现一些智能化的功能,比如智能灯光控制、智能窗帘控制等。
例如,当用户离开家时,利用加速度计和陀螺仪可以判断出用户是否在走出大门,然后自动关闭灯光和窗帘。
二、利用智能房屋设备随着物联网技术的发展,越来越多的家用设备都开始支持互联网连接,例如智能家电、智能门锁、智能摄像头等。
通过和这些智能房屋设备互联,我们可以实现更加便捷和智能的家居控制。
例如,我们可以通过手机应用控制智能灯光系统,实现远程开关灯光、调整亮度和颜色等功能;通过智能门锁系统,实现远程开锁、通过摄像头查看来访者等功能。
通过深入学习和应用智能房屋设备的API接口,我们可以轻松构建一个智能家居控制中心,实现设备之间的联动控制。
三、开发智能家居应用要开发一个智能家居应用,我们需要熟悉Android开发,了解传感器和智能设备的相关API接口。
在开发过程中,我们可以利用Android的传感器API获取传感器数据,并根据数据进行相应的逻辑操作。
例如,当光线传感器检测到环境亮度过低时,可以自动打开智能灯光系统;当加速度计检测到用户久坐不动时,可以发送提醒信息。
同时,我们可以调用智能设备的API接口,实现对设备的控制操作。
例如,通过发送指令给智能烤箱,可以实现预热和烹饪控制。
在开发过程中,我们还可以考虑将语音识别、图像识别等技术应用到智能家居应用中,使其更加智能化。
Android之Sensor 简介

1.Sensor Type 重力感应/加速度传感器 (G-Sensor) 光感应 (Light-Sensor) 温度感应 方向感应 磁场、 临近性
2.如何实现 Sensor 编程 a.获取系统服务(SENSOR_SERVICE)返回一个 SensorManager 对象 sensormanager = (SensorManager)getSystemSeriver(SENSOR_SERVICE); b.通过 SensorManager 对象获取相应的 Sensor 类型的对象 sensorObject = sensormanager.getDefaultSensor(sensor Type); c.声明一个 SensorEventListener 对象用于侦听 Sensor 事件,并重载
3.关于 G-Sensor Android 加速度传感器的类型是 Sensor.TYPE_ACCELEROMETER 通过 android.hardware.SensorEvent 返回加速度传感器值。 加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别
是 values[0]: x-axis 方向加速度 values[1]: y-axis 方向加速度 values[2]: z-axis 方向加速度
3.Window7 与 win xp 不同
Window7 下安装 SensorSimulator 的过程同上,但有点不同的地方时 adb 命令 不知道是 Android sdk 路径的问题还是其他的原因,在 Windows 7 下 CMD 命令下 无法执行 adb 命令, 需要找到 adb.exe 的文件路径下执行才可以.
该方法只对受此应用程序监视的传感器调用(更多内容见下文)。该方法的参数包 括:一个整数,指示更改的传感器;一个浮点值数组,表示传感器数据本身。有些传感器只 提供一个数据值,另一些则提供三个浮点值。方向和加速表传感器都提供三个数据值。
如何使用Android的传感器和VR技术进行虚拟现实应用开发(三)

虚拟现实(Virtual Reality,简称VR)技术正逐渐融入我们的生活,为我们带来了全新的体验。
而在虚拟现实应用开发领域,Android的传感器技术扮演着重要角色。
本文将探讨如何利用Android的传感器和VR技术进行虚拟现实应用的开发。
一、了解传感器技术的基本原理传感器是一种能够感知外部环境和用户行为的装置。
在Android系统中,我们常用的传感器包括加速度传感器、陀螺仪、磁力计等。
这些传感器可以提供物体的运动信息、方向信息、重力等数据,为VR应用提供基础数据支持。
二、使用传感器获取移动设备的姿态信息在开发VR应用时,我们首先需要获取手机或平板电脑等移动设备的姿态信息,即设备的旋转和倾斜状态。
通过加速度传感器和陀螺仪,我们可以获取到设备的加速度和角速度数据,进而计算得到设备的旋转角度和倾斜角度。
这些姿态信息对于VR应用的头部跟踪非常重要,能够帮助用户在虚拟场景中实现真实的视角变化。
三、利用传感器实现触摸和手势交互除了头部跟踪,VR应用还需要用户进行触摸和手势交互。
在Android系统中,我们可以利用触摸传感器和陀螺仪进行交互实现。
通过触摸传感器,我们可以检测用户的触摸事件,如点击、滑动等,从而实现虚拟场景中的按钮点击或者物体交互。
而陀螺仪则可以感知用户的手势(如旋转、摇晃等),从而进一步扩展了用户与虚拟场景的交互方式。
四、利用传感器实现位置追踪在虚拟现实应用中,位置追踪是非常重要的一部分。
通过利用设备中的磁力计和加速度传感器,我们可以获取到设备的位置信息。
通过实时测量设备在三维空间中的加速度和方向,我们可以推算出设备在空间中的位置。
这为虚拟现实应用中的物体追踪和运动提供了基础。
五、结合VR技术开发具体应用有了对传感器技术的基本了解后,我们可以结合VR技术进行应用开发。
例如,我们可以利用传感器获取设备的姿态信息,并将其应用到虚拟现实游戏中,让用户能够在游戏中通过头部动作进行控制。
或者我们可以利用传感器实现物体的追踪,将虚拟物体与现实世界中的物体进行交互。
Android传感器代码

Android传感器代码详细说明各传感器调用方式,并附加详细的代码Android下调用传感器代码在这里介绍一下所写的在android下调用传感器的程序。
Android中支持的几种传感器:Sensor.TYPE_*****OMETER:加速度传感器。
Sensor.TYPE_*****PE:陀螺仪传感器。
Sensor.TYPE_LIGHT:亮度传感器。
Sensor.TYPE_*****C_FIELD:地磁传感器。
Sensor.TYPE_*****TION:方向传感器。
Sensor.TYPE_*****E:压力传感器。
Sensor.TYPE_*****TY:近程传感器。
Sensor.TYPE_*****TURE:温度传感器。
使用传感器最关键的一些知识是:SensorManager是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。
我们可以通过getSystemService方法来取得一个SensorManager对象。
使用传感器时,需要通过registerListener函数注册传感器,使用完后需要通过unregisterListener取消注册。
百闻不如一见,还是直接讲代码:新建一个Sensors的工程,创建一个Sensors.java,内容如下:***-********-**********01 package me.sigma.sensors;020304import android.app.Activity;05import android.hardware.SensorListener;06import android.hardware.SensorManager;07import android.os.Bundle;08import android.widget.TextView;0910public class Sensors extends Activity {详细说明各传感器调用方式,并附加详细的代码11 TextView myTextView1;//t12 //gen13 TextView myTextView2;//x14 TextView myTextView3;//y15 TextView myTextView4;//z16 //acc17 TextView myTextView5;//x18 TextView myTextView6;//y19 TextView myTextView7;//z20 //ori21 TextView myTextView8;//x22 TextView myTextView9;//y23 TextView myTextView10;//z24 //Light25 TextView myTextView11;//z2627 SensorManager mySensorManager;//28 @Override29 public void onCreate(Bundle savedInstanceState) {30 super.onCreate(savedInstanceState);31 setContentView(yout.main);32 myTextView1 = (TextView) findViewById(R.id.myTextView1);33 myTextView2 = (TextView) findViewById(R.id.myTextView2);34 myTextView3 = (TextView) findViewById(R.id.myTextView3);35 myTextView4 = (TextView) findViewById(R.id.myTextView4);36 myTextView5 = (TextView) findViewById(R.id.myTextView5);37 myTextView6 = (TextView) findViewById(R.id.myTextView6);38 myTextView7 = (TextView) findViewById(R.id.myTextView7);39 myTextView8 = (TextView) findViewById(R.id.myTextView8);40 myTextView9 = (TextView) findViewById(R.id.myTextView9);41 myTextView10 = (TextView) findViewById(R.id.myTextView10);42 myTextView11 = (TextView) findViewById(R.id.myTextView11);43 mySensorManager = (SensorManager)getSystemService(SENSOR_*****); 44 }45 private SensorListener mySensorListener = new SensorListener(){46 @Override47 public void onAccuracyChanged(int sensor, int accuracy) {}详细说明各传感器调用方式,并附加详细的代码48 @Override49 public void onSensorChanged(int sensor, float[] values) { 50if(sensor == SensorManager.SENSOR_*****TURE){51 myTextView1.setText(“Current Temprature:"+values); 52 }elseif(sensor == SensorManager.SENSOR_*****C_FIELD){53 myTextView2.setText("Current Magnetic x:"+values); 54 myTextView3.setText("Current Magnetic y:"+values); 55myTextView4.setText("Current Magnetic z:"+values); 56 }else if(sensor == SensorManager.SENSOR_*****OMETER){57 myTextView5.setText("Current Accelero x:"+values); 58 myTextView6.setText("Current Accelero y:"+values); 59myTextView7.setText("Current Accelero z:"+values); 60 }else if(sensor == SensorManager.SENSOR_*****TION){61 myTextView8.setText("Current Oraenttation x:"+values); 62 myTextView9.setText("Current Oraenttation y:"+values); 63 myTextView10.setText("Current Oraenttation z:"+values); 64 }elseif(sensor == SensorManager.SENSOR_LIGHT){65 myTextView11.setText("Current Oraenttation x:"+values); 66 }67 }68 };69 @Override70 protected void onResume() {71 mySensorManager.registerListener(72 mySensorListener,73 SensorManager.SENSOR_*****TURE |74 SensorManager.SENSOR_*****C_FIELD |75 SensorManager.SENSOR_*****OMETER |76 SensorManager.SENSOR_LIGHT |77 SensorManager.SENSOR_*****TION,78 SensorManager.SENSOR_DELAY_UI79 );80 super.onResume();81 }82 @Override83 protected void onPause() {84 mySensorManager.unregisterListener(mySensorListener);详细说明各传感器调用方式,并附加详细的代码85 super.onPause();86 }87}更改res/layout/下面的main.xml,为如下内容:***-********-**********01 ?xml version="1.0" encoding="utf-8"?02LinearLayout xmlns:android="/apk/res/android" 03 android:orientation="vertical"04 android:layout_width="fill_parent"05 android:layout_height="fill_parent"06 TextView07 android:id="@+id/title"08 android:gravity="center_horizontal"09 android:textSize="20px"10 android:layout_width="fill_parent"11 android:layout_height="wrap_content"12 android:text="@string/title"/13 TextView14 android:id="@+id/myTextView1"15 android:textSize="18px"16 android:layout_width="fill_parent"17 android:layout_height="wrap_content"18 android:text="@string/myTextView1"/19 TextView20 android:id="@+id/myTextView2"21 android:textSize="18px"22 android:layout_width="fill_parent"23 android:layout_height="wrap_content"24 android:text="@string/myTextView2"/25 TextView26 android:id="@+id/myTextView3"27 android:textSize="18px"28 android:layout_width="fill_parent"29 android:layout_height="wrap_content"30 android:text="@string/myTextView3"/详细说明各传感器调用方式,并附加详细的代码31 TextView32 android:id="@+id/myTextView4"33 android:textSize="18px"34 android:layout_width="fill_parent"35 android:layout_height="wrap_content"36 android:text="@string/myTextView4"/37 TextView38 android:id="@+id/myTextView5"39 android:textSize="18px"40 android:layout_width="fill_parent"41 android:layout_height="wrap_content"42 android:text="@string/myTextView5"/43 TextView44 android:id="@+id/myTextView6"45 android:textSize="18px"46 android:layout_width="fill_parent"47 android:layout_height="wrap_content"48 android:text="@string/myTextView6"/49 TextView50 android:id="@+id/myTextView7"51 android:textSize="18px"52 android:layout_width="fill_parent"53 android:layout_height="wrap_content"54 android:text="@string/myTextView7"/55 TextView56 android:id="@+id/myTextView8"57 android:textSize="18px"58 android:layout_width="fill_parent"59 android:layout_height="wrap_content"60 android:text="@string/myTextView8"/61 TextView62 android:id="@+id/myTextView9"63 android:textSize="18px"64 android:layout_width="fill_parent"65 android:layout_height="wrap_content"66 android:text="@string/myTextView9"/67 TextView详细说明各传感器调用方式,并附加详细的代码68 android:id="@+id/myTextView10"69 android:textSize="18px"70 android:layout_width="fill_parent"71 android:layout_height="wrap_content"72 android:text="@string/myTextView10"/73 TextView74 android:id="@+id/myTextView11"75 android:textSize="18px"76 android:layout_width="fill_parent"77 android:layout_height="wrap_content"78 android:text="@string/myTextView11"/79/LinearLayout80更改res/values/strings.xml为如下内容:***-********-**********01 ?xml version="1.0" encoding="utf-8"?02resources03 string name="hello"templator!/string04 string name="app_name"templator/string05 string name="title"Sigma Sensors/string06 string name="myTextView1"Current Temprature:/string07 string name="myTextView2"Current Magnetic x:/string08 string name="myTextView3"Current Magnetic y:/string09 string name="myTextView4"Current Magnetic z:/string10 string name="myTextView5"Current Accelero x:/string11 string name="myTextView6"Current Accelero y:/string12 string name="myTextView7"Current Accelero z:/string13 string name="myTextView8"Current Oraenttation x:/string14 string name="myTextView9"Current Oraenttation y:/string15 string name="myTextView10"Current Oraenttation z:/string16 string name="myTextView11"Current Light:/string。
如何使用Android的传感器和手势识别进行应用开发

Android是目前最流行的移动操作系统之一,拥有众多开发者和用户。
借助Android的传感器和手势识别功能,开发者可以为用户提供更加智能、便捷的应用。
本文将探讨如何利用Android的传感器和手势识别进行应用开发。
一、传感器的作用和种类传感器是Android设备的重要组成部分,它可以感知设备的环境变化,如重力、加速度、陀螺仪等。
在应用开发中,利用传感器可以获取设备的姿态、位置、运动状态等信息,从而实现更加智能的交互体验。
Android设备的传感器种类繁多,常见的有加速度传感器、陀螺仪传感器、磁力计传感器、光线传感器等。
每种传感器都有其特定的用途和应用场景。
例如,加速度传感器可以用于检测设备的移动加速度,陀螺仪传感器可以用于获取设备的旋转角度。
二、传感器在应用开发中的应用1. 自动旋转屏幕Android设备通常都有自动旋转屏幕的功能,这是通过利用陀螺仪传感器实现的。
在应用开发中,可以设置屏幕的方向为自动,当用户将设备转至不同的方向时,屏幕会相应地旋转。
这样可以更好地适应用户的使用习惯,提供更好的用户体验。
2. 计步器应用利用加速度传感器,可以实现计步器应用。
通过检测设备在X、Y、Z轴上的加速度变化,统计用户的步数。
在应用中可以显示当前步数、消耗的卡路里等相关信息,帮助用户进行健康管理。
3. 方向指引应用磁力计传感器和加速度传感器可以结合使用,实现方向指引应用。
通过检测地球磁场的强度和设备的姿态信息,可以准确计算出设备的方向。
在应用中可以显示设备当前的朝向,帮助用户进行导航、定位等操作。
三、手势识别的原理和应用手势识别是一种通过检测和分析用户手指在触摸屏上的滑动、点击等动作,从而识别用户意图的技术。
在Android设备上,可以利用手势识别功能实现更加直观、友好的应用交互。
1. 手势密码锁手势密码锁是一种常见的安全锁屏方式,可以利用手势识别功能实现。
用户可以在屏幕上滑动手指绘制特定的图案,作为解锁方式。
如何使用Android的传感器和AR技术进行增强现实应用开发(二)

Android的传感器和增强现实(AR)技术结合,为应用开发带来了无尽的可能性。
传感器可以感知现实世界的各种物理量,而AR技术则可以将虚拟对象叠加在现实世界中,使用户获得全新的交互体验。
本文将介绍如何利用Android的传感器和AR技术进行增强现实应用开发。
一、传感器技术在增强现实应用中的应用1.加速度传感器加速度传感器可以感知设备在各个方向上的加速度变化。
在增强现实应用中,可以利用加速度传感器来感知用户的动作,从而触发相应的虚拟对象的互动。
例如,在一个摆球游戏中,当用户摇动手机时,通过加速度传感器可以感知到摇动的力度和方向,从而控制虚拟球的移动。
这样用户可以通过手持手机的方式来与虚拟球进行互动,增加了游戏的乐趣和真实感。
2.陀螺仪传感器陀螺仪传感器可以感知设备的旋转角速度。
在增强现实应用中,可以利用陀螺仪传感器来感知用户的旋转动作,从而更加精确地控制虚拟对象的位置和角度。
例如,在一个AR导航应用中,用户可以通过旋转手机的方式来调整地图的角度和放大缩小的比例。
利用陀螺仪传感器可以实时感知用户手机的旋转动作,从而实现地图的平滑旋转和缩放,提供更好的导航体验。
二、AR技术在增强现实应用中的应用1.图像识别AR技术中的图像识别是一种将现实世界中的图像与虚拟对象进行关联的技术。
通过识别现实世界中的特定图像,可以触发相应的虚拟对象的显示和互动。
例如,在一个博物馆AR导览应用中,用户可以通过手机对博物馆中的某个展品进行拍照,应用会自动识别出展品,并显示相关的信息和互动界面。
这样用户可以通过手机来获取更多关于展品的信息,增加了参观的乐趣和知识的获取。
2.位置追踪AR技术中的位置追踪是一种通过感知设备在现实世界中的位置和方向来确定虚拟对象的位置和角度的技术。
通过位置追踪,可以使虚拟对象与现实世界保持一致的位置和角度,提供更加真实的AR体验。
例如,在一个AR游戏中,用户可以通过手机在现实世界中追踪到虚拟怪物的位置,并通过位置追踪技术使得虚拟怪物在现实世界中随着用户移动而移动。
Android应用之加速度传感器

AndroidManifest.xml---分解1
• <manifest xmlns:android="/apk/res/and roid" • /*定义android命名空间,一般为 /apk/res/android,这样使得 Android中各种标准属性能在文件中使用,提供了大部分 元素中的数据。*/ • package="com.example.gravity" • /*指定本应用内java主程序包的包名,它也是一个应用进 程的默认名称*/ • android:versionCode="1" • /*是给设备程序识别版本(升级)用的必须是一个interger值 代表app更新过多少次,比如第一版一般为1,之后若要更 新版本就设置为2……*/ • android:versionName="1.0" >/*这个名称是给用户看的, 可以将你的APP版本号设置为1.0版,后续更新版本设置 为1.1……*/
/* 第一个参数为Listener实例,第二个参数为想接收 的传感器,第三个参数为接收频度*/
销毁
mSensorManager.unregisterListener(this);
/*来销毁一个传感器*/
动作处理过程
5.3加速度传感器的基本认识
• 5.3.1通过手机加速度传感器获取加速度 • 5.3.2通过手机加速度传感器获取加速度变化曲线
传感器事件
• 1)加速度传感器元件焊到手机中供软件开发过程师使用。在编写 android程序时,需要注册加速度传感器。FrameworkAPI对加速度输 出进行封装,提供一个传感器类,我们就根据当前的传感器类型获得 需要的值。因为传感器的值是频率性的,即每固定毫秒返回一个值。 所以我们需要一个触发机制,要用事件监听。 • 2)当加速度传感器监测到手机加速度变化的时候,就会产生一个传 感器事件 • 3)传感器事件也是一个对象 • 4)应用程序从传感器事件对象获取这时刻的手机加速度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本讲内容:Android传感器编程入门,分别包括加速度传感器(accelerometer),陀螺仪(gyroscope),环境光照传感器(light),磁力传感器(magnetic field),方向传感器(orientation),压力传感器(pressure),距离传感器(proximity)和温度传感器(temperature)一、前言我很喜欢电脑,可是笔记本还是太大,笔记本电脑再小还是要弄个小包背起来的,智能手机则不同,它完全就是一个手机,可以随意装在一个口袋里随身携带。
因此我在2002年左右时最喜欢玩装备是Dell的PDA,2007年的时候最喜欢玩的是N73,而在2010年最喜欢玩的则是Milestone。
眼见着手机的功能越来越强,时至今日智能手机甚至在某些方面已经强过了台式机和笔记本。
本节课讲的就是智能手机强过台式机和笔记本的地方:传感器。
2008年的时候我很喜欢我的小白笔记本Macbook,喜欢玩它的一个小软件,一拍桌子,笔记本感受到了震动,它就转换了一个桌面出来,这让我像个小孩子一样没事就拍拍桌子。
这一功能这得益于苹果笔记本内置有传感器。
我不知道iPhone手机是不是第一个把各种各样的传感器运用在手机上的,不过我知道iPhone是把传感器运用在手机上最成功的第一个。
随后的Android系统也内置了大量的传感器,这让Android系统手机和普通的诺基亚智能机和Windows CE智能机相比牛气了许多,在拥有了Milestone之后,我的N73就被仍在抽屉的角落里了。
从Android1.5开始,系统内置了对多达八种传感器的支持,他们分别是:加速度传感器(accelerometer),陀螺仪(gyroscope),环境光照传感器(light),磁力传感器(magnetic field),方向传感器(orientation),压力传感器(pressure),距离传感器(proximity)和温度传感器(temperature)。
利用这些传感器我们可以制作出各种有趣的应用程序和游戏。
譬如在口袋里晃一晃手机,手机就开始神不知鬼不觉的录音,不要着急这个很容易做,我们在本文的结尾就一起制作这个小应用。
本讲的学习方式还是在实战中学习,需要提醒的是模拟器中无法模拟传感器,因此你需要准备一款Android真机才能运行本讲的例子。
二、实例:手机传感器清单我们还是先看程序后解释,1、创建一个项目 Lesson37_HelloSensor , 主Activity名字叫mainActivity.java2、UI布局文件main.xml的内容如下:view sourceprint?1 <?xml version="1.0"encoding="utf-8"?>2<LINEARLAYOUTxmlns:android="/apk/res/android "android:orientation ="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">3 <TEXTVIEW android:layout_width="fill_parent"android:layout_height="wrap_conte nt"android:id="@+id/TextView01"android:text=""/>4 </LINEARLAYOUT>3、mainActivity.java 的内容如下:view sourceprint?1 packagebasic.android.lesson37; 023 importjava.util.List; 045importandroid.app.Activity; 06importandroid.content.Context; 07importandroid.hardware.Sensor; 08importandroid.hardware.SensorManager; 09importandroid.os.Bundle; 10 importandroid.widget.TextView; 1112publicclassMainActivity extendsActivity {1314/** Called when the activity is first created. */ 15@Override16publicvoidonCreate(Bundle savedInstanceState) { 17super.onCreate(savedInstanceState);18setContentView(yout.main);192//准备显示信息的UI组建2 1 finalTextView tx1 = (TextView) findViewById(R.id.TextView01);2223//从系统服务中获得传感器管理器2 4 SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);2526//从传感器管理器中获得全部的传感器列表27List<SENSOR> allSensors = sm.getSensorList(Sensor.TYPE_ALL); 2829//显示有多少个传感器3 0 tx1.setText("经检测该手机有"+ allSensors.size() + "个传感器,他们分别是:\n");313 //显示每个传感器的具体信息233for(Sensor s : allSensors) { 343 5 String tempString = "\n"+ " 设备名称:"+ s.getName() + "\n"+ " 设备版本:"+ s.getVersion() + "\n"+ " 供应商:"36+ s.getVendor() + "\n"; 3738switch(s.getType()) {39caseSensor.TYPE_ACCELEROMETER:4 0 tx1.setText(tx1.getText().toString() + s.getType() + " 加速度传感器accelerometer"+ tempString);41break;42caseSensor.TYPE_GYROSCOPE:4 3 tx1.setText(tx1.getText().toString() + s.getType() + " 陀螺仪传感器gyroscope"+ tempString);44break;45caseSensor.TYPE_LIGHT:4 6 tx1.setText(tx1.getText().toString() + s.getType() + " 环境光线传感器light"+ tempString);47break;48caseSensor.TYPE_MAGNETIC_FIELD:4 9 tx1.setText(tx1.getText().toString() + s.getType() + " 电磁场传感器magnetic field"+ tempString);5break;51caseSensor.TYPE_ORIENTATION:5 2 tx1.setText(tx1.getText().toString() + s.getType() + " 方向传感器orientation"+ tempString);53break;54caseSensor.TYPE_PRESSURE:5 5 tx1.setText(tx1.getText().toString() + s.getType() + " 压力传感器pressure"+ tempString);56break;57caseSensor.TYPE_PROXIMITY:5 8 tx1.setText(tx1.getText().toString() + s.getType() + " 距离传感器proximity"+ tempString);59break;6caseSensor.TYPE_TEMPERATURE:6 1 tx1.setText(tx1.getText().toString() + s.getType() + " 温度传感器temperature"+ tempString);62break; 63default:6 4 tx1.setText(tx1.getText().toString() + s.getType() + " 未知传感器"+ tempString);65break;66}67}6869}7}</SENSOR>4、连接真机Milestone,编译并运行程序,显示结果如下:5、结合上面的程序我们做一些解释。
1.Android所有的传感器都归传感器管理器SensorManager 管理,获取传感器管理器的方法很简单:String service_name = Context.SENSOR_SERVICE;SensorManager sensorManager =(SensorManager)getSystemService(service_name);2.现阶段Android支持的传感器有8种,它们分别是:传感器类型常量内部整数值中文名称Sensor.TYPE_ACCELEROMETER1加速度传感器Sensor.TYPE_MAGNETIC_FIELD2磁力传感器Sensor.TYPE_ORIENTATION 3方向传感器Sensor.TYPE_GYROSCOPE 4陀螺仪传感器Sensor.TYPE_LIGHT 5环境光照传感器Sensor.TYPE_PRESSURE 6压力传感器Sensor.TYPE_TEMPERATURE 7温度传感器Sensor.TYPE_PROXIMITY 8距离传感器3.从传感器管理器中获取其中某个或者某些传感器的方法有如下三种:第一种:获取某种传感器的默认传感器Sensor defaultGyroscope =sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);第二种:获取某种传感器的列表List<Sensor> pressureSensors =sensorManager.getSensorList(Sensor.TYPE_PRESSURE);第三种:获取所有传感器的列表,我们这个例子就用的第三种List<Sensor> allSensors =sensorManager.getSensorList(Sensor.TYPE_ALL);4.对于某一个传感器,它的一些具体信息的获取方法可以见下表:方法描述getMaximumRange()最大取值范围getName()设备名称getPower()功率getResolution()精度getType()传感器类型getVentor()设备供应商getVersion()设备版本号三、实例:窈窈录音器通过上面的例子我们学会了如何获得某种类型的传感器,下面我通过一个实例来学会如何使用某一个类型的传感器。