在将此帖标记为"重复"之前,我正在撰写此帖子,因为没有其他帖子能够解决问题.
我试图关闭设备,然后在几分钟或传感器更换后,将其重新打开.
关闭显示测试
我可以使用以下方式关闭屏幕:
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)
我无法使用wl.release()方法关闭屏幕.
打开显示测试
我的第一个猜测,如下,不起作用.什么都没发生,屏幕仍然关闭.
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = -1f;
getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)
然后我也尝试使用唤醒锁,但没有成功.
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "tag");
wl.acquire();
Run Code Online (Sandbox Code Playgroud)
最后我尝试了以下内容,没有结果.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)
总而言之,我不会在控制台中遇到任何这些方法的任何错误.当我使用电源按钮打开设备时,我的测试文本"屏幕应该打开",在屏幕上.这表明代码应该已经运行.如果你已经测试了代码,请回答,似乎很多功能,例如params.screenBrightness = -1
,根据sdk不能正常工作.
我正在尝试创建一个 android 全屏通知,以在锁定屏幕上显示活动,例如闹钟。
通知总是发生,但活动永远不会在锁屏上启动;如果手机关机,它只会响铃并在锁定屏幕上显示一个通知图标。如果手机按预期打开,它会显示提醒通知。调试打印表明通知通道已按要求在重要性级别 HIGH/4 上成功注册。
我已经在 5 个不同的 Android 设备版本上尝试过:Android 10、8.0.0、6.0.1、5.1.1
我遵循了下面链接的 android 开发人员文档。我还链接了几个类似的堆栈溢出问题。
https://developer.android.com/training/notify-user/time-sensitive
https://developer.android.com/training/notify-user/build-notification#urgent-message
下面是应用程序代码的一个非常小的版本,一个带有 1 个按钮的活动,用于在将来使用广播接收器安排通知,以便在屏幕锁定后触发。
compileSdkVersion 29
buildToolsVersion "29.0.2"
minSdkVersion 25
targetSdkVersion 29
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
public class AppReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (FullscreenActivity.FULL_SCREEN_ACTION.equals(intent.getAction()))
FullscreenActivity.CreateFullScreenNotification(context);
}
}
public class FullscreenActivity extends AppCompatActivity {
private static final String CHANNEL_ID = "my_channel";
static final String FULL_SCREEN_ACTION = "FullScreenAction";
@Override
protected void …
Run Code Online (Sandbox Code Playgroud)