Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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-播放歌曲时出错(1,-4)_Android_Media Player_Audio Streaming_Live Streaming - Fatal编程技术网

Android MediaPlayer-播放歌曲时出错(1,-4)

Android MediaPlayer-播放歌曲时出错(1,-4),android,media-player,audio-streaming,live-streaming,Android,Media Player,Audio Streaming,Live Streaming,我正在尝试从sd卡播放mp3音频文件,使用音频文件的路径和文件名获取其Uri 我有一个微调器,里面填充了存储在sd卡中的曲目名称。 选择项目时,将执行以下代码: final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; OnItemSelectedListener listener = new OnItemSelectedListener(){ @Override public void onItem

我正在尝试从sd卡播放mp3音频文件,使用音频文件的路径和文件名获取其Uri

我有一个
微调器
,里面填充了存储在sd卡中的曲目名称。 选择项目时,将执行以下代码:

final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
OnItemSelectedListener listener = new OnItemSelectedListener(){
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            TextView tv = (TextView) selectedItemView;

            File file = new File(uri.getPath() + "/" + tv.getText().toString());
            Log.i(TAG, "-------------  PATH : " + file.getAbsolutePath());
            Uri uri = Uri.fromFile(file);
            MediaPlayer mP = new MediaPlayer();
            try {
                mP.setDataSource(context, uri);

                mP.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {
                        // TODO Auto-generated method stub
                        mp.start();

                    }
                });

            } catch (IllegalArgumentException e) {
                  e.printStackTrace();
            } catch (IllegalStateException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
            try {
                mP.prepare();
            } catch (IllegalStateException e) {
              e.printStackTrace();
            } catch (IOException e) {
             e.printStackTrace();
            }

        }
    };
有人知道吗?
提前感谢:)

您在AndroidManifest.xml中有此权限吗

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

你放在
mP.prepare()的家伙位于错误的行
您需要在mP.setDataSource(context,uri)之后调用它功能
在
mp.start()之前

也不要尝试制作多个MediaPlayer的实例。每次启动前,制作一个并使用reset()函数


请查看以获得更多帮助

.setDataSource(fileName)
中设置的错误文件名或文件路径


或错误调用
.prepare()
(必须在.prepare()
之前调用
.setDataSource())。请参阅答案@TheLittleNaruto。

媒体文件是否可访问且格式兼容(如mp3?)。是,这是一个可以访问的mp3file@Hanady嘿,我自己正在开发一个音乐播放器。你想分享均衡器的代码吗?我可以分享我从互联网上获取艺术家图像后如何在背景中显示它的代码……不,我没有,但我只是添加了它,没有任何更改
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />