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)应用程序从传感器事件对象获取这时刻的手机加速度
Android操作系统11种传感器介绍
在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用。
#define SENSOR_TYPE_ACCELEROMETER 1 //加速度#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力#define SENSOR_TYPE_ORIENTATION 3 //方向#define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪#define SENSOR_TYPE_LIGHT 5 //光线感应#define SENSOR_TYPE_PRESSURE 6 //压力#define SENSOR_TYPE_TEMPERATURE 7 //温度#define SENSOR_TYPE_PROXIMITY 8 //接近#define SENSOR_TYPE_GRAVITY 9 //重力#define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度#define SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量我们依次看看这十一种传感器1 加速度传感器加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。
该数值包含地心引力的影响,单位是m/s^2。
将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81。
将手机朝下放在桌面上,z轴为-9.81。
将手机向左倾斜,x轴为正值。
将手机向右倾斜,x轴为负值。
将手机向上倾斜,y轴为负值。
将手机向下倾斜,y轴为正值。
加速度传感器可能是最为成熟的一种mems产品,市场上的加速度传感器种类很多。
手机中常用的加速度传感器有BOSCH(博世)的BMA系列,AMK的897X系列,ST 的LIS3X系列等。
这些传感器一般提供±2G至±16G的加速度测量范围,采用I2C或SPI接口和MCU相连,数据精度小于16bit。
关于安卓加速传感器xyz值
7. 自動偵測手機方向
要讓手機自動旋轉的話,只要在Androensor就好,可是要讓Activity偵測到方向改變的話,要去抓Activity的Display:
临近性: SensorManager.SENSOR_PROXIMITY
温度: SensorManager.SENSOR_TEMPERATURE
采样率:最快、游戏、普通、用户界面。当应用程序请求特定的采样率时,其实只是对Android传感器子系统的一个提示,或者一个建议。不保证特定的采样率可用。
手机屏幕竖直放置时, z= 0
手机屏幕向下水平放置时,z= 10
3. 当x变为+5时, 手机画面切换为竖向
当x变为-5时, 手机画面切换为横向
4. Android传感器相关的类在SDK1.1和SDK1.5中不一样,因此实现代码也不一样
5. Android传感器类型分为:方向、加速表、光线、磁场、临近性、温度等
手机屏幕向上水平放置时: (x,y,z) = (0, 0, -10) 而不是 (0, 0, 10)
当手机顶部抬起时: y减小,且为负值
当手机底部抬起时: y增加,且为正值
当手机右侧抬起时: x减小,且为负值
当手机左侧抬起时: x增加,且为正值
2. Accelrator的z轴的变化:
手机屏幕向上水平放置时,z= -10
Android传感器编程经验总结
Android手机操作系统是一款开源的操作系统,可以让用户灵活的进行编程来满足自己的各种需求。那么在学习这一系统之前,先让我们一起来了解一下Android传感器的相关应用。这两天结合手机研究了下Android传感器编程,现做一个小结:1. Accelrator的x,y,z轴的正负向:
如何使用Android的传感器和AR技术进行增强现实应用开发
如何使用Android的传感器和AR技术进行增强现实应用开发在科技的快速发展下,增强现实(Augmented Reality,简称AR)成为了一个备受关注的领域。
AR技术通过在现实世界上叠加虚拟元素,将虚拟与真实相结合,为用户带来全新的视觉和交互体验。
而Android 作为全球最为普及的移动操作系统之一,提供了强大的传感器和开发工具,可以实现创造多样化的AR应用。
在本文中,我们将探讨如何利用Android的传感器和AR技术进行AR应用的开发。
首先,了解Android的传感器系统是非常重要的。
Android的传感器系统包括了多种传感器,如加速度计、陀螺仪、磁力计等,它们可以帮助我们获取设备的姿态、方向、位置等信息。
通过这些传感器,我们可以提取设备在三维空间中的运动数据,从而实现AR应用中的交互效果。
例如,我们可以利用加速度计和陀螺仪获取设备的旋转角度和加速度数据,进而实现类似于旋转和平移的动作。
其次,要了解AR技术的原理和实现方式。
AR技术有两种主要的实现方式,分别是基于标记的AR和基于位置的AR。
基于标记的AR通过在现实世界上贴上特定的标记来识别和定位虚拟物体,从而实现AR应用。
而基于位置的AR则是通过设备的定位功能,如GPS和传感器,来获取设备的位置信息,从而实现在现实世界上定位虚拟物体。
在Android上,我们可以利用其内置的图像识别功能,如ARCore (Android上的AR平台)提供的Image Recognition API,来实现基于标记的AR应用开发。
而对于基于位置的AR应用开发,则可以利用Android的定位功能和传感器,如GPS和加速度计,来获取设备的位置和方向信息。
接下来,我们可以通过结合传感器和AR技术,开发出一些有趣的AR应用。
例如,我们可以开发一个基于地图的AR导航应用。
通过获取设备的位置信息和方向信息,我们可以将虚拟的导航箭头放置在现实世界中的特定位置上,指引用户前进。
如何使用Android的传感器和物联网技术进行智能家居应用开发(五)
智能家居应用开发:Android传感器与物联网技术的结合随着科技的不断发展,我们的生活方式也在逐渐发生改变。
智能家居应用的出现,使得我们的家居生活变得更加便捷、舒适和高效。
而在智能家居应用的开发中,Android传感器和物联网技术的结合起着重要的作用。
本文将探讨如何利用Android传感器和物联网技术进行智能家居应用开发。
一、Android传感器技术的应用Android系统上集成了多种传感器,如加速度传感器、陀螺仪、磁力计等。
这些传感器能够感知周围环境的信息,并将这些信息传递给应用程序,从而实现各种智能家居应用的需求。
例如,我们可以通过加速度传感器来检测用户的摔倒,从而自动发送报警信息给用户的亲属或紧急联系人。
另外,通过磁力计和陀螺仪的数据,我们还可以实现一些与方向有关的功能,比如自动调节窗帘的开闭程度,根据阳光的角度来最大限度地利用自然光。
传感器技术的应用还可以结合人工智能技术,如利用机器学习算法对传感器数据进行分析和预测。
通过对用户的习惯行为进行学习和分析,智能家居应用可以自动调节家庭温度、光线亮度等,提供更加舒适的居住环境。
二、物联网技术的应用物联网技术是指将各种设备和传感器连接到互联网上,建立起设备间的通信网络。
通过物联网技术,智能家居应用可以实现设备间的互联互通,从而实现更加智能化和自动化的控制。
比如,我们可以将家庭中的灯光、空调、电视等设备与互联网连接起来,通过手机应用远程控制和监控这些设备。
当我们离开家时,可以通过手机应用关闭所有电器设备,从而提高能源利用效率。
而当我们快要到家时,可以通过手机应用提前打开空调,让家里变得温暖舒适。
物联网技术的应用还可以结合云计算技术,将各个设备上传的数据进行分析和处理,从而实现更加智能的控制策略。
例如,通过分析用户的用电习惯,智能家居应用可以根据用电峰值来优化家庭电力使用,实现节能减排的目标。
三、Android传感器与物联网技术的结合Android传感器和物联网技术的结合,可以实现更加智能和人性化的智能家居应用。
旋转向量传感器详解_Android传感器开发与智能设备案例实战_[共11页]
第14章 旋转向量传感器详解旋转向量传感器也被称为旋转矢量传感器,简称RV-sensor 。
旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。
本章将详细讲解在Android 设备中使用旋转向量传感器的基本知识,为读者步入本书后面知识的学习打下基础。
在Android 系统中,旋转向量传感器的值是TYPE_ROTATION_VECTOR ,旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。
对Android 旋转向量传感器的具体说明如表14-1所示。
表14-1Android 旋转向量传感器的具体说明传 感 器传感器事件数据 说 明测量单位SensorEvent.values[0]旋转向量沿x 轴的部分(x * sin(θ/2)) SensorEvent.values[1] 旋转向量沿y 轴的部分(y * sin(θ/2)) SensorEvent.values[2] 旋转向量沿z 轴的部分(z * sin(θ/2)) TYPE_ROTATION_VECTORSensorEvent.values[3]旋转向量的数值部分((cos(θ/2))1无 由表14-1可知,RV-sensor 能够输出如下所示的3个数据: x*sin(θ/2); y*sin(θ/2); z*sin(θ/2)。
则sin(theta/2)表示RV 的数量级,RV 的方向与轴旋转的方向相同,这样RV 的3个数值与cos(theta/2)组成一个四元组。
而RV 的数据没有单位,使用的坐标系与加速度相同。
例如下面的演示代码。
sensors_event_t.data[0] = x*sin(theta/2) sensors_event_t.data[1] = y*sin(theta/2) sensors_event_t.data[2] = z*sin(theta/2) sensors_event_t.data[3] = cos(theta/2)GV 、LA 和RV 的数值没有物理传感器可以直接给出,需要G-sensor 、O-sensor 和Gyro-sensor 经过算法计算后得出。
传感器(Sensor)实战案例_Android应用开发全程实录_[共4页]
Android应用开发全程实录346表12-2 Sensor类的主要方法方法处理内容public float getMaximumRange() 返回传感器的最大值public String getName() 返回传感器的名字public float getPower() 返回传感器的功率(mA毫安)public float getResolution() 返回传感器的精度public int getType() 返回传感器的类型public String getVentor() 返回Vendor名public int getVersion() 返回传感器的版本号2.SensorManager类的Instance取得例程SensorManager不能直接生成Instance。
SensorManager的Instance是通过Context类定义的getSystemService方法取得的,具体代码如下。
String service_Name = Context.SENSOR_SERVICE;SensorManager sensorManager = (SensorManager)getSystemService(service_Name);3.SensorListener 接口SensorListener是传感器应用程序的中心。
它包括两个必需方法。
OnSensorChanged(int sensor,float values[])方法在传感器值更改时调用。
该方法只对受此应用程序监视的传感器调用(更多内容见下文)。
该方法的参数包括:一个整数,指示更改的传感器;一个浮点值数组,表示传感器数据本身。
有些传感器只提供一个数据值,另一些则提供3个浮点值。
方向和加速表传感器都提供3个数据值。
当传感器的准确性更改时,将调用onAccuracyChanged(int sensor,int accuracy)方法。
如何使用Android的传感器和运动跟踪进行健康应用开发(三)
健康应用是近年来非常受欢迎的一类移动应用程序。
随着人们对健康意识的提高,他们越来越关注自身的健康状况,并希望能够通过移动应用来进行健康管理和追踪。
而对于开发健康应用的开发者来说,了解如何使用Android的传感器和运动跟踪功能是非常重要的技能。
本文将介绍如何利用Android的传感器和运动跟踪功能进行健康应用的开发。
第一部分:传感器的概述和应用在Android系统中,有各种各样的传感器可以用于获取手机和用户之间的交互信息。
比如加速度传感器,陀螺仪,磁力计等等。
这些传感器可以用于监测手机的姿态,位置和运动状态。
对于健康应用来说,最常用的传感器之一就是加速度传感器。
加速度传感器可以用于检测手机的运动和震动。
通过使用加速度传感器,我们可以计算用户走过的步数,检测用户的步态和姿势等等。
利用这些数据,我们可以开发出一系列功能丰富的健康应用,比如计步器,步行导航等等。
第二部分:健康应用的开发实例假设我们要开发一个简单的健康应用,用于记录用户每天的步数。
首先,我们需要获取加速度传感器的数据。
在Android系统中,我们可以使用SensorManager类来访问传感器。
通过调用SensorManager的getDefaultSensor()方法,我们可以获取到加速度传感器的实例。
一旦获取到传感器的实例,我们就可以通过注册一个SensorEventListener来监听传感器的数据变化。
在onSensorChanged()方法中,我们可以获取到传感器的测量值,并进行相应的处理。
比如我们可以计算用户走过的步数,通过监听传感器的震动事件来判断用户是否在散步等等。
除了加速度传感器之外,我们还可以结合其他传感器和功能来提供更全面的健康管理。
比如我们可以使用GPS定位功能来记录用户的运动轨迹,使用心率传感器来监测用户的心率变化等等。
通过结合不同的传感器和功能,我们可以开发出更加智能和个性化的健康应用。
第三部分:运动跟踪的实现和应用除了传感器之外,Android系统还提供了一种方便的运动跟踪功能,即通过使用Google Fit API来访问和保存用户的健身数据。
如何使用Android的传感器和车载设备进行智能交通应用开发(六)
现如今,智能交通系统已经成为城市管理的一项重要任务,而Android系统的普及也为智能交通应用的开发提供了更多可能性。
Android的传感器和车载设备的使用,使得智能交通应用的开发变得更加便捷和高效。
本文将讨论如何利用Android的传感器和车载设备进行智能交通应用开发。
一、利用Android传感器实现智能交通应用Android系统内置了多种传感器,包括加速度传感器、陀螺仪、磁力计等,这些传感器可以用于获取车辆和道路的状态信息,从而实现智能交通应用。
1. 利用加速度传感器实现车辆的加速度检测通过加速度传感器可以实时获取车辆的加速度信息,进而检测车辆的加速度变化,从而判断车辆的运动状态和行驶轨迹。
这对于车辆监控和行驶安全提供了有力的支持。
2. 利用陀螺仪和磁力计实现车辆的定位和导航陀螺仪和磁力计可以用于获取车辆的方向信息和姿态信息,通过结合GPS等定位工具,可以实现车辆的准确定位和导航。
这对于提高驾驶员的驾驶体验和路线规划非常重要。
3. 利用环境光传感器和接近传感器进行智能车灯控制通过环境光传感器和接近传感器可以实时检测车辆周围的光照和距离信息,从而智能控制车灯的亮度和开关。
这不仅能提高驾驶安全,还可以节约能源。
二、利用Android车载设备实现智能交通应用除了传感器,Android车载设备也为智能交通应用的开发提供了很多便利。
1. 利用车载摄像头实现交通监控车载摄像头可以安装在车辆上,通过连接到Android车载设备,可以实时获取车辆周围的交通状况。
这对于交通监控和事故预警非常有帮助,可以提高交通管理和安全性。
2. 利用车载显示屏实现导航和路况显示Android车载设备通常配备了大尺寸的显示屏,可以用于实时导航和路况显示。
结合GPS和地图API,可以提供准确的导航路线和实时的交通状况,帮助驾驶员选择最优路线。
3. 利用语音识别和语音合成实现驾驶员交互Android车载设备支持语音识别和语音合成技术,可以实现驾驶员与智能交通应用的语音交互。
Android移动开发详解 第11章 Android传感器开发
第11章 Android传感器开发
11.2 GPS应用
第11章 Android传感器开发
11.2.1 我的位置
➢ LocationManager
LocationManager为开发者提供了一系列方法来解决与GPS相关的问题,包括查询到上一个已知位置、注册或 注销来自某个 LocationProvider的周期性的位置更新,以及注册或注销在接近某个坐标时对一个已定义Intent的触发等 。
第11章 Android传感器开发
11.2.2 更新位置
➢ 位置检测更新与监听器实现
locationManager.requestLocationUpdates(provider, 0, 0, locationListener); private LocationListener locationListener = new LocationListener() {
第11章 Android传感器开发
11.1 传感器种类
➢GPS ➢动作传感器 ➢位置传感器 ➢环境传感器
第11章 Android传感器开发
11.1.1 GPS
➢GPS由三部分组成
(1) GPS卫星组成的空间部分 (2)若干地球站组成的控制部分 (3)普通用户手中的接收机
第11章 Android传感器开发
第11章 Android传感器开发
11.1.4 环境传感器
➢ Android中的环境传感器
Android平台提供了4个传感器,用于检测不同的外部环境。有以下四种: (1)湿度传感器,基于硬件的传感器,Android手机中少见。 (2)温度传感器,基于硬件的传感器,Android手机中少见。 (3)光线传感器,基于硬件的传感器,比较常见的传感器。 (4)压强传感器,基于硬件的传感器,Android手机中少见。
如何使用Android的传感器和VR技术进行虚拟现实应用开发(四)
虚拟现实(VR)技术是近年来信息技术领域的一大突破,它通过创建一个模拟的环境,让用户能够身临其境地感受到虚拟世界的沉浸式体验。
而在虚拟现实应用的开发中,Android的传感器和VR技术的结合发挥着重要的作用。
本文将探讨如何利用Android的传感器和VR 技术进行虚拟现实应用开发。
一、传感器的种类及其应用Android智能手机和平板电脑上搭载的传感器种类繁多,包括加速度计、陀螺仪、磁力计、光线传感器等。
这些传感器可以感知环境的各种参数,为虚拟现实应用提供重要的数据支持。
1. 加速度计加速度计是Android设备中最常见的传感器之一,它可以感知设备在三个轴上的加速度变化。
在虚拟现实应用开发中,加速度计常被用来检测用户的头部移动,实现从不同角度观察虚拟世界的效果。
2. 陀螺仪陀螺仪用于测量设备围绕三个轴的旋转速度。
在虚拟现实应用开发中,陀螺仪可以实时检测用户设备的旋转,从而在虚拟世界中使用户能够通过旋转设备改变视角,增强沉浸感。
3. 磁力计磁力计可以感知地球的磁场,用于确定设备的方向。
在虚拟现实应用开发中,磁力计通常与陀螺仪结合使用,可以实时监测用户设备的朝向,从而使虚拟世界与现实世界保持同步。
二、使用传感器和VR技术开发虚拟现实应用的步骤要使用Android的传感器和VR技术开发虚拟现实应用,首先需要明确开发的目标并确定所需的传感器。
然后,可以按照以下步骤进行开发:1. 设计虚拟世界首先,需要根据应用的需求设计虚拟世界的场景。
这包括选择合适的图形模型和纹理,以及确定用户在虚拟世界中的交互方式。
2. 读取传感器数据通过Android的传感器API,可以实时读取传感器数据。
根据应用需求,选择合适的传感器,获取相应的数据,如加速度、旋转速度等。
3. 数据处理与转换获得传感器数据后,需要进行数据处理和转换。
例如,根据加速度计的数据计算用户头部的移动距离和角度,根据陀螺仪的数据调整虚拟世界的视角等。
4. 渲染和展示虚拟世界利用VR技术,将上一步处理过的数据应用到虚拟世界中,通过头戴显示器或其他VR设备展示给用户。
如何使用Android的传感器和AR技术进行增强现实应用开发(一)
如何使用Android的传感器和AR技术进行增强现实应用开发引言随着移动技术的快速发展,增强现实(Augmented Reality,AR)应用在我们的日常生活中变得越来越常见。
AR技术可以将虚拟信息与现实世界融合在一起,提供更丰富、更实用的用户体验。
而Android 系统的传感器和AR技术相结合,为开发者提供了丰富的工具和功能,下面将介绍如何使用Android的传感器和AR技术进行增强现实应用开发。
传感器技术的应用Android手机内置了许多传感器,例如加速度计、陀螺仪、磁力计、相机等,这些传感器可以提供丰富的环境和用户信息,为AR应用开发提供了基础。
例如,在游戏应用中,我们可以利用加速度计和陀螺仪来跟踪用户的动作和姿态,实现虚拟角色在现实场景中的运动。
还可以利用磁力计来获取周围的磁场信息,结合地理定位技术,实现导航功能和增强现实地图。
AR技术的实现在Android系统中,AR技术的实现主要通过计算机视觉和图像识别来实现。
其中,计算机视觉算法可以通过对摄像头输入的图像进行分析和处理,找到图像中的特征点、平面和物体,从而实现对虚拟信息的定位和显示。
图像识别算法可以通过对摄像头输入的图像进行图案或标记的识别,从而实现对特定物体或场景的识别和追踪。
传感器和AR技术的结合传感器技术和AR技术的结合可以帮助开发者更准确地获取环境信息,为AR应用提供更好的交互和体验。
以增强现实游戏为例,传感器可以获取用户的动作和姿态,AR技术可以实现虚拟角色在现实场景中的表现,通过结合两者,用户可以通过自己的动作来控制虚拟角色的行动,增强了游戏的参与感和沉浸感。
AR应用的开发步骤1. 确定应用的需求和目标,明确要实现的功能和效果。
2. 选择适合的传感器和AR技术,根据应用的需求进行合理的选择和配置。
3. 使用Android开发平台提供的传感器API和AR库,获取传感器数据和实现AR效果。
4. 设计用户界面,根据应用的需求和目标,设计合理的交互和显示方式。
Android传感器的运用之ACCELEROMETER
Android传感器的运用之ACCELEROMETERAndroid中支持很多种传感器:比如加速度,重力的,光感,磁感等等。
在运用该API常用到的两个类和一个接口SensorManager:传感器管理类;Sensor:一个描述传感器的类;SensorEventListener:传感器事件监听类(SensorListener类已过期);一般运用步骤:1.通过上下文获取SensorManager的对象。
[java]view plaincopy1.Context.getSystemService(Context.Sensor_service);2.实例化一个你需要使用的sensor对象。
[java]view plaincopy1.Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);也可以通过getSensorList()来获取所有的传感器对象,返回一个list;3.实现传感器监听接口4.注册传感器5.反注册传感器代码例子都很简单简短。
以下附上我以前用到的一个关于加速度的传感器,我用来做摇晃事件监听;[java]view plaincopy1./**2. * 摇动检测器3. * @author Nono4. *5. */6.public class ShakeDetector implements SensorEventListener{7.private static final String TAG = ShakeDetector.class.getSimpleName();8.9.private static final double SHAKE_SHRESHOLD = 7000d;10.private Context mContext;11.private long lastTime ;12.private float last_x;13.private float last_y;14.private float last_z;15.16.private SensorManager sensorManager;17.private onShakeListener shakeListener;18./**19. * 构造20. * @param context21. */22.public ShakeDetector(Context context){23. mContext = context;24. sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);25. }26.27./**28. * 注册传感器29. */30.public boolean registerListener() {31.32.if (sensorManager != null) {33. Sensor sensor = sensorManager34. .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);35.if (sensor != null) {36.this.sensorManager.registerListener(this, sensor,37. SensorManager.SENSOR_DELAY_GAME);38. LogUtil.log(TAG, "registerListener: succeed!!");39.return true;40. }41. }42.return false;43. }44.45./**46. * 反注册传感器47. */48.public void unRegisterListener() {49.if (sensorManager != null)50. sensorManager.unregisterListener(this);51. }52.53.public void setOnShakeListener(onShakeListener listener){54. shakeListener = listener;55. }56.57.public void onSensorChanged(SensorEvent event) {58.//if (event.sensor.getType() == SensorManager.SENSOR_ACCELEROMETER){59.long curTime = ng.System.currentTimeMillis();60.if ((curTime - lastTime) > 10) {61.long diffTime = (curTime - lastTime);62. lastTime = curTime;63.float x = event.values[0];64.float y = event.values[1];65.float z = event.values[2];66.float speed = Math.abs(x + y + z - last_x - last_y - last_z)67. / diffTime * 10000;68.if (speed > SHAKE_SHRESHOLD) {69.// 检测到摇晃后执行的代码70. shakeListener.onShake();71. }72. last_x = x;73. last_y = y;74. last_z = z;75. }76.//}77. }78.79.public void onAccuracyChanged(Sensor sensor, int accuracy) {80.// TODO Auto-generated method stub81.82. }83.84./**85. *86. * @author Nono87. *88. */89.public interface onShakeListener{90.public void onShake();91. }92.93.}上面是自己实现的一个关于加速度的传感器类在Activity中实例化该类,并实现onShakeListener接口[java]view plaincopy1.@Override2.protected void onCreate(Bundle savedInstanceState) {3. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);4.super.onCreate(savedInstanceState);5. mContext = this;6. mShakeDetector = new ShakeDetector(mContext);7. mShakeDetector.setOnShakeListener(this);然后你可以在Activity的几个生命周期中实现它的注册和反注册。
- 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()设备版本号三、实例:窈窈录音器通过上面的例子我们学会了如何获得某种类型的传感器,下面我通过一个实例来学会如何使用某一个类型的传感器。