码迷,mamicode.com
首页 > 其他好文 > 详细

延长电池续航时间--传感器,WakeLock

时间:2015-04-16 17:47:10      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:电池续航   传感器   屏幕唤醒   

一. 传感器

传感器使用方式和定位服务类似:应用向特定的传感器注册监听器,获得更新通知。

private void registerWithAccelerometer(){
		SensorManager sm=(SensorManager) getSystemService(Context.SENSOR_SERVICE);
		List<Sensor> sensors=sm.getSensorList(Sensor.TYPE_ACCELEROMETER);
		if(sensors!=null&&!sensors.isEmpty()){
			SensorEventListener listener=new SensorEventListener() {
				
				@Override
				public void onSensorChanged(SensorEvent event) {
					// TODO Auto-generated method stub
					
				}
				
				@Override
				public void onAccuracyChanged(Sensor sensor, int accuracy) {
					// TODO Auto-generated method stub
					//dosomthing();
				}
			};
			Sensor sensor=sensors.get(0);
			sm.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_NORMAL);
		}
	}
和定位一样,android也可以让应用指定什么样的频度去获取传感器更新,位置服务是毫秒,只能指定4个值之一:SENSOR_DELAY_NORMAL,SENSOR_DELAY_UI,SENSOR_DELAY_GAME,SENSOR_DELAY_FASTEST.

当不需要通知时,禁用传感器的监听器。用SensorManager的unregisterListener()方法达到此目的。


二.WakeLock

在某些情况下,一些应用程序即使用户长时间不有设备交互,也要阻止设备进入休眠状态,来保持良好的用户体验。比如:当用户观看设备上的视频或电影时,这种情况下,需要CPU做视频解码,同时屏幕保持开启,让用户能够观看。此外,视频播放时屏幕不能变暗。

Android为这种场景设计了WakeLock类:

private void runInWakeLock(Runnable runnable, int flags) {
		PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
		PowerManager.WakeLock wl = pm.newWakeLock(flags, "My WakeLock");
		wl.acquire();
		runnable.run();
		wl.release();
	}
注:应用需要WAKE_LOCK的权限来使用。

系统的行为取决于创建WakeLock对象传入的标记(flags)参数。定义如下:

(1)PARTIAL_WAKE_LOCK(CPU开)

(2) SCREEN_DIM_WAKE_LOCK(CPU开、暗色显示)

(3)SCREEN_BRIGHT_WAKE_LOCK(CPU开、明亮显示)

(4)FULL_WAKE_LOCK(CPU开、明亮显示、键盘开)

这些标记可以结合使用

(1)ACQUIRE_CAUSES_WAKEUP(打开屏幕和键盘)

(2)ON_AFTER_RELEASE(WakeLock释放后继续保持屏幕和键盘开启片刻)

防止问题出现:

使用带超时的WakeLock.acquire()版本,它会在超过时限后释放WakeLock。如:播放视频的应用可以使用视频长度作为WakeLock超时时间。

如果用到平屏幕是和Activity中的View关联的,也可以在布局文件中使用XML属性android:keepScreenOn.这样的好处是不必冒着忘记释放WakeLock的风险,交由系统处理。



延长电池续航时间--传感器,WakeLock

标签:电池续航   传感器   屏幕唤醒   

原文地址:http://blog.csdn.net/woyaochenggong774/article/details/45076069

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!