Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将设备上的屏幕设置为打开,并在收到通知时振动?_Android_Android Notifications - Fatal编程技术网

Android 如何将设备上的屏幕设置为打开,并在收到通知时振动?

Android 如何将设备上的屏幕设置为打开,并在收到通知时振动?,android,android-notifications,Android,Android Notifications,您好,我正在构建一个应用程序,我正在使用通知。我希望当收到通知时,我的设备会震动,如果屏幕处于睡眠模式,则屏幕会打开。 这是我的通知生成器: NotificationCompat.Builder notification = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.asp) .setContentText(notificationD

您好,我正在构建一个应用程序,我正在使用通知。我希望当收到通知时,我的设备会震动,如果屏幕处于睡眠模式,则屏幕会打开。 这是我的通知生成器:

 NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.asp)
                    .setContentText(notificationData.getText())
                    .setContentTitle(notificationData.getTitle())
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setLights(Color.BLUE, 3000, 3000)
                    .setContentIntent(pendingIntent);
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(new Random().nextInt(), notification.build());
当通知发出时,我应该如何设置振动和设备屏幕打开?

在notification builder上振动设备

    long[] vibrate  = {500,200,200,500};
    notification.setVibrate(vibrate);
要打开设备屏幕,请尝试使用以下代码

public static void turnScreenOn(int sec, final Context context)
{
        final int seconds = sec;

        PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
        boolean isScreenOn = pm.isScreenOn();

        if( !isScreenOn )
        {
        WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MyLock");
        wl.acquire(seconds*1000);
        WakeLock wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyCpuLock");
        wl_cpu.acquire(seconds*1000);
        }
 }
不要忘记添加唤醒锁定权限

<uses-permission android:name="android.permission.WAKE_LOCK" />

我会先阅读Notification@的文档,然后使用WakeLock和Vibrate类。你能给我举个例子吗?这是一个非常常见的问题,有很多教程,你可以在提问之前先搜索它。然后我应该调用这个函数TurnScreen来发出通知?是的,当你想打开设备的屏幕时,你可以调用它。在你的情况下,你可以把它放在notify之后。但是我读到这个完整的唤醒锁定对电池来说真的很难…我可以使用刚刚获得的唤醒吗?不是电池的问题,因为你将获得唤醒锁定几秒钟,不会很长时间。谢谢很多朋友…还有一个问题…我已经用wl\U cpu和it对这行进行了评论行…为什么我要用那部分代码?