播放特定的通知声音
Play a specific notification sound
我创建了一个对话框,用于为应用程序选择通知声音。我正在通过从 RingtoneManager 获取光标来查询通知声音:
RingtoneManager manager = new RingtoneManager(this);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();
然后我通过将声音路径与名称连接来存储它的完整路径。
当我将选定的声音设置为通知声音时效果很好,但我无法让媒体播放器在选择时播放它:
MediaPlayer mp = MediaPlayer.create(this, Uri.parse(path));
这将引发 IllegalStateException:
java.lang.IllegalStateException: Unknown URL: content://media/internal/audio/media/Capella
关于如何获得特定通知声音的正确路径的任何想法?
//为了播放铃声,您需要使用 RingtoneManager 创建一个新的铃声并将其传递给一个变量
铃声 rt = mRingtoneManager.getRingtone(this, uri);
rt.play();
谢谢
播放声音的正确方法是使用它的 ID 而不是名称:
cursor.getInt(RingtoneManager.ID_COLUMN_INDEX)
感谢 Darkie 为我指明了正确的方向。
我创建了一个对话框,用于为应用程序选择通知声音。我正在通过从 RingtoneManager 获取光标来查询通知声音:
RingtoneManager manager = new RingtoneManager(this);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();
然后我通过将声音路径与名称连接来存储它的完整路径。
当我将选定的声音设置为通知声音时效果很好,但我无法让媒体播放器在选择时播放它:
MediaPlayer mp = MediaPlayer.create(this, Uri.parse(path));
这将引发 IllegalStateException:
java.lang.IllegalStateException: Unknown URL: content://media/internal/audio/media/Capella
关于如何获得特定通知声音的正确路径的任何想法?
//为了播放铃声,您需要使用 RingtoneManager 创建一个新的铃声并将其传递给一个变量
铃声 rt = mRingtoneManager.getRingtone(this, uri); rt.play();
谢谢
播放声音的正确方法是使用它的 ID 而不是名称:
cursor.getInt(RingtoneManager.ID_COLUMN_INDEX)
感谢 Darkie 为我指明了正确的方向。