Android开发--传感器介绍
2013-02-04 15:41
351 查看
获取手机中的传感器的步骤为:
获取SensorManager对象
执行SensorManager对象的getDefaultSensor()方法获取Sensor对象,这里getDefaultSensor()方法要传递一个参数,指定具体的传感器类型
获取Sensor对象中的各种属性
下面给出获取手机内传感器的实现代码:
在知道怎么获取传感器之后,我们需要使用程序获取传感器的值,下面给出实例代码:
传感器有一系列的属性:
1、传感器的采样率
a) SENSOR_DELAY_NOMAL (200000微秒)
b) SENSOR_DELAY_UI (60000微秒)
c) SENSOR_DELAY_GAME (20000微秒)
d) SENSOR_DELAY_FASTEST (0微秒)
2、传感器的属性
a) 传感器的名称
b) 传感器制造商
c) 传感器功率
d) 传感器的resulotion
获取这些属性的方法也很简单,代码如下:
下面实现的这个实例实现了上述内容的综合:
实例的完整代码如下:
获取SensorManager对象
执行SensorManager对象的getDefaultSensor()方法获取Sensor对象,这里getDefaultSensor()方法要传递一个参数,指定具体的传感器类型
获取Sensor对象中的各种属性
下面给出获取手机内传感器的实现代码:
Log.d("BruceZhang", "以下是你的手机里的传感器:"); List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL); Log.d("BruceZhang", "--->"); for(Sensor sensor: sensors){ Log.d("BruceZhang", sensor.getName()); } //通过使用getDefaultSensor方法获得一个特定的传感器 // Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
在知道怎么获取传感器之后,我们需要使用程序获取传感器的值,下面给出实例代码:
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE); Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); sensorManager.registerListener(new SensorEventListener() { /* * SensorEvent event * 一旦传感器感知外界条件发生变化,就会把相应的数据传递给这个对象 * 一般会把这个方法放在onCreate里,不用手动的去获取 */ @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub float auc=event.accuracy; //这里的第一个元素代表的是光线的强度 float lux=event.values[0]; Log.d("BruceZhang", auc+""); Log.d("BruceZhang", lux+""); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } }, sensor, SensorManager.SENSOR_DELAY_NORMAL); //SensorManager.SENSOR_DELAY_NORMAL //这个参数就是设置传感器的采样率 }
传感器有一系列的属性:
1、传感器的采样率
a) SENSOR_DELAY_NOMAL (200000微秒)
b) SENSOR_DELAY_UI (60000微秒)
c) SENSOR_DELAY_GAME (20000微秒)
d) SENSOR_DELAY_FASTEST (0微秒)
2、传感器的属性
a) 传感器的名称
b) 传感器制造商
c) 传感器功率
d) 传感器的resulotion
获取这些属性的方法也很简单,代码如下:
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE); Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); sensorManager.registerListener(new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub //传感器的名字 String sensorName=event.sensor.getName(); //传感器制造商的名字 String sensorVendor=event.sensor.getVendor(); //传感器的分辨率,传感器所能识别的最小的精度是多少 float sensorRevolution=event.sensor.getResolution(); //传感器的功率 float sensorPower=event.sensor.getPower(); //传感器取得数据的时间是多少 double timeStamp=event.timestamp; //打印数据 Log.d("BruceZhang", sensorName+""); Log.d("BruceZhang", sensorVendor+""); Log.d("BruceZhang", sensorRevolution+""); Log.d("BruceZhang", sensorPower+""); Log.d("BruceZhang", timeStamp+""); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } }, sensor, SensorManager.SENSOR_DELAY_NORMAL); }
下面实现的这个实例实现了上述内容的综合:
实例的完整代码如下:
/*
* 传感器会通过传感器事件把值传给用户
* 所以,我们的应用程序是被动的,等待传感器把数据传递给SensorEvent对象
*/
public class MainActivity extends Activity {
private Button button;
private Button button2;
private Button button3;
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到SensorManager对象
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
button=(Button)findViewById(R.id.sensorButton);
button2=(Button)findViewById(R.id.lightButton);
button3=(Button)findViewById(R.id.lightButton2);
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE); Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); sensorManager.registerListener(new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub //传感器的名字 String sensorName=event.sensor.getName(); //传感器制造商的名字 String sensorVendor=event.sensor.getVendor(); //传感器的分辨率,传感器所能识别的最小的精度是多少 float sensorRevolution=event.sensor.getResolution(); //传感器的功率 float sensorPower=event.sensor.getPower(); //传感器取得数据的时间是多少 double timeStamp=event.timestamp; //打印数据 Log.d("BruceZhang", sensorName+""); Log.d("BruceZhang", sensorVendor+""); Log.d("BruceZhang", sensorRevolution+""); Log.d("BruceZhang", sensorPower+""); Log.d("BruceZhang", timeStamp+""); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } }, sensor, SensorManager.SENSOR_DELAY_NORMAL); }
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(new SensorEventListener() {
/*
* SensorEvent event
* 一旦传感器感知外界条件发生变化,就会把相应的数据传递给这个对象
* 一般会把这个方法放在onCreate里,不用手动的去获取
*/
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float auc=event.accuracy;
//这里的第一个元素代表的是光线的强度
float lux=event.values[0];
Log.d("BruceZhang", auc+"");
Log.d("BruceZhang", lux+"");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}, sensor, SensorManager.SENSOR_DELAY_NORMAL);
//SensorManager.SENSOR_DELAY_NORMAL
//这个参数就是设置传感器的采样率
}
});
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.d("BruceZhang", "以下是你的手机里的传感器:");
List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
Log.d("BruceZhang", "--->");
for(Sensor sensor: sensors){
Log.d("BruceZhang", sensor.getName());
}
//通过使用getDefaultSensor方法获得一个特定的传感器
// Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
相关文章推荐
- [置顶] 利用Android系统的传感器开发水平仪应用的全过程介绍
- Android开发--传感器介绍
- android开发笔记之高级主题—传感器的简单介绍
- Android开发--Http操作介绍(二)
- Pro Android 4 第一章 Android 开发平台介绍
- 上门洗车APP --- Androidclient开发 之 项目结构介绍
- Android开发之WebService介绍ZZ
- Android开发之方向传感器的使用
- Android平台下传感器应用的开发
- 【Material Design】Material Design 开发利器:Android Design Support Library 介绍
- Android传感器开发
- 《智能设备艺术、科技、文化作品实例开发与设计》android开发系列介绍---2.3棋类作品:3d魔方
- 【Android UI设计与开发】4.底部菜单栏(一)Fragment介绍和简单实现
- 介绍内容有 Android 开发规范, 架构, 布局技巧, 以及使用一些有助于快速开发相关工具等等
- Android-传感器开发
- Android IOS WebRTC 音视频开发总结(四九)-- ffmpeg介绍
- 简单介绍如何应用DDMS协助开发Android Apps
- Android 开发指南(一) 任务Task及回收栈back stack介绍 !!!!!
- Android软件开发之应用程序之间的通信介绍(十八)
- android mvp快速开发框架介绍(继续dileber)