传感器的使用:光线传感器
2015-09-28 18:53
465 查看
先在布局中建立一个TextView, 用于测试当前的光照强度:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/light_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="20sp" />
</RelativeLayout>
在Activity 中要进行以下几步操作:
1. 获取SensorManager 和Sensor 实例
private SensorManager sensorManager;
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
2. 通过SensorEventListener 对传感器进行监听:
private SensorEventListener listener = new SensorEventListener(){
public void onAccuracyChanged(android.hardware.Sensor sensor, int accuracy) {
}
public void onSensorChanged(android.hardware.SensorEvent event) {
float value = event.values[0];
lightLevel.setText("Current light level is " + value + " lx");
}
};
当传感器精度改变时会调用onAccuracyChanged方法;
当传感器监测的数值发生变化的时候onSensorChanged 方法会被调用。
3. 调用SensorManager 的registerListener() 来注册传感器
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);第一个参数是SensorEventListener 实例,第二个参数是Sensor 实例,第三个参数是信息的更新速率。
4. 记着要在使用完毕后释放资源
@Override
protected void onDestroy() {
super.onDestroy();
if(sensorManager != null){
sensorManager.unregisterListener(listener);
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/light_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="20sp" />
</RelativeLayout>
在Activity 中要进行以下几步操作:
1. 获取SensorManager 和Sensor 实例
private SensorManager sensorManager;
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
2. 通过SensorEventListener 对传感器进行监听:
private SensorEventListener listener = new SensorEventListener(){
public void onAccuracyChanged(android.hardware.Sensor sensor, int accuracy) {
}
public void onSensorChanged(android.hardware.SensorEvent event) {
float value = event.values[0];
lightLevel.setText("Current light level is " + value + " lx");
}
};
当传感器精度改变时会调用onAccuracyChanged方法;
当传感器监测的数值发生变化的时候onSensorChanged 方法会被调用。
3. 调用SensorManager 的registerListener() 来注册传感器
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);第一个参数是SensorEventListener 实例,第二个参数是Sensor 实例,第三个参数是信息的更新速率。
4. 记着要在使用完毕后释放资源
@Override
protected void onDestroy() {
super.onDestroy();
if(sensorManager != null){
sensorManager.unregisterListener(listener);
}
}
相关文章推荐
- Android实现表情 抓取新浪表情
- 详解Android解析Xml的三种方式——DOM、SAX以及XMLpull
- android开发环境遇到adt无法启动的问题分析及解决方法
- Android开发 旋转屏幕导致Activity重建解决方法
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- Android开发技巧之ViewStub控件惰性装载
- android 传感器(OnSensorChanged)使用介绍
- 分享10个很棒的学习Android开发的网站
- android开发之横向滚动/竖向滚动的ListView(固定列头)
- Android开发技巧之我的菜单我做主(自定义菜单)
- Windows下使用Apache Cordova开发ANDROID之HelloWorld
- 为什么三星手机一直坚持使用塑料外壳?
- 根据根据图片的url怎么取得图片ImageView对象
- [转] ADB server didn't ACK
- android开发的相关链接
- Android数据存储之SharedPreferences 共享首选项/偏好设置
- 基于NDK的Android防破解
- 麦子学院android开发笔记:Android更换RatingBar图片
- android开发入门知识之AIDL详解
- 微软研究院为智能手机研发独特触控技术