【发布时间】:2013-06-28 09:08:35
【问题描述】:
我正在努力在 MEDIA PLAYER 中实用地播放铃声。在此之前,我已将我所有的 RINGTONES 绝对路径存储在 SQLite DB 中。当我必须播放铃声时,我需要从 DB 中获取路径并将其转换为 URI 并播放铃声,但我在下面代码的第 2 行中得到 NULL POINTER EXCEPTION。
Uri u = Uri.parse(soundpath);
player = MediaPlayer.create(this, u);
Context con =getApplicationContext();
player.setWakeMode(con,PowerManager.PARTIAL_WAKE_LOCK);
player.setVolume(1f, 1f);
player.start();
在调试时,我将变量 soundpath 的值设为 /content:/media/internal/audio/media/23
请给我建议。
已编辑:用于将所有铃声存储在 HASHMAP 中的代码
Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition);
System.out.println(ringtone.getTitle(this));
File uripath=new File(ringtoneMgr.getRingtoneUri(currentPosition).toString());
Toast.LENGTH_LONG).show();
ringtonemap.put(ringtone.getTitle(this), uripath.getAbsolutePath());
arraylist.add(ringtone.getTitle(this));
【问题讨论】:
-
那个 uri 看起来不对。应该是
content://media/internal/audio/media/23- 你存储正确吗? -
我将 'content:/media/internal/audio/media/23' 作为 URI 并将其转换为绝对路径并将其保存到 hashmap。
-
即使是错误的 uri 也不应该导致第 2 行出现空指针异常。所以我不确定发生了什么。请发布堆栈跟踪和最好的更多媒体播放器创建代码(它在什么上下文中,等等)?
-
我认为你是对的,我已经复制粘贴了你指定的 URI,它现在正在工作。
-
我已经添加了我的答案:)
标签: android media-player uri ringtone