【问题标题】:Android MediaPlayer - error (1, -4) when playing a songAndroid MediaPlayer - 播放歌曲时出错 (1, -4)
【发布时间】:2013-08-23 21:26:01
【问题描述】:

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

我有一个Spinner,其中填充了存储在 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();
            }

        }
    };

我收到以下错误:

08-21 16:16:37.099: I/MusicFileActivity(3940): -------------  PATH : /external/audio/media/antazirouka
08-21 16:16:37.159: W/MediaPlayer(3940): info/warning (1, 26)
08-21 16:16:37.159: E/MediaPlayer(3940): error (1, -4)
08-21 16:16:37.159: W/System.err(3940): java.io.IOException: Prepare failed.: status=0x1
08-21 16:16:37.169: W/System.err(3940):     at android.media.MediaPlayer.prepare(Native Method)
08-21 16:16:37.169: W/System.err(3940):     at com.example.project.MusicFileActivity$1.onItemSelected(MusicFileActivity.java:84)
08-21 16:16:37.169: W/System.err(3940):     at android.widget.AdapterView.fireOnSelected(AdapterView.java:871)
08-21 16:16:37.169: W/System.err(3940):     at android.widget.AdapterView.access$200(AdapterView.java:42)
08-21 16:16:37.169: W/System.err(3940):     at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:837)
08-21 16:16:37.169: W/System.err(3940):     at android.os.Handler.handleCallback(Handler.java:587)
08-21 16:16:37.169: W/System.err(3940):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-21 16:16:37.169: W/System.err(3940):     at android.os.Looper.loop(Looper.java:123)
08-21 16:16:37.169: W/System.err(3940):     at android.app.ActivityThread.main(ActivityThread.java:3687)
08-21 16:16:37.169: W/System.err(3940):     at java.lang.reflect.Method.invokeNative(Native Method)
08-21 16:16:37.169: W/System.err(3940):     at java.lang.reflect.Method.invoke(Method.java:507)
08-21 16:16:37.169: W/System.err(3940):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
08-21 16:16:37.169: W/System.err(3940):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
08-21 16:16:37.169: W/System.err(3940):     at dalvik.system.NativeStart.main(Native Method)

有人知道吗? 在此先感谢:)

【问题讨论】:

  • 媒体文件是否可访问,是否为兼容格式(如 mp3?)
  • 是的,它是可访问的,它是一个 mp3 文件
  • @Hanady 嘿,我自己正在开发一个音乐播放器。你想分享你的均衡器的代码吗?来自互联网......

标签: android media-player audio-streaming live-streaming


【解决方案1】:

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

或打错电话.prepare()(必须拨打.setDataSource() before .prepare())。查看@TheLittleNaruto 的答案。

【讨论】:

    【解决方案2】:

    老兄,你把 mP.prepare(); 放在了错误的行 你需要在 mP.setDataSource(context, uri); 函数之后调用它 之前 mp.start();

    也不要尝试创建多个 MediaPlayer 实例。每次开始前制作一个并使用reset()函数。

    请参阅this link 以获得更多帮助。

    【讨论】:

      【解决方案3】:

      你在 AndroidManifest.xml 中有这个权限吗?

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

      【讨论】:

      • 不,我没有,但我只是添加了它,没有任何改变
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多