Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 通知声音、振动和LED灯不亮';行不通_Android_Push Notification_Notifications - Fatal编程技术网

Android 通知声音、振动和LED灯不亮';行不通

Android 通知声音、振动和LED灯不亮';行不通,android,push-notification,notifications,Android,Push Notification,Notifications,我正在尝试为我的应用程序中的通知设置自定义的声音、振动和LED颜色,但它不起作用。其他一切,如设置标题、图标、颜色等都很好。我尝试了Stackoverflow中提出的许多解决方案,但它们也不起作用,所以我要问一个问题 这是我的通知代码- Intent resultIntent = new Intent(this, ActivityB.class); Bundle b = new Bundle(); //Some bundle related Code result

我正在尝试为我的应用程序中的通知设置自定义的声音、振动和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());
我也增加了振动的许可。在2部运行棒棒糖和棉花糖的手机上进行了测试

编辑1:

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

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE"/>

编辑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”)中找到文件更改

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

对于灯光,请使用RGB组合<代码>builder.setLights(Color.rgb(130130130))

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

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

设置振动()
除非您持有
振动
权限,否则将无法工作
setLights()
如果设备没有用于通知的LED,则可能无法工作。我已经添加了振动权限,我在问题的最后提到了这一点。。我已经在使用LED进行通知的设备上进行了测试。尝试使用builder.setPriority()@MoosaBaloch我将优先级设置为priority_HIGH,但它不起作用。setDefaults(Notification.DEFAULT_ALL)也能按预期工作吗?尝试将所有这些设置设置为默认值,以检查您的通知是否正确生成。今晚我将对此进行测试,并让您知道。虽然振动解决方案有点老套:D。。你能告诉我如何解决声音问题吗?除了自己播放声音之外……从我在代码中看到的,它似乎是正确的。声音的格式是什么。mp3?因为你的朋友有声音,所以声音应该不是问题,而是你的手机。那两部手机很少见。要么(1)你写了一个可以在你的设备上运行的代码,但就像我为可控震源所建议的那样,相当粗糙;(2)写一个假定可用的代码,希望大多数设备都能工作。是的,它是mp3。我不能说问题出在手机上,因为我从Whatsapp、Gmail、Facebook Lite等其他应用程序收到声音、光线和振动的通知。。但是如果没有任何结果,那么我可能必须遵循(1)我还添加了使用
RingtoneManager的代码,今晚将对其进行测试,并让您知道或使用hex.eg=builder.setLights(0xCBD11A)进行灯光设置;
builder.setVibrate(new long[] { 50, 100, 150, 200, 250});