Android 传感器(Sensor)API教程 (一) 常用方法简介
分享地址:http://www.androidegg.com/portal.php?mod=view&aid=578
1.1 序言 ?
?【Android蛋蛋网】在这一章我们主要针对Android的传感器(Sensor)进行说明。如果说Java的程序和硬件有些远的感觉,那么可以说传感器距离硬件很近。传感器(Sensor)听起来似乎感觉很难,其实它并不是很难。做起来并很有意思的,我相信,通过我对传感器的介绍你会对它感兴趣的,应为你可以切身体会到它的存在。
1.2 传感器(Sensor)是什么?
??? 传感器是能标识温度,加速度等等物理现象的转换电子信号的机器。Android SDK,在移动设备中提供了各种各样的传感器的API。那么,本章的例程,在模拟器中不能使用,这点请大家注意。需要在实际的手机上测试才能体现。这里我就不进行详细进行说明如何连接手机进行运行程序了,在本网站 【Android蛋蛋网】有对应的介绍,请读者自己参照。
1.3? 传感器(Sensor)关联的类(Class)和接口(Interface)
???? 首先,我们对Android SDK提供的传感器关联的类和接口进行介绍。
1.3.1? android.hardware.Sensor类
?? Sensor类,是管理各种传感器的共同属性(名字,版本等等)的类。
●主要的常量
???? 在Sensor类,能使用的传感器的种类通过常量来定义的(表1-1)。但是根据硬件,传感器搭载是任意的。比如现在市场销售的(Dev Phone,HTC Dream)实际确认有
TYPE_ACCELEROMETER,
TYPE_ORIENTATION,
TYPE_MAGNETIC_FIELD,
TYPE_TEMPERATURE
四种类别。
表1-1 传感器的种类
????? SensorEventListener listener,
????? Sensor sensor,
????? int rate)
登录被指定反应速度的监听器。反应速度的指定,使用前面的(表1-3)的SENSOR_DELAY系列常量public void unregisterListener(SensorEventListener listener)
图1-1? 传感器的信息取得例程
AndroidEggSensorActivity.java
package androidegg.stu.sensor;
import java.util.List;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
public class AndroidEggSensorActivity extends Activity implements SensorEventListener{
??? /** Called when the activity is first created. */
??? //SensorManager instance
??? private SensorManager sensorManager;
??? @Override
??? public void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? //get SensorManager instance
??????? sensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE);
??????? setContentView(R.layout.main);
??? }
???
??? @Override
??? protected void onResume(){
??? ??? super.onResume();
??? ??? List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
??? ??? LinearLayout layout = new LinearLayout(this);
??? ??? layout.setOrientation(LinearLayout.VERTICAL);
??? ??? TextView tv;
??? ??? for (Sensor s:sensors){
??? ??? ??? tv = new TextView(this);
??? ??? ??? tv.setText(s.getName());
??? ??? ??? layout.addView(tv,new LinearLayout.LayoutParams(
??? ??? ??? ??? ??? LinearLayout.LayoutParams.FILL_PARENT,
??? ??? ??? ??? ??? LinearLayout.LayoutParams.WRAP_CONTENT));
??? ??? }
??? ??? setContentView(layout);
??? }
??? @Override
??? public void onAccuracyChanged(Sensor sensor, int accuracy) {
??? ??? // TODO Auto-generated method stub
??? ???
??? }
??? @Override
??? public void onSensorChanged(SensorEvent event) {
??? ??? // TODO Auto-generated method stub
??? ???
??? }
}
重要点如下所示
1 在onCreate 方法中取得SensorManager的Instance
2 在onResume 方法中取得传感器的名字
