Nic*_*ick 9 android broadcastreceiver android-wake-lock
我试图弄清楚如何通过服务唤醒和解锁手机.我一直在指这篇文章但是,我无法弄清楚为什么它不起作用.这是我到目前为止的代码:
public class WakephoneActivity extends Activity {
BroadcastReceiver mReceiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Log.v(TAG, "Screen OFF onReceive()");
screenOFFHandler.sendEmptyMessageDelayed(0, 2000);
}
};
}
private Handler screenOFFHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// do something
// wake up phone
// Log.i(TAG, "ake up the phone and disable keyguard");
PowerManager powerManager = (PowerManager) WakephoneActivity.this
.getSystemService(Context.POWER_SERVICE);
long l = SystemClock.uptimeMillis();
powerManager.userActivity(l, false);// false will bring the screen
// back as bright as it was, true - will dim it
}
};
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(mReceiver, filter);
// Log.i(TAG, "broadcast receiver registered!");
}
}
Run Code Online (Sandbox Code Playgroud)
我也在清单中添加了代码.有任何想法吗?
For*_*rce 14
请在您的服务中使用以下代码.
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock((PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "YourServie");
mWakeLock.acquire();
[...]
mWakeLock.release();
Run Code Online (Sandbox Code Playgroud)
如果您还要解锁屏幕,请在服务中注册接收器,监控屏幕是否打开/关闭以及是否已关闭并且您要解锁手机,请使用以下代码启动活动onCreate:
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
this.finish();
return;
Run Code Online (Sandbox Code Playgroud)
我知道,这是一个相当脏的,但据我所知,没有其他方法解锁锁屏(这只有在没有密码等设置时才有效,所以它必须是正常的"幻灯片解锁"屏幕).
并且不要忘记添加android.permission.WAKE_LOCK;-)
/编辑:我刚看到你已经在使用Activity.如果您有一个并且根本不需要该服务,只需将此代码放入活动中即可.
| 归档时间: |
|
| 查看次数: |
12314 次 |
| 最近记录: |