Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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的MediaPlayer中获取空指针异常?_Android_Media Player_Uri_Ringtone - Fatal编程技术网

在Android的MediaPlayer中获取空指针异常?

在Android的MediaPlayer中获取空指针异常?,android,media-player,uri,ringtone,Android,Media Player,Uri,Ringtone,我正在努力在媒体播放器中实用地播放铃声。在此之前,我将所有铃声绝对路径存储在SQLite DB中。当我必须播放铃声时,我需要从DB中获取路径并将其转换为URI,然后播放铃声,但在下面代码的第2行中出现空指针异常 Uri u = Uri.parse(soundpath); player = MediaPlayer.create(this, u); Context con =getApplicationContext(); player.setWakeMode(co

我正在努力在媒体播放器中实用地播放铃声。在此之前,我将所有铃声绝对路径存储在SQLite DB中。当我必须播放铃声时,我需要从DB中获取路径并将其转换为URI,然后播放铃声,但在下面代码的第2行中出现空指针异常

    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
-您是否正确存储了它

确保您正确地存储了它们。如果无法更改它们的存储方式,则在传递到
MediaPlayer

soundpath = soundpath.replaceAll("/content:/", "content://");

我正在将URI路径从字符串转换为文件,这不是必需的。 错误发生在路径生成时。 新代码发布如下:

Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition);
            System.out.println(ringtone.getTitle(this));
        String  uri =ringtoneMgr.getRingtoneUri(currentPosition).toString();
Toast.LENGTH_LONG).show();
            ringtonemap.put(ringtone.getTitle(this),uri);
            arraylist.add(ringtone.getTitle(this));
当我必须播放铃声时:

player = MediaPlayer.create(this, Uri.parse(soundpath));

那个uri看起来不对。它应该是
content://media/internal/audio/media/23
-您是否正确存储了它?我将“content:/media/internal/audio/media/23”作为URI,并将其转换为绝对路径并保存到hashmap。即使是错误的URI也不会导致第2行出现空指针异常。所以我不确定发生了什么。请发布stacktrace和更多mediaplayer创建代码(理想情况下是在什么上下文中,等等)?我想你是对的,我已经复制粘贴了你指定的URI,它现在正在工作。我已经添加了我的答案:)