Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 播放特定的通知声音_Android_Android Mediaplayer - Fatal编程技术网

Android 播放特定的通知声音

Android 播放特定的通知声音,android,android-mediaplayer,Android,Android Mediaplayer,我创建了一个对话框,用于为应用程序选择通知声音。我通过从RingtoneManager获取光标来查询通知声音: RingtoneManager manager = new RingtoneManager(this); manager.setType(RingtoneManager.TYPE_NOTIFICATION); Cursor cursor = manager.getCursor(); 然后,我通过将声音路径与名称连接起来来存储它的完整路径 当我将所选声音设置为通知声音时,此功能正常,但

我创建了一个对话框,用于为应用程序选择通知声音。我通过从RingtoneManager获取光标来查询通知声音:

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而不是名称的曲目路径。你应该检查一下……你是如何得到路径的?很高兴帮助你……:)