手机睡眠时 Android 中的通知

Posted

技术标签:

【中文标题】手机睡眠时 Android 中的通知【英文标题】:Notifications in Android when the phone is sleeping 【发布时间】:2017-04-18 13:19:24 【问题描述】:

我一直在我正在构建的应用程序中使用通知。与旧版本相比,构建通知的方式发生了很大变化,但最终我设法显示了一个通知。 (*)

我有两个问题: 1) 通知没有声音。这不是增加平板电脑中通知量的问题,因为来自 gmail 的通知确实会产生声音。如何发出产生声音和振动的通知? (我正在 android 6 中尝试这个)

2) 更重要的是,即使手机处于睡眠状态,我如何发出“通知”我的通知?到目前为止,我的通知确实在手机处于睡眠状态时发生,但我必须打开手机才能看到它们。理想情况下,即使屏幕是黑色的,这些也应该出现

编辑:为了清楚起见,通知在手机睡眠时发生。只是除非我打开屏幕,否则我看不到它们,那么它们就是。我想让通知“打开屏幕”

(*) 我当前的代码是

         NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

        PendingIntent pi = PendingIntent.getActivity(context, 0, new Intent(), 0);


        Notification notification= new Notification.Builder(context)
                .setContentTitle(message)
                .setContentText("Proximity Alert!")
                .setSmallIcon(R.mipmap.ic_launcher)
                .setAutoCancel(true)
                .setContentIntent(pi).build(); //getNotification();


        //notification.flags= Notification.FLAG_AUTO_CANCEL;

        //notification.setLatestEventInfo(context, "GAST", "Proximity Alert", pi); //this is deprecated

        notificationManager.notify(NOTIFICATION_ID, notification);

【问题讨论】:

对于声音:Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);并在通知生成器中: .setSound(defaultSoundUri) 【参考方案1】:

是的,您可以通过这种方式在发送通知时添加声音。

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);  

Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICAT‌​ION); 
builder.setSound(defaultSoundUri);

要在手机休眠时执行此操作,您将不得不使用服务。

文档:Services

【讨论】:

感谢您的回复。关于第二项,我可能没有很好地解释自己,对不起。通知在睡眠时确实发生。如果我按下打开按钮,我可以清楚地看到即使不使用服务它们也在那里。我的问题是我希望他们唤醒电话。我该怎么做? 参考这个唤醒屏幕link希望这有帮助

以上是关于手机睡眠时 Android 中的通知的主要内容,如果未能解决你的问题,请参考以下文章

设备处于睡眠模式时不会出现 Android GCM 通知

如何以编程方式避免android手机中的深度睡眠模式?

如何在睡眠模式下唤醒 Android Wear?

如何在设备处于睡眠模式时的某个特定时间在 android 中推送本地通知

Android 10 NFC 应用程序 - 在 MS Intune Kiosk 模式下手机睡眠时停止工作

让 Android 进入睡眠状态以进行测试