Android 播放特定的通知声音
我创建了一个对话框,用于为应用程序选择通知声音。我通过从RingtoneManager获取光标来查询通知声音:Android 播放特定的通知声音,android,android-mediaplayer,Android,Android Mediaplayer,我创建了一个对话框,用于为应用程序选择通知声音。我通过从RingtoneManager获取光标来查询通知声音: RingtoneManager manager = new RingtoneManager(this); manager.setType(RingtoneManager.TYPE_NOTIFICATION); Cursor cursor = manager.getCursor(); 然后,我通过将声音路径与名称连接起来来存储它的完整路径 当我将所选声音设置为通知声音时,此功能正常,但
RingtoneManager manager = new RingtoneManager(this);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();
然后,我通过将声音路径与名称连接起来来存储它的完整路径
当我将所选声音设置为通知声音时,此功能正常,但我无法让media player在选择时播放它:
MediaPlayer mp = MediaPlayer.create(this, Uri.parse(path));
这会引发非法状态异常:
java.lang.IllegalStateException: Unknown URL: content://media/internal/audio/media/Capella
关于如何获得特定通知声音的正确路径,您有什么想法吗?//要播放铃声,您需要使用RingtoneManager创建一个新铃声,并将其传递给一个变量 Ringtone rt=mRingtoneManager.getRingtone(这个,uri); rt.play()
谢谢播放声音的正确方法是使用它的ID,而不是名称:
cursor.getInt(RingtoneManager.ID_COLUMN_INDEX)
感谢Darkie为我指明了正确的方向。path变量包含什么值?@Darkie“content://media/internal/audio/media/Capella“我认为,在媒体播放/播放之后,您应该获得曲目的id,而不是名称,因为当您访问路径时,它会为您提供带有id而不是名称的曲目路径。你应该检查一下……你是如何得到路径的?很高兴帮助你……:)