zoukankan      html  css  js  c++  java
  • android wake lock 电源管理简单学习

     需要配置清单文件:<uses-permission android:name="android.permission.WAKE_LOCK" />

    也可以参考我之前写的这篇文章:

    http://blog.csdn.net/aikongmeng/article/details/39232017

    package com.example.wakeup;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.PowerManager;
    import android.util.Log;
    import android.widget.TextView;
    
    public class MainActivity extends Activity implements SensorEventListener{
    	private static final String TAG = "MainActivity";
    	private static final String WAKE_LOCK_TAG = "LightTag";
    	private PowerManager pm ;
    	private PowerManager.WakeLock wl;
    	private TextView tv;
    	private StringBuilder mBuilder = new StringBuilder(2048);
    	private SensorManager mSensorManager;
    	private Sensor mLight;
    	private Handler handler =new Handler();
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		tv = (TextView) findViewById(R.id.tv);
    		mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    		mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    	}
    
    
    	@Override
    	protected void onResume() {
    		super.onResume();
    		pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    		wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKE_LOCK_TAG);
    		wl.acquire();  
    	}
    
    
    	@Override
    	protected void onStart() {
    		super.onStart();
    		mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_FASTEST);
    		//register broadcasts receiver
    		IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);  
    		registerReceiver(mReceiver, filter);  
    
    	}
    	@Override
    	protected void onPause() {
    		super.onPause();
    		//release lock
    		if (wl!=null) {
    			wl.release();
    			wl=null;
    		}
    
    	}
    	@Override
    	protected void onDestroy() {
    		super.onDestroy();
    		mSensorManager.unregisterListener(this);
    		unregisterReceiver(mReceiver);  
    
    	}
    
    	@Override
    	public void onAccuracyChanged(Sensor sensor, int accuracy) {
    
    	}
    
    	@Override
    	public void onSensorChanged(SensorEvent event) {
    		Log.i(TAG, "Light Values :"+ event.values[0]);
    		mBuilder.insert(0,  event.values[0]+"
    ");
    		tv.setText(mBuilder.toString());
    		tv.invalidate(); 
    	}
    	private BroadcastReceiver mReceiver =  new BroadcastReceiver() {
    
    		@Override
    		public void onReceive(Context context, Intent intent) {
    			if (Intent.ACTION_SCREEN_OFF.equalsIgnoreCase(intent.getAction())) {
    				handler.post(new Runnable() {  
    					@SuppressLint("Wakelock")
    					public void run() {  
    						if (wl != null) {
    							wl.release();  
    							wl=null;
    						} 
    						try {
    							System.out.println("Sleeping ...");
    							Thread.sleep (3000);
    						} catch (InterruptedException e) {
    							e.printStackTrace();
    						}
    						wl = pm.newWakeLock(  
    								PowerManager.PARTIAL_WAKE_LOCK  
    								,  
    								WAKE_LOCK_TAG);  
    						wl.acquire();  
    					}  
    				});   
    			} 
    		}
    	};
    
    }
    

      

  • 相关阅读:
    更好一点的:Vue 利用指令实现禁止反复发送请求
    实现一个深度比较
    Zrender:实现波浪纹效果
    Echarts:实现拖拽效果
    找到树中指定id的所有父节点
    Vue 利用指令实现禁止反复发送请求
    我对组件化的一点细琐的想法
    转盘式旋转抽奖
    信息系统与信息化
    跳出牢笼,逃出生天
  • 原文地址:https://www.cnblogs.com/aikongmeng/p/3987343.html
Copyright © 2011-2022 走看看