android - 是否可以从 Android O 中的 NotificationChannel 获取声音的名称?
问题描述
在Android O中,我有以下NotificationChannel
private static String getNotificationChannelId() {
WeNoteApplication weNoteApplication = WeNoteApplication.instance();
final String default_notification_channel_id = weNoteApplication.getString(R.string.default_notification_channel_id);
return default_notification_channel_id;
}
public static String createNotificationChannel() {
final String default_notification_channel_id = getNotificationChannelId();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
return default_notification_channel_id;
}
WeNoteApplication weNoteApplication = WeNoteApplication.instance();
NotificationManager notificationManager =
(NotificationManager) weNoteApplication.getSystemService(Context.NOTIFICATION_SERVICE);
final String default_notification_channel_name = weNoteApplication.getString(R.string.default_notification_channel_name);
final String default_notification_channel_description = weNoteApplication.getString(R.string.default_notification_channel_description);
NotificationChannel notificationChannel = new NotificationChannel(
default_notification_channel_id,
default_notification_channel_name,
NotificationManager.IMPORTANCE_HIGH
);
notificationChannel.setDescription(default_notification_channel_description);
notificationChannel.enableLights(true);
notificationChannel.enableVibration(true);
notificationManager.createNotificationChannel(notificationChannel);
// How to get the name of sound?
AudioAttributes audioAttributes = notificationChannel.getAudioAttributes();
android.util.Log.i("CHEOK", "toString--> " + audioAttributes.toString());
android.util.Log.i("CHEOK", "getSound--> " + notificationChannel.getSound());
android.util.Log.i("CHEOK", "getDescription--> " + notificationChannel.getDescription());
return default_notification_channel_id;
}
我想知道,是否可以从 中获取声音的名称NotificationChannel
,如屏幕截图所示?
解决方案
这就是我所做的。从通知通道获取声音uri,并使用 RingtoneManager 进行解析。
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel notificationChannel = notificationManager.getNotificationChannel("channel_id");
Uri ringtoneUri = notificationChannel.getSound();
Ringtone r = RingtoneManager.getRingtone(mContext, ringtoneUri);
String nameOfSound = r.getTitle(mContext);
推荐阅读
- excel - 为每个循环组合多个范围 vba
- kotlin - 可以在没有协程的ViewModel类中调用DAO类的函数吗
- laravel - getCustomAttribute 中的 Laravel 方法返回 cullection null
- javascript - Highcharts Spiderweb 图表 xAxis 标签在长标签名称上消失
- javascript - 无法将引导 JS 加载到 Electron 应用程序中
- javascript - hibext_instdsigdipv2 cookie 来自哪里?
- c++ - 达到限制后自动旋转值的自定义 qt spinbox
- linux - 如果字符串的出现每行恰好一次,如何删除一行?
- embedded-linux - QEMU 网络和 getty 问题
- kubernetes - 如何使用附加到主机的块设备作为 pod 内的块设备