【发布时间】:2015-02-01 18:54:17
【问题描述】:
我有一个前台服务正在等待抖动。当它接收到该动作时,它会发送一个广播:
Intent i = new Intent("com.company.app.shakeDetectedMessage");
sendBroadcast(i);
我的主要活动通过实现该方法的广播接收器接收到这个:
@Override
public void onReceive(Context context, Intent intent)
{
MainActivity.this.turnOnScreen();
Toast.makeText(getApplicationContext(), "Screen ON", Toast.LENGTH_SHORT).show();
}
还有我的开屏方法:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
我有一个部分唤醒锁
PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SensorRead");
mWakeLock.acquire();
在服务中声明
然而,当我关闭屏幕并摇晃时,屏幕并没有打开!我验证了每种方法都适用于日志。即使屏幕关闭,onReceive 也能正常工作。广播正在工作。只是屏幕打不开!
【问题讨论】:
标签: java android eclipse oop wakelock