我有通知声音的 URI,例如content://media/internal/audio/media/122
,但SoundPool
不适用于 URI,它仅适用于文件路径的 apk 资源。
有没有办法从 URI 获取媒体文件路径?我试过Uri.getPath()
,它返回/internal/audio/media/122
,但这不是有效的文件路径,当然SoundPool
不适用于这样的补丁。
实际上通知的真正路径是/system/media/audio/notifications/allegro.ogg
,我看不到从 URI 中获取它的方法,例如content://media/internal/audio/media/122
或者我应该为此使用MediaPlayer
吗?我测试过,它有效:
MediaPlayer mp = MediaPlayer.create(this, "content://media/internal/audio/media/122");
mp.start();
我很困惑,因为MediaPlayer
似乎太重而无法播放简短的通知声音,所以我更喜欢使用SoundPool
.
如果我对MediaPlayer
重量有误,请告诉我,并建议通过其 URI 播放通知声音的正确方法。