Android 解决熄屏后传感器关闭问题_方法一:保持屏幕常亮

采用 <精通Android 3> 上的方法来解决 传感器监听器被关闭的问题

屏幕关闭通常会导致传感器监听器被关闭,所以另类的解决方法是设置屏幕为常亮状态.

缺点耗电,有些手机会出现不明问题.


核心代码片:

需要在oncreat的时候设置

mPwrMgr = (PowerManager) this.getSystemService(POWER_SERVICE);
		mWakelock = mPwrMgr
				.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Accel");
		mWakelock.acquire();
		// Save the current value of the screen timeout, then set it always on
		try {
			mSavedTimeout = Settings.System.getInt(getContentResolver(),
					Settings.System.SCREEN_OFF_TIMEOUT);
		} catch (Exception e) {
			mSavedTimeout = 120000; // 2 minutes
		}
		Settings.System.putInt(getContentResolver(),
				Settings.System.SCREEN_OFF_TIMEOUT, -1); // always on
捕获屏幕熄灭的广播

public BroadcastReceiver mReceiver = new BroadcastReceiver() {
		public void onReceive(Context context, Intent intent) {
			if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {
				System.out.println("The screen has turned off");
				// Turn the screen back on again, from the main thread
				handler.post(new Runnable() {
					public void run() {
						if (mTurnBackOn != null)
							mTurnBackOn.release();


						mTurnBackOn = mPwrMgr.newWakeLock(
								PowerManager.SCREEN_DIM_WAKE_LOCK
										| PowerManager.ACQUIRE_CAUSES_WAKEUP,
								"AccelOn");
						mTurnBackOn.acquire();
					}
				});
			}
		}
	};

注册和注销广播

@Override
	protected void onStart() {
		IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
		registerReceiver(mReceiver, filter);
		super.onStart();
	}


	@Override
	protected void onStop() {
		unregisterReceiver(mReceiver);
		mWakelock.release();
		if (mTurnBackOn != null)
			mTurnBackOn.release();
		 
		super.onStop();
	}

权限

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />


Demo代码下载

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值