Jam*_* MV 146 android android-notifications
我使用了较新的NotificationCompat构建器,但我无法收到通知以发出声音.它会振动并闪烁光线.android文档说要设置我已完成的样式:
builder.setStyle(new NotificationCompat.InboxStyle());
Run Code Online (Sandbox Code Playgroud)
但没声音?
完整代码:
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Notifications Example")
.setContentText("This is a test notification");
Intent notificationIntent = new Intent(this, MenuScreen.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
builder.setAutoCancel(true);
builder.setLights(Color.BLUE, 500, 500);
long[] pattern = {500,500,500,500,500,500,500,500,500};
builder.setVibrate(pattern);
builder.setStyle(new NotificationCompat.InboxStyle());
// Add as notification
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(1, builder.build());
Run Code Online (Sandbox Code Playgroud)
Jam*_* MV 244
我以前的代码遗漏了什么:
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
builder.setSound(alarmSound);
Run Code Online (Sandbox Code Playgroud)
小智 145
只需将您的声音文件放在该Res\raw\siren.mp3文件夹中,然后使用以下代码:
对于自定义声音:
Notification notification = builder.build();
notification.sound = Uri.parse("android.resource://"
+ context.getPackageName() + "/" + R.raw.siren);
Run Code Online (Sandbox Code Playgroud)
对于默认声音:
notification.defaults |= Notification.DEFAULT_SOUND;
Run Code Online (Sandbox Code Playgroud)
对于Custom Vibrate:
long[] vibrate = { 0, 100, 200, 300 };
notification.vibrate = vibrate;
Run Code Online (Sandbox Code Playgroud)
对于默认振动:
notification.defaults |= Notification.DEFAULT_VIBRATE;
Run Code Online (Sandbox Code Playgroud)
hay*_*den 49
默认声音的另一种方式
builder.setDefaults(Notification.DEFAULT_SOUND);
Run Code Online (Sandbox Code Playgroud)
Pon*_*ung 11
使用可以编码
String en_alert, th_alert, en_title, th_title, id;
int noti_all, noti_1, noti_2, noti_3, noti_4 = 0, Langage;
class method
Intent intent = new Intent(context, ReserveStatusActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
intent = new Intent(String.valueOf(PushActivity.class));
intent.putExtra("message", MESSAGE);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(PushActivity.class);
stackBuilder.addNextIntent(intent);
// PendingIntent pendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
// android.support.v4.app.NotificationCompat.BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
// bigStyle.bigText((CharSequence) context);
notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(th_title)
.setContentText(th_alert)
.setAutoCancel(true)
// .setStyle(new Notification.BigTextStyle().bigText(th_alert) ???????
//
.setStyle(new NotificationCompat.BigTextStyle().bigText(th_title))
.setStyle(new NotificationCompat.BigTextStyle().bigText(th_alert))
.setContentIntent(pendingIntent)
.setNumber(++numMessages)
.build();
notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
notificationManager.notify(1000, notification);
Run Code Online (Sandbox Code Playgroud)
只需输入以下简单代码:
notification.sound = Uri.parse("android.resource://"
+ context.getPackageName() + "/" + R.raw.sound_file);
Run Code Online (Sandbox Code Playgroud)
对于默认声音:
notification.defaults |= Notification.DEFAULT_SOUND;
Run Code Online (Sandbox Code Playgroud)
你必须使用RingtoneManager
private static final int MY_NOTIFICATION_ID = 1;
private NotificationManager notificationManager;
private Notification myNotification;
private final String myBlog = "http://niravranpara.blogspot.com/";
Run Code Online (Sandbox Code Playgroud)
具有警报铃声的noficationmanager代码您也可以设置铃声RingtoneManager.TYPE_RINGTONE
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri
.parse(myBlog));
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification note = new Notification(R.drawable.ic_launcher, "Alarm", System.currentTimeMillis());
note.setLatestEventInfo(getApplicationContext(), "Alarm", "sound" + " (alarm)", pi);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if(alarmSound == null){
alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
if(alarmSound == null){
alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
}
}
note.sound = alarmSound;
note.defaults |= Notification.DEFAULT_VIBRATE;
note.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(MY_NOTIFICATION_ID, note);
Run Code Online (Sandbox Code Playgroud)
你必须使用建设者.setSound
Intent notificationIntent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
builder.setAutoCancel(true);
builder.setLights(Color.BLUE, 500, 500);
long[] pattern = {500,500,500,500,500,500,500,500,500};
builder.setVibrate(pattern);
builder.setStyle(new NotificationCompat.InboxStyle());
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
if(alarmSound == null){
alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
if(alarmSound == null){
alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
}
}
// Add as notification
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
builder.setSound(alarmSound);
manager.notify(1, builder.build());
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以做一个功能:
public void playNotificationSound()
{
try
{
Uri alarmSound = `Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + MyApplication.getInstance().getApplicationContext().getPackageName() + "/raw/notification");`
Ringtone r = RingtoneManager.getRingtone(MyApplication.getInstance().getApplicationContext(), alarmSound);
r.play();
}
catch (Exception e)
{
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
收到通知时调用此函数.
这里raw是res中的文件夹,通知是raw文件夹中的声音文件.
在 Android OREO 或更高版本中
将频道注册到系统后;
您无法更改同一频道的重要性
或
其他通知行为
(卸载应用程序之前)
private void createNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
channel.setSound(Settings.System.DEFAULT_NOTIFICATION_URI,audioAttributes);
Run Code Online (Sandbox Code Playgroud)
优先级也最重要在这里 设置通知优先级为高通过使用
用户可见的重要性级别重要性(Android 8.0 及更高版本)
1) Urgent
发出声音并作为提示通知出现--> IMPORTANCE_HIGH
2)High
发出声音--> IMPORTANCE_DEFAULT
3)Medium
无声音--> IMPORTANCE_LOW
4)无声音且不会出现在状态栏中-> IMPORTANCE_MIN
相同的工作顺序 优先级(Android 7.1 及更低版本)
1)PRIORITY_HIGH 或 PRIORITY_MAX
2)PRIORITY_DEFAULT
3)PRIORITY_LOW
4)PRIORITY_MIN
首先将“ yourmp3file” .mp3文件放入原始文件夹(即Res文件夹内)
代码中的第二个
Notification noti = new Notification.Builder(this)
.setSound(Uri.parse("android.resource://" + v.getContext().getPackageName() + "/" + R.raw.yourmp3file))//*see note
Run Code Online (Sandbox Code Playgroud)
这就是我放入onClick(View v)的内容,因为只有“ context()。getPackageName()”才能从那里工作,因为它不会获得任何上下文
在Oreo(Android 8)及更高版本上,应以这种方式针对自定义声音进行处理(通知渠道):
Uri soundUri = Uri.parse(
"android.resource://" +
getApplicationContext().getPackageName() +
"/" +
R.raw.push_sound_file);
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ALARM)
.build();
// Creating Channel
NotificationChannel channel = new NotificationChannel("YOUR_CHANNEL_ID",
"YOUR_CHANNEL_NAME",
NotificationManager.IMPORTANCE_HIGH);
channel.setSound(soundUri, audioAttributes);
((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE))
.createNotificationChannel(notificationChannel);
Run Code Online (Sandbox Code Playgroud)