MediaPlayer的错误(1,-1004)又名MEDIA_ERROR_IO试图将音乐三星S3又名、错误、音乐、MediaPlayer

2023-09-12 22:03:32 作者:學兔斯基瞇眼看世界

我们的应用程序必须从在线源(我不能随意透露该源)串流音乐。

为什么要花超过2分钟开始流的S3?

我已经能够弄清楚,媒体播放器对象进入的错误状态由于 MEDIA_ERROR_UNKOWN - 伟大的。并不能帮助我很多。因此,在处理这onError的与OnErrorListener,我重设媒体播放器对象,然后调用startPlaying它没有休息 - 设置数据源等

会员:

 私人进度playSeekBar;
私人ImageView的ivPlay;
私人ImageView的ivPause;
私人ImageView的ivBuffer;
私人MediaPlayer的MPLAYER;
私人ImageView的ivInfo;
私人AudioManager音频;
 

初​​始化媒体播放器(和可视化 - 这不是问题,对于这​​个问题的目的)

 私人无效initialMediaPlayerAndVisualizer(){
      Log.d(TAG,初始媒体播放器和可视化);

      playSeekBar =(进度)findViewById(R.id.progressBar1);
      playSeekBar.setMax(100);
      playSeekBar.setVisibility(View.GONE);

      MPLAYER =新的MediaPlayer();

      Log.d(TAG,创建onErrorListener);
      MediaPlayer.OnErrorListener errorListener =新MediaPlayer.OnErrorListener(){

        @覆盖
        公共布尔的onError(MediaPlayer的熔点,诠释了什么,整型附加){
            Log.d(TAG的OnError  - 错误code:+什么+额外code:+另计);

            开关(什么){
            案例-1004:
                Log.d(流媒体,MEDIA_ERROR_IO);
                打破;
            案例-1007:
                Log.d(流媒体,MEDIA_ERROR_MALFORMED);
                打破;
            案例200:
                Log.d(流媒体,MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK);
                打破;
            案例100:
                Log.d(流媒体,MEDIA_ERROR_SERVER_DIED);
                打破;
            案例-110:
                Log.d(流媒体,MEDIA_ERROR_TIMED_OUT);
                打破;
            情况1:
                Log.d(流媒体,MEDIA_ERROR_UNKNOWN);
                打破;
            案例-1010:
                Log.d(流媒体,MEDIA_ERROR_UNSUPPORTED);
                打破;

            }

            开关(额外){
            案例800:
                Log.d(流媒体,MEDIA_INFO_BAD_INTERLEAVING);
                打破;
            案例702:
                Log.d(流媒体,MEDIA_INFO_BUFFERING_END);
                打破;
            案例701:
                Log.d(流媒体,MEDIA_INFO_METADATA_UPDATE);
                打破;
            案例802:
                Log.d(流媒体,MEDIA_INFO_METADATA_UPDATE);
                打破;
            案例801:
                Log.d(流媒体,MEDIA_INFO_NOT_SEEKABLE);
                打破;
            情况1:
                Log.d(流媒体,MEDIA_INFO_UNKNOWN);
                打破;
            案例3:
                Log.d(流媒体,MEDIA_INFO_VIDEO_RENDERING_START);
                打破;
            案例700:
                Log.d(流媒体,MEDIA_INFO_VIDEO_TRACK_LAGGING);
                打破;

            }

            Log.d(流媒体,重设媒体播放器);
            mPlayer.reset();
            //我们需要可视化视图链接到媒体播放器,使其显示的东西
              mVisualizerManager =新VisualizerManager(上下文); //(VisualizerView)findViewById(R.id.visualizerView);

              //发送visualizerContainer到渲染器
              visualizerRenderer =新VisualizerRenderer(arrayVisualizer);
              mVisualizerManager.addRenderer(visualizerRenderer);

              尝试 {
                startPlaying();
            }赶上(IllegalStateException异常E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }赶上(IOException异常E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }

            返回true;
        }
    };

    Log.d(TAG,关于媒体播放器对象设置错误监听);
     mPlayer.setOnErrorListener(errorListener);

      //我们需要可视化视图链接到媒体播放器,使其显示的东西
      mVisualizerManager =新VisualizerManager(上下文); //(VisualizerView)findViewById(R.id.visualizerView);

      //发送visualizerContainer到渲染器
      visualizerRenderer =新VisualizerRenderer(arrayVisualizer);
      mVisualizerManager.addRenderer(visualizerRenderer);

      尝试 {
        startPlaying();
    }赶上(IllegalStateException异常E){
        // TODO自动生成的catch块
        e.printStackTrace();
    }赶上(IOException异常E){
        // TODO自动生成的catch块
        e.printStackTrace();
    }
}
 
media player的问题

开始播放:

 私人无效startPlaying()抛出IllegalStateException异常,IOException异常,UnsupportedOperationException异常
  {

    如果(MPLAYER!= NULL){

          ivPause.setVisibility(View.INVISIBLE);
          ivPlay.setVisibility(View.INVISIBLE);
          ivBuffer.setVisibility(View.VISIBLE);

        mVisualizerManager.link(MPLAYER);

        mPlayer.setOnBufferingUpdateListener(新OnBufferingUpdateListener(){

            公共无效onBufferingUpdate(MediaPlayer的熔点,INT百分比){
                playSeekBar.setSecondaryProgress(百分比);
                Log.i(缓冲,+百分比);
            }
        });

        尝试 {
            mPlayer.setDataSource(theSource);
        }赶上(抛出:IllegalArgumentException E){
            Log.d(TAG,非法参数异常:+ E);
            e.printStackTrace();
        }赶上(IllegalStateException异常E){
            Log.d(TAG,非法状态异常:+ E);
            e.printStackTrace();
        }赶上(IOException异常E){
            Log.d(TAG,IO异常:+ E);
            e.printStackTrace();
        }

      。MPLAYER prepareAsync();

      mPlayer.setOn preparedListener(新在preparedListener(){
          公共无效于prepared(MediaPlayer的MP){
              ivBuffer.setVisibility(View.INVISIBLE);

              bars.setVisibility(View.INVISIBLE);
              visualizerContainer.setVisibility(View.VISIBLE);
              ivInfo.setImageResource(R.drawable.img_radio_info_online);
              ivPause.setVisibility(View.VISIBLE);
              ivPlay.setVisibility(View.INVISIBLE);

              //静音视频,如果手机处于静音状态。
              如果((audio.getRingerMode()== AudioManager.RINGER_MODE_SILENT)||(audio.getRingerMode()== AudioManager.RINGER_MODE_VIBRATE)){
                  mp.setVolume(0,0);

                  吐司面包= Toast.makeText(背景下,R.string.device_muted,Toast.LENGTH_LONG);
                  toast.show();
              }

              mPlayer.start();
          }
      });

    }其他{
        Log.d(TAG,媒体播放器为空);
        initialMediaPlayerAndVisualizer();
    }



}
 

停止播放:

 私人无效stopPlaying()
      {
      bars.setVisibility(View.VISIBLE);
      visualizerContainer.setVisibility(View.INVISIBLE);

      ivInfo.setImageResource(R.drawable.img_radio_info_offline);

      ivPlay.setVisibility(View.VISIBLE);
      ivPause.setVisibility(View.INVISIBLE);

      mPlayer.stop();

      mVisualizerManager.release();
      mPlayer.release();

      MPLAYER = NULL;
}
 

一个小日志:

  05-21 16:26:23.600:I /缓冲(3921):0

05-21 16:26:23.600:I / MediaPlayer的(3921):信息(703156)
05-21 16:26:23.600:I / MediaPlayer的(3921):信息(701,0)
05-21 16:26:23.610:D / VisualizerRenderer(3921):渲染列
05-21 16:26:23.715:V / MediaPlayer的(3921):收到的消息味精= 100,外部1​​ = 1,EXT2 = -110
05-21 16:26:23.715:E / MediaPlayer的(3921):错误(1,-110)
05-21 16:26:23.715:V / MediaPlayer的(3921):回调应用
05-21 16:26:23.715:V / MediaPlayer的(3921):从回调回来
05-21 16:26:23.725:D / VisualizerRenderer(3921):渲染列
05-21 16:26:23.725:E / MediaPlayer的(3921):错误(1,-110)
05-21 16:26:23.725:D / MAIN(3921):的OnError  - 错误code:1张额外的code:-110
05-21 16:26:23.725:D /流媒体(3921):MEDIA_ERROR_UNKNOWN
05-21 16:26:23.725:D /流媒体(3921):重设媒体播放器
05-21 16:26:23.725:V / MediaPlayer的-JNI(3921):复位
05-21 16:26:23.725:V / MediaPlayer的(3921):复位
05-21 16:26:23.730:D / VisualizerRenderer(3921):分部:9
05-21 16:26:23.730:D / VisualizerManager(3921):增加TE渲染器
05-21 16:26:23.730:V / MediaPlayer的-JNI(3921):get_session_id()
05-21 16:26:23.735:D / VisualizerManager(3921):媒体播放器和可视化链接
05-21 16:26:23.735:D / VisualizerManager(3921):设置捕获监听器
05-21 16:26:23.735:D / VisualizerManager(3921):设置可视化完整的监听器
05-21 16:26:23.740:V / MediaPlayer的(3921):setVideoSurfaceTexture
05-21 16:26:23.740:V / MediaPlayer的(3921):prepareAsync
05-21 16:26:25.285:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:25.285:V / MediaPlayer的(3921):缓冲0
05-21 16:26:25.285:V / MediaPlayer的(3921):回调应用
05-21 16:26:25.285:V / MediaPlayer的(3921):从回调回来
05-21 16:26:25.330:I /缓冲(3921):0
05-21 16:26:25.390:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:25.390:V / MediaPlayer的(3921):缓冲0
05-21 16:26:25.390:V / MediaPlayer的(3921):回调应用
05-21 16:26:25.390:V / MediaPlayer的(3921):从回调回来
05-21 16:26:25.425:I /缓冲(3921):0
05-21 16:26:25.490:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:25.490:V / MediaPlayer的(3921):缓冲0
05-21 16:26:25.490:V / MediaPlayer的(3921):回调应用
05-21 16:26:25.490:V / MediaPlayer的(3921):从回调回来
...

05-21 16:26:52.585:I /缓冲(3921):0
05-21 16:26:53.570:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:53.570:V / MediaPlayer的(3921):缓冲0
05-21 16:26:53.570:V / MediaPlayer的(3921):回调应用
05-21 16:26:53.570:V / MediaPlayer的(3921):从回调回来
05-21 16:26:53.585:I /缓冲(3921):0
05-21 16:26:54.570:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:54.570:V / MediaPlayer的(3921):缓冲0
05-21 16:26:54.570:V / MediaPlayer的(3921):回调应用
05-21 16:26:54.570:V / MediaPlayer的(3921):从回调回来
05-21 16:26:54.570:V / MediaPlayer的(3921):收到的消息味精= 200,外部1​​ = 702,EXT2 = 0
05-21 16:26:54.570:W / MediaPlayer的(3921):信息/警告(702,0)
05-21 16:26:54.570:V / MediaPlayer的(3921):回调应用
05-21 16:26:54.570:V / MediaPlayer的(3921):从回调回来
05-21 16:26:54.590:I /缓冲(3921):0
05-21 16:26:54.590:I / MediaPlayer的(3921):信息(702,0)
05-21 16:26:55.575:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:55.575:V / MediaPlayer的(3921):缓冲0
05-21 16:26:55.575:V / MediaPlayer的(3921):回调应用
05-21 16:26:55.575:V / MediaPlayer的(3921):从回调回来
05-21 16:26:55.575:I /缓冲(3921):0
05-21 16:26:56.575:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:56.575:V / MediaPlayer的(3921):缓冲0
05-21 16:26:56.575:V / MediaPlayer的(3921):回调应用
05-21 16:26:56.575:V / MediaPlayer的(3921):从回调回来
05-21 16:26:56.585:I /缓冲(3921):0
05-21 16:26:57.575:V / MediaPlayer的(3921):收到的消息味精= 3,外部1 = 0,EXT2 = 0
05-21 16:26:57.575:V / MediaPlayer的(3921):缓冲0
05-21 16:26:57.575:V / MediaPlayer的(3921):回调应用
05-21 16:26:57.575:V / MediaPlayer的(3921):从回调回来
05-21 16:26:57.600:I /缓冲(3921):0
05-21 16:26:57.930:V / MediaPlayer的-JNI(3921):停止
05-21 16:26:57.930:V / MediaPlayer的(3921):停止
05-21 16:26:57.930:D / VisualizerManager(3921):公布的可视化
05-21 16:26:57.930:V / MediaPlayer的-JNI(3921):发行
05-21 16:26:57.930:V / MediaPlayer的(3921):使用setListener
05-21 16:26:57.930:V / MediaPlayer的(3921):断开
05-21 16:26:57.935:V / MediaPlayer的(3921):析构函数
05-21 16:26:57.935:V / MediaPlayer的(3921):断开
 

解决方案

在这个问题的答案竟然是在Android固件安装在三星S III的设备运行的是Android 4.1.2的问题。

这似乎已经与流的源头的东西,因为一些消息来源,最终发挥的设备上,但我们需要一个,从来没有打过。

如果你可以从其他来源的数据流,它应该工作。

所以,如果你正在开发一个特定的公司/目的的应用程序并通过该流的来源一定的控制,也可以与人在流的源控制沟通,让他们改变的源流的东西,将工作的是三星S III运行Android 4.1.2。

除此之外,所有可以解决,这是一个固件升级。

Our application has to stream music from from an online source (I'm not at liberty to disclose that source).

Why does it take over 2 minutes to start streaming on the S3?

I've been able to figure out that the Media Player object goes into the Error state due to MEDIA_ERROR_UNKOWN - great. Doesn't help me much. So upon handling this in onError with an OnErrorListener, I reset the Media Player object and then call startPlaying which does the rest - setting the data source, etc.

Members:

private ProgressBar playSeekBar;
private ImageView ivPlay;
private ImageView ivPause;
private ImageView ivBuffer;
private MediaPlayer mPlayer;
private ImageView ivInfo;
private AudioManager audio;

Initializing the Media Player (and Visualizer - which is not the issue for the purpose of this question)

private void initialMediaPlayerAndVisualizer() {
      Log.d(TAG, "Initial Media Player and Visualizer");

      playSeekBar = (ProgressBar) findViewById(R.id.progressBar1);
      playSeekBar.setMax(100);
      playSeekBar.setVisibility(View.GONE);

      mPlayer = new MediaPlayer();   

      Log.d(TAG, "Create onErrorListener");
      MediaPlayer.OnErrorListener errorListener = new MediaPlayer.OnErrorListener() {

        @Override
        public boolean onError(MediaPlayer mp, int what, int extra) {
            Log.d(TAG, "OnError - Error code: "+what+" Extra code: "+extra);

            switch(what){
            case -1004:
                Log.d("Streaming Media", "MEDIA_ERROR_IO");
                break;
            case -1007:
                Log.d("Streaming Media", "MEDIA_ERROR_MALFORMED");
                break;
            case 200:
                Log.d("Streaming Media", "MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK");
                break;
            case 100:
                Log.d("Streaming Media", "MEDIA_ERROR_SERVER_DIED");
                break;
            case -110:
                Log.d("Streaming Media", "MEDIA_ERROR_TIMED_OUT");
                break;
            case 1:
                Log.d("Streaming Media", "MEDIA_ERROR_UNKNOWN");
                break;
            case -1010:
                Log.d("Streaming Media", "MEDIA_ERROR_UNSUPPORTED");
                break;

            }

            switch(extra){
            case 800:
                Log.d("Streaming Media", "MEDIA_INFO_BAD_INTERLEAVING");
                break;
            case 702:
                Log.d("Streaming Media", "MEDIA_INFO_BUFFERING_END");
                break;
            case 701:
                Log.d("Streaming Media", "MEDIA_INFO_METADATA_UPDATE");
                break;
            case 802:
                Log.d("Streaming Media", "MEDIA_INFO_METADATA_UPDATE");
                break;
            case 801:
                Log.d("Streaming Media", "MEDIA_INFO_NOT_SEEKABLE");
                break;
            case 1:
                Log.d("Streaming Media", "MEDIA_INFO_UNKNOWN");
                break;
            case 3:
                Log.d("Streaming Media", "MEDIA_INFO_VIDEO_RENDERING_START");
                break;
            case 700 :
                Log.d("Streaming Media", "MEDIA_INFO_VIDEO_TRACK_LAGGING");
                break;

            }

            Log.d("Streaming Media", "Reset media player");
            mPlayer.reset();
            // We need to link the visualizer view to the media player so that it displays something
              mVisualizerManager = new VisualizerManager(context); //(VisualizerView) findViewById(R.id.visualizerView);

              //Send the visualizerContainer to the Renderer
              visualizerRenderer = new VisualizerRenderer(arrayVisualizer);
              mVisualizerManager.addRenderer(visualizerRenderer);

              try {
                startPlaying();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return true;
        }
    };

    Log.d(TAG, "Set error listener on Media Player object");          
     mPlayer.setOnErrorListener(errorListener);

      // We need to link the visualizer view to the media player so that it displays something
      mVisualizerManager = new VisualizerManager(context); //(VisualizerView) findViewById(R.id.visualizerView);

      //Send the visualizerContainer to the Renderer
      visualizerRenderer = new VisualizerRenderer(arrayVisualizer);
      mVisualizerManager.addRenderer(visualizerRenderer);

      try {
        startPlaying();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Start playing:

private void startPlaying () throws IllegalStateException, IOException, UnsupportedOperationException
  {

    if(mPlayer != null){

          ivPause.setVisibility(View.INVISIBLE);
          ivPlay.setVisibility(View.INVISIBLE);
          ivBuffer.setVisibility(View.VISIBLE);

        mVisualizerManager.link(mPlayer);

        mPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

            public void onBufferingUpdate(MediaPlayer mp, int percent) {
                playSeekBar.setSecondaryProgress(percent);
                Log.i("Buffering", "" + percent);
            }
        });

        try {
            mPlayer.setDataSource(theSource);
        } catch (IllegalArgumentException e) {
            Log.d(TAG, "Illegal Argument Exception: "+e);
            e.printStackTrace();
        } catch (IllegalStateException e) {
            Log.d(TAG, "Illegal State Exception: "+e);
            e.printStackTrace();
        } catch (IOException e) {
            Log.d(TAG, "IO Exception: "+e);
            e.printStackTrace();
        }

      mPlayer.prepareAsync();

      mPlayer.setOnPreparedListener(new OnPreparedListener() {
          public void onPrepared(MediaPlayer mp) {
              ivBuffer.setVisibility(View.INVISIBLE);

              bars.setVisibility(View.INVISIBLE);
              visualizerContainer.setVisibility(View.VISIBLE);
              ivInfo.setImageResource(R.drawable.img_radio_info_online);
              ivPause.setVisibility(View.VISIBLE);
              ivPlay.setVisibility(View.INVISIBLE);

              //Mute the video if the phone is muted.
              if ((audio.getRingerMode() == AudioManager.RINGER_MODE_SILENT) ||  (audio.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE)) {
                  mp.setVolume(0, 0);

                  Toast toast = Toast.makeText(context, R.string.device_muted, Toast.LENGTH_LONG);
                  toast.show();
              }

              mPlayer.start();
          }
      });

    }else{
        Log.d(TAG, "Media player is null.");
        initialMediaPlayerAndVisualizer();
    }



}

Stop playing:

private void stopPlaying()
      {
      bars.setVisibility(View.VISIBLE);
      visualizerContainer.setVisibility(View.INVISIBLE);

      ivInfo.setImageResource(R.drawable.img_radio_info_offline);

      ivPlay.setVisibility(View.VISIBLE);
      ivPause.setVisibility(View.INVISIBLE);

      mPlayer.stop();

      mVisualizerManager.release();
      mPlayer.release();

      mPlayer = null;
}

A little logs:

05-21 16:26:23.600: I/Buffering(3921): 0

05-21 16:26:23.600: I/MediaPlayer(3921): Info (703,156)
05-21 16:26:23.600: I/MediaPlayer(3921): Info (701,0)
05-21 16:26:23.610: D/VisualizerRenderer(3921): Render columns
05-21 16:26:23.715: V/MediaPlayer(3921): message received msg=100, ext1=1, ext2=-110
05-21 16:26:23.715: E/MediaPlayer(3921): error (1, -110)
05-21 16:26:23.715: V/MediaPlayer(3921): callback application
05-21 16:26:23.715: V/MediaPlayer(3921): back from callback
05-21 16:26:23.725: D/VisualizerRenderer(3921): Render columns
05-21 16:26:23.725: E/MediaPlayer(3921): Error (1,-110)
05-21 16:26:23.725: D/MAIN(3921): OnError - Error code: 1 Extra code: -110
05-21 16:26:23.725: D/Streaming Media(3921): MEDIA_ERROR_UNKNOWN
05-21 16:26:23.725: D/Streaming Media(3921): Reset media player
05-21 16:26:23.725: V/MediaPlayer-JNI(3921): reset
05-21 16:26:23.725: V/MediaPlayer(3921): reset
05-21 16:26:23.730: D/VisualizerRenderer(3921): Divisions: 9
05-21 16:26:23.730: D/VisualizerManager(3921): Added te renderer
05-21 16:26:23.730: V/MediaPlayer-JNI(3921): get_session_id()
05-21 16:26:23.735: D/VisualizerManager(3921): Media player and visualizer linked
05-21 16:26:23.735: D/VisualizerManager(3921): Set capture listener
05-21 16:26:23.735: D/VisualizerManager(3921): Set on visualizer complete listener
05-21 16:26:23.740: V/MediaPlayer(3921): setVideoSurfaceTexture
05-21 16:26:23.740: V/MediaPlayer(3921): prepareAsync
05-21 16:26:25.285: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:25.285: V/MediaPlayer(3921): buffering 0
05-21 16:26:25.285: V/MediaPlayer(3921): callback application
05-21 16:26:25.285: V/MediaPlayer(3921): back from callback
05-21 16:26:25.330: I/Buffering(3921): 0
05-21 16:26:25.390: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:25.390: V/MediaPlayer(3921): buffering 0
05-21 16:26:25.390: V/MediaPlayer(3921): callback application
05-21 16:26:25.390: V/MediaPlayer(3921): back from callback
05-21 16:26:25.425: I/Buffering(3921): 0
05-21 16:26:25.490: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:25.490: V/MediaPlayer(3921): buffering 0
05-21 16:26:25.490: V/MediaPlayer(3921): callback application
05-21 16:26:25.490: V/MediaPlayer(3921): back from callback
...

05-21 16:26:52.585: I/Buffering(3921): 0
05-21 16:26:53.570: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:53.570: V/MediaPlayer(3921): buffering 0
05-21 16:26:53.570: V/MediaPlayer(3921): callback application
05-21 16:26:53.570: V/MediaPlayer(3921): back from callback
05-21 16:26:53.585: I/Buffering(3921): 0
05-21 16:26:54.570: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:54.570: V/MediaPlayer(3921): buffering 0
05-21 16:26:54.570: V/MediaPlayer(3921): callback application
05-21 16:26:54.570: V/MediaPlayer(3921): back from callback
05-21 16:26:54.570: V/MediaPlayer(3921): message received msg=200, ext1=702, ext2=0
05-21 16:26:54.570: W/MediaPlayer(3921): info/warning (702, 0)
05-21 16:26:54.570: V/MediaPlayer(3921): callback application
05-21 16:26:54.570: V/MediaPlayer(3921): back from callback
05-21 16:26:54.590: I/Buffering(3921): 0
05-21 16:26:54.590: I/MediaPlayer(3921): Info (702,0)
05-21 16:26:55.575: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:55.575: V/MediaPlayer(3921): buffering 0
05-21 16:26:55.575: V/MediaPlayer(3921): callback application
05-21 16:26:55.575: V/MediaPlayer(3921): back from callback
05-21 16:26:55.575: I/Buffering(3921): 0
05-21 16:26:56.575: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:56.575: V/MediaPlayer(3921): buffering 0
05-21 16:26:56.575: V/MediaPlayer(3921): callback application
05-21 16:26:56.575: V/MediaPlayer(3921): back from callback
05-21 16:26:56.585: I/Buffering(3921): 0
05-21 16:26:57.575: V/MediaPlayer(3921): message received msg=3, ext1=0, ext2=0
05-21 16:26:57.575: V/MediaPlayer(3921): buffering 0
05-21 16:26:57.575: V/MediaPlayer(3921): callback application
05-21 16:26:57.575: V/MediaPlayer(3921): back from callback
05-21 16:26:57.600: I/Buffering(3921): 0
05-21 16:26:57.930: V/MediaPlayer-JNI(3921): stop
05-21 16:26:57.930: V/MediaPlayer(3921): stop
05-21 16:26:57.930: D/VisualizerManager(3921): Released the visualizer
05-21 16:26:57.930: V/MediaPlayer-JNI(3921): release
05-21 16:26:57.930: V/MediaPlayer(3921): setListener
05-21 16:26:57.930: V/MediaPlayer(3921): disconnect
05-21 16:26:57.935: V/MediaPlayer(3921): destructor
05-21 16:26:57.935: V/MediaPlayer(3921): disconnect

解决方案

The answer to this question turned out to be an issue on Android firmware installed on Samsung S III devices running Android 4.1.2.

It seemed to have been something relating to the source of the stream, because some sources eventually played on the device, but the one we needed, never played.

If you can get your stream from another source, it should work.

So if you're developing an application for a specific company/purpose and have some control over the source of the stream, or can communicate with people in control of the source of the stream, get them to change the source of the stream to something that'll work on a Samsung S III running Android 4.1.2.

Other than that all that will solve this is a firmware upgrade.