没有合适的资源?快使用搜索试试~ 我知道了~
Android传感器编程入门
资源详情
资源评论
资源推荐
{ Android学习指南 }
适于自学的Andorid学习指南,基于Android 2.2、2.3.3及3.0版本讲解
《Android学习指南》目录
RSS
第三十七讲:Android传感器编程入门
25 Nov
本讲内容: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.java
2、UI布局文件main.xml的内容如下:
3、mainActivity.java的内容如下:
1 <?xml version="1.0" encoding="utf-8"?>
2 <linearlayout android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
3 <textview android:layout_height="wrap_content"
android:layout_width="fill_parent" android:text=""
android:id="@+id/TextView01">
4 </textview></linearlayout>
01 package basic.android.lesson37;
02
03 import java.util.List;
04
05 import android.app.Activity;
06 import android.content.Context;
07 import android.hardware.Sensor;
08 import android.hardware.SensorManager;
09 import android.os.Bundle;
10 import android.widget.TextView;
11
12 public class MainActivity extends Activity {
13
14 /** Called when the activity is first created. */
15 @Override
16 public void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 setContentView(R.layout.main);
19
20 //准备显示信息的UI组建
21 final TextView tx1 = (TextView)
findViewById(R.id.TextView01);
22
23 //从系统服务中获得传感器管理器
24 SensorManager sm = (SensorManager)
getSystemService(Context.SENSOR_SERVICE);
25
26 //从传感器管理器中获得全部的传感器列表
27 List<sensor> allSensors =
sm.getSensorList(Sensor.TYPE_ALL);
28
29 //显示有多少个传感器
30 tx1.setText("经检测该手机有" + allSensors.size() + "个传
感器,他们分别是:\n");
31
4、连接真机Milestone,编译并运行程序,显示结果如下:
32 //显示每个传感器的具体信息
33 for (Sensor s : allSensors) {
34
35 String tempString = "\n" + " 设备名称:" +
s.getName() + "\n" + " 设备版本:" + s.getVersion() + "\n" +
" 供应商:"
36 + s.getVendor() + "\n";
37
38 switch (s.getType()) {
39 case Sensor.TYPE_ACCELEROMETER:
40 tx1.setText(tx1.getText().toString() +
s.getType() + " 加速度传感器accelerometer" + tempString);
41 break;
42 case Sensor.TYPE_GYROSCOPE:
43 tx1.setText(tx1.getText().toString() +
s.getType() + " 陀螺仪传感器gyroscope" + tempString);
44 break;
45 case Sensor.TYPE_LIGHT:
46 tx1.setText(tx1.getText().toString() +
s.getType() + " 环境光线传感器light" + tempString);
47 break;
48 case Sensor.TYPE_MAGNETIC_FIELD:
49 tx1.setText(tx1.getText().toString() +
s.getType() + " 电磁场传感器magnetic field" + tempString);
50 break;
51 case Sensor.TYPE_ORIENTATION:
52 tx1.setText(tx1.getText().toString() +
s.getType() + " 方向传感器orientation" + tempString);
53 break;
54 case Sensor.TYPE_PRESSURE:
55 tx1.setText(tx1.getText().toString() +
s.getType() + " 压力传感器pressure" + tempString);
56 break;
57 case Sensor.TYPE_PROXIMITY:
58 tx1.setText(tx1.getText().toString() +
s.getType() + " 距离传感器proximity" + tempString);
59 break;
60 case Sensor.TYPE_TEMPERATURE:
61 tx1.setText(tx1.getText().toString() +
s.getType() + " 温度传感器temperature" + tempString);
62 break;
63 default:
64 tx1.setText(tx1.getText().toString() +
s.getType() + " 未知传感器" + tempString);
65 break;
66 }
67 }
68
69 }
70 }</sensor>
剩余14页未读,继续阅读
abcyyy
- 粉丝: 3
- 资源: 72
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0