java - 如何设置每次出现通知时都会播放的自定义声音?
问题描述
我有一个下拉列表 ( spinner
),其中显示了我在外部存储中拥有的所有 MP3 音乐文件。我希望每次弹出通知时播放 MP3 音乐,这将由用户选择。
读取外部存储中所有 MP3 文件的代码:
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
String[] projection = {
MediaStore.Audio.Media.TITLE,
};
EnableRuntimePermission();
Cursor cursor = this.managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
null,
null);
spin.setOnItemSelectedListener(this);
List<String> songs = new ArrayList<String>();
while (cursor.moveToNext()) {
songs.add(cursor.getString(0));
}
public void EnableRuntimePermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(
Pop_up_2.this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
// Toast.makeText(Pop_up_2.this, "Now you can read music files", Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(Pop_up_2.this, new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE}, RequestPermissionCode);
}
}
创建通知的代码:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_today_black_24dp)
.setContentTitle(s3)
.setContentText(message)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManagerCompat notification=NotificationManagerCompat.from(context);
notification.notify(NOTIFICATION_ID,builder.build());
编辑:我想知道是否有任何方法可以解析String item1 = parent.getItemAtPosition(position).toString();
为 Uri,然后将该 Uri 参数设置为RingtoneManager
Uri par=Uri.parse(item1);
Uri alarmSound = RingtoneManager.setActualDefaultRingtoneUri(context,RingtoneManager.TYPE_NOTIFICATION,par);
.
.
.
.
.
builder.setSound(alarmSound);
但是我收到一个错误,因为类型不兼容。
解决方案
推荐阅读
- html - 我的 html 代码中的按钮有问题
- python-3.x - 本机 python3 无法在 ubuntu 焦点上导入 sqlite3
- node.js - 为什么 mongodump 不能在我的 Windows 机器上运行?
- angular - 从 HttpClient Angular 提交文件到 API-Rest CodeIgniter 3
- amazon-web-services - AWS Lambda 为单个 SQS 消息触发了两次
- python - 努力让小部件在 python 中工作
- sql - 按特定顺序对列值求和
- java - 如何从日历中仅获取没有时间的日期?
- sql-server - SQL Server:如果搜索不匹配则返回一个空行
- java - 即使 hashmap get(key) 不遵循定义的泛型,也不会抛出异常