首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从接收器/服务打开屏幕

从接收器/服务打开屏幕
EN

Stack Overflow用户
提问于 2015-05-15 04:09:30
回答 2查看 16.4K关注 0票数 21

我希望我的应用程序能够打开屏幕并显示我的应用程序。假设我设置了一个闹钟,每小时我想让我的应用程序在设备自然休眠前显示2分钟。

我发现WakeLock (FULL_LOCK)和KeyguardManager被弃用了。

我已经创建了一个WakefulBroadcastReceiver和服务,它们正在工作。

代码语言:javascript
复制
@Override
protected void onHandleIntent(Intent intent) {
    // I need to show the screen here!

    for (int i=0; i<5; i++) {
        Log.i("SimpleWakefulReceiver", "Running service " + (i + 1)
                + "/5 @ " + SystemClock.elapsedRealtime());
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }
    }
    Log.i("SimpleWakefulReceiver", "Completed service @ " + 
          SystemClock.elapsedRealtime());
    SimpleWakefulReceiver.completeWakefulIntent(intent);
}

如何以编程方式打开屏幕,通过锁定并从IntentService显示我的活动?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-05-15 04:13:46

我不知道你在说什么,wakelock绝对没有被弃用。某些类型不再是谷歌首选的方式,但普通的wakelock仍然存在,仍然是最简单的方式。确保在使用锁时添加ACQUIRE_CAUSES_WAKEUP标志。事实上,请注意WakefulBroadcastReceiver是通过使用wakelock实现的。

票数 2
EN

Stack Overflow用户

发布于 2015-05-17 19:08:07

您可以使用此代码打开屏幕。

代码语言:javascript
复制
private void turnScreenOn() {
    int flags = WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
    getWindow().addFlags(flags);
}

您可以使用此代码将其保持为打开状态,直到解除唤醒锁定。

代码语言:javascript
复制
<uses-permission android:name="android.permission.WAKE_LOCK" />

private PowerManager mPowerManager;
private PowerManager.WakeLock mWakeLock;

@Override
public void onCreate() {
super.onCreate();
    mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Service");
}

private void acquireWakeLock() {
    try {
        mWakeLock.acquire();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

private void releaseWakeLock() {
    try {
        mWakeLock.release();
    }
    catch (Exception e) {

    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30246425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档