通知声音,振动和LED不起作用

我正在尝试在我的应用程序中为Notificaitons设置自定义声音,振动和LED颜色 – 但它不起作用。 设置标题,图标,颜色等所有其他工作正常。 我在Stackoverflow中尝试了很多解决方案,但它们也没有用,所以我问了一个问题。

这是我的通知代码 –

Intent resultIntent = new Intent(this, ActivityB.class); Bundle b = new Bundle(); //Some bundle related Code resultIntent.putExtra("bundle",b); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addNextIntent(new Intent(this, ActivityA.class)); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); android.support.v7.app.NotificationCompat.Builder builder = new android.support.v7.app.NotificationCompat.Builder(this); builder.setSmallIcon(R.drawable.ic_small_logo); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_logo_large)); builder.setContentTitle(notification.getTitle()); builder.setContentText(notification.getBody()); builder.setColor(Color.parseColor("#FFFFFF")); builder.setStyle(new NotificationCompat.BigTextStyle()); builder.setVibrate(new long[] { 1000, 100, 1000, 100, 1000 }); builder.setLights(Color.YELLOW, 3000, 3000); builder.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1)); builder.setAutoCancel(true); builder.setContentIntent(resultPendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(1, builder.build()); 

我也加入了振动许可。 在运行Lollipop和Marshmallow的2部手机上进行了测试。

编辑1:

共享我的应用程序使用的所有权限 –

           

编辑2:适用于棉花糖版手机。 不适用于带棒棒糖的手机。

编辑3:也适用于牛轧糖(一加3T手机)。

根据您的评论,您的手机本身似乎有问题。 我在(1)中询问了振动,因为你设置{ 1000, 100, 1000, 100, 1000 }这是一个1000毫秒的延迟,然后是100毫秒的振动。 这可能太少,无法检测到。

无论如何,我在某些设备上遇到了相同的振动问题,所以我直接使用了振动器服务。 发出通知后我所做的就是这样。 根据你的评论,我还添加了铃声管理器部分。

 // built the notification without vibration and sound NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(1, builder.build()); // start vibrator manually Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(new long[] {1000, 100, 1000, 100, 1000}, Constants.VIBRATION_ONCE); // start sound manually Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1); Ringtone ringtone = RingtoneManager.getRingtone(this, uri); ringtone.play(); 

这似乎适用于大多数设备。 至于通知之光,已在官方文件中说明

设置设备上指示灯LED的所需颜色,以及闪烁占空比(以毫秒为单位)。 并非所有设备都会尊重所有(甚至任何)这些值。

如果您使用的是Mi设备,请尝试“信任”该应用并启用通知所需的所有权限,包括“自动启动”。 它适用于大多数情况。

声音不起作用的原因之一是因为它无法从builder.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1));find文件更改builder.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1));

String uriSound = String.format(“android.resource://%s / raw /%s”,getPackageName(),R.raw.notif1);

  builder.setSound(uriSound); 

对于灯使用RGB组合。 builder.setLights(Color.rgb(130, 130, 130));

将振动模式改变为更均匀的

 builder.setVibrate(new long[] { 50, 100, 150, 200, 250});