在Android 2.3中新增了3个感应器,对于Android平台的开发我们通过感应器可以发挥想象设计出一些很实用的软件。下面就一起看下目前API11个感应器分别是什么吧。
1. ACCELEROMETER 加速,描述加速度的。
2.GRAVITY 重力,这个在大家都知道。
3.GYROSCOPE 陀螺仪,对于物体跌落检测更强大些,开发游戏少了它会有点遗憾的,API Level 9新增的类型。
4. LIGHT 光线感应器,很多Android手机的屏幕亮度是根据这个感应器的数组自动调节的。
5. LINEAR_ACCELERATION 线性加速器,API Level 9新增的。
6. MAGNETIC_FIELD 磁极感应器。
7. ORIENTATION 方向感应器。
8. PRESSURE 压力感应器。
9. PROXIMITY 距离感应器,对于通话后关闭屏幕背光很有用。
10. ROTATION_VECTOR 旋转向量,Android 2.3新增的,如果我们过去处理图像会发现这个还是很有用的,不过这里还是对游戏开发起到辅助。
11. TEMPERATURE 温度感应器,可以获取手机的内部温度,不过和周边的有些差距,毕竟手机内部一般温度比较高。
Java代码:
package com.HelloSensor;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
public class HelloSensor extends Activity {
Sensor sensor ;
private float x, y, z;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//准备显示信息的UI组建
final TextView tx1 = (TextView) findViewById(R.id.TextView01);
//从系统服务中获得传感器管理器
SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//从传感器管理器中获得全部的传感器列表
List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
//显示有多少个传感器
tx1.setText("经检测该手机有" + allSensors.size() + "个传感器,他们分别是:\n");
//显示每个传感器的具体信息
for (Sensor s : allSensors) {
String tempString = "\n" + " 设备名称:" + s.getName() + "\n" + " 设备版本:" + s.getVersion() + "\n" + " 供应商:"+ s.getVendor() + "\n";
switch (s.getType()) {
case Sensor.TYPE_ACCELEROMETER:
tx1.setText(tx1.getText().toString() + s.getType() + " 加速度传感器accelerometer" + tempString);
break;
case Sensor.TYPE_GRAVITY:
tx1.setText(tx1.getText().toString() + s.getType() + " 重力传感器gravity API 9" + tempString);
break;
case Sensor.TYPE_GYROSCOPE:
tx1.setText(tx1.getText().toString() + s.getType() + " 陀螺仪传感器gyroscope" + tempString);
break;
case Sensor.TYPE_LIGHT:
tx1.setText(tx1.getText().toString() + s.getType() + " 环境光线传感器light" + tempString);
break;
case Sensor.TYPE_LINEAR_ACCELERATION:
tx1.setText(tx1.getText().toString() + s.getType() + " 线性加速器LINEAR_ACCELERATION API9" + tempString);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
tx1.setText(tx1.getText().toString() + s.getType() + " 电磁场传感器magnetic field" + tempString);
break;
case Sensor.TYPE_ORIENTATION:
tx1.setText(tx1.getText().toString() + s.getType() + " 方向传感器orientation" + tempString);
break;
case Sensor.TYPE_PRESSURE:
tx1.setText(tx1.getText().toString() + s.getType() + " 压力传感器pressure" + tempString);
break;
case Sensor.TYPE_PROXIMITY:
tx1.setText(tx1.getText().toString() + s.getType() + " 距离传感器proximity" + tempString);
break;
case Sensor.TYPE_ROTATION_VECTOR:
tx1.setText(tx1.getText().toString() + s.getType() + " 旋转向量ROTATION" + tempString);
break;
case Sensor.TYPE_TEMPERATURE:
tx1.setText(tx1.getText().toString() + s.getType() + " 温度传感器temperature" + tempString);
break;
default:
tx1.setText(tx1.getText().toString() + s.getType() + " 未知传感器" + tempString);
break;
}
}
//在title上显示重力传感器的变化
sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
SensorEventListener lsn = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
x = e.values[SensorManager.DATA_X];
y = e.values[SensorManager.DATA_Y];
z = e.values[SensorManager.DATA_Z];
setTitle("x=" + (int) x + "," + "y=" + (int) y + "," + "z="+ (int) z);
}
public void onAccuracyChanged(Sensor s, int accuracy) {
}
};
// 注册listener,第三个参数是检测的精确度
sm.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}
相关推荐
可以感应手机和人体距离,在脸部靠近手机后,屏幕黑掉,脸部离开的时候,屏幕点亮的功能,已经测试可以正常运行。
博客附码:http://blog.csdn.net/gogler/article/details/7032009 用于收集android感应器数据的程序,附带一个比较完整的文件操作类。
雨松MOMO带你做游戏 Android游戏开发之小球重力感应源码 欢迎大家下载阅读。
第2篇android典型应用与实战重点介绍了android开发中的网络应用、图形应用、多媒体应用、感应器应用、地图服务应用、通信服务及设备控制等,最后通过一个网上购书应用系统的开发,展示了使用android进行实际开发的...
结合实际案例, 介绍了在程序中注册传感器监听器对手机的加速度变化进行感应的方法,以及使用Intent 在Activity 与Service 之间进行通信, 以及对Android 平台下的嵌入式数据库SQLite进行操作的技巧,完成计步功能~
基于android平台开发的重力感应器应用程序,代码简单。是完整的项目。
本文实例讲述了Android基于Sensor感应器获取重力感应加速度的方法。分享给大家供大家参考,具体如下: FETC项目指导老师提出了新的需求,想要在游戏地图中表现出用户用户当期移动的方向,再用GPS的话显然很不靠谱,...
传感器Sensor是一系列感应器的总称,是Android设备用来感知周围环境和运动信息的工具。因为具体的感应信息依赖于相关硬件,所以虽然Android定义了众多感应器,但是不是所有的Android手机或平板都能支持这么多的感应...
这7个应用是笔者在学习以及进行实际项目开发时所写的代码,涉及Android应用开发的方方面面,包括数据存储、桌面小插件、感应器、蓝牙通信、2D绘图以及自动服务等。资源截图: 资源太大,传百度网盘了,链接在附件中...
1、实验目的:初步实现手机对家居的远程控制...2、实验要求:编写一个Android的可运行apk文件,Arduino的可运行文件,并组装调试好全套的设计,实现手机控制小灯的卡关,电机的正反转,热感应器的感应信息回馈的接收。
作者: 黄宇健 / 刘宏韬 出版社: 铁道出版社 ...这7个应用是笔者在学习以及进行实际项目开发时所写的代码,涉及Android应用开发的方方面面,包括数据存储、桌面小插件、感应器、蓝牙通信、2D绘图以及自动服务等。
《Android项目开发范例大全》包含8个章节,除第一章...这7个应用是笔者在学习以及进行实际项目开发时所写的代码,涉及Android应用开发的方方面面,包括数据存储、桌面小插件、感应器、蓝牙通信、2D绘图以及自动服务等。
第1章 Android基础入门 ...第5章 “BlueControl”——蓝牙通信与感应器服务 第6章 “快速启动”——动态小浮窗 第7章 “手机终端”——手机自动服务和语音控制 第8章 “Let's race”——网络通信与地图服务
当然还有一些游戏实现惯用方法,比如地图编辑器,在Android OpenGL如何使用MD2文件,个部分讲述下Android游戏开发的过程最终实现一个比较完整的游戏引擎。相信大家都清楚Android Market下载量比较好的都是游戏,未来...
第1章 Android基础入门...第5章 “BlueControl”——蓝牙通信与感应器服务 第6章 “快速启动”——动态小浮窗 第7章 “手机终端”——手机自动服务和语音控制 第8章 “Let's race”——网络通信与地图服务 代码下载
1.2.1创建第一个Android项目 1.2.2AndroidManifest文件 1.2.3资源文件夹 1.2.4R.java 1.2.5程序的实现原理 1.2.6Activity生命周期 1.3Android基本控件 …… 第2章“天天向上”——桌面小插件与数据库存储的学习 第3...
共两个目标文件,检测手机摇晃的监听器(设置重力感应监听器感应获得变化数据)。 6、Android 音乐快剪2.2源码(含文档) 共14个目标文件,具备录音、编辑音频文件……等。 7、android_gps_wifi_基站_定位集合 如...
《Android项目开发范例大全》包含8个章节,除第一章...这7个应用是笔者在学习以及进行实际项目开发时所写的代码,涉及Android应用开发的方方面面,包括数据存储、桌面小插件、感应器、蓝牙通信、2D绘图以及自动服务等
安卓重力感应的计步器源码
2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity 堆栈 18 2.1.6、Intent对象调用...