У меня есть раскрывающийся список (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);
Но я получаю ошибку как несовместимые типы.