gpt4 book ai didi

android - FLAG_TURN_SCREEN_ON 并不总是有效

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:20 25 4
gpt4 key购买 nike

我从 BroadcastReceiver 开始一个 Activity ,它由警报(RTC_WAKEUP 类型)触发。在该 Activity 的 onCreate 中,我添加了这些标志

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
);

问题是有时(大约 10% 的情况)屏幕无法打开。警报被正确触发(我这里是通知的声音,它也在接收器的 onReceive() 中触发。然后,如果我按下手机的电源按钮,屏幕打开,显示我的 Activity ,并立即关闭。之后那,电源按钮工作正常。这发生在 android 2.3.7 上,这里是 onReceive() 方法

@Override
public void onReceive(Context context, Intent intent) {
m_Context = context;

Bundle extras = intent.getExtras();
final int id = extras.getInt("timer_id");

Intent activityIntent = new Intent(m_Context, MyActivity.class);
activityIntent.putExtra("timer_id", id);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
m_Context.startActivity(activityIntent);

// and now load the alarm sound and play it for the desired time
showFinishedNotification();
}

我想避免使用 PowerManager,因为它需要权限,而标志是首选方式。

可能是什么问题? logcat 没有显示任何问题...

最佳答案

根据我对这个主题的经验和研究:

现在,您可以通过以下方式绕过此限制:

  • 启动新 Activity 并在其中设置标志,然后(由用户或以编程方式)完成 Activity 以关闭屏幕。
  • params.screenBrightness 参数设置为as "dim" as possible ,有时屏幕“出现关闭”。然后您可以增加亮度以“打开”屏幕。然而,这通常不起作用,因为屏幕仍然暗淡但可见,而且如果用户锁定手机,这也不起作用。
  • 使用Power Manager Wakelock (这仍然有效,但 Android 已弃用此功能,因此他们不鼓励使用此技术)。但是,据我所知,这是让我的应用程序可靠地打开/关闭屏幕的唯一方法。

这些都不是理想的(事实上,它们感觉像是 hack),但只使用更适合您的应用程序需求的那个。

您可以在这里阅读更多内容:

关于android - FLAG_TURN_SCREEN_ON 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com