【问题标题】:Error: mediaplayer start called in state 0 error(-38,0)错误:在状态 0 错误(-38,0)中调用媒体播放器启动
【发布时间】:2014-04-21 12:50:03
【问题描述】:

我是 android 新手,我已经编写了链接媒体播放器播放歌曲的代码

我创建了一个文件夹 path="//localhost/Android/sd/vande.mp3 文件存在

public class MainActivity extends Activity {
Button start,pause,stop;
boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    start=(Button)findViewById(R.id.button1);
    pause=(Button)findViewById(R.id.button2);
    stop=(Button)findViewById(R.id.button3);

    final MediaPlayer mp=new MediaPlayer();
    try{
    mp.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/Android/music/vande.mp3");

    mp.prepare();

    }catch(Exception e){e.printStackTrace();}

    mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
    { 
        public void onPrepared(MediaPlayer player) 
        {  
            //mp.start();
            flag = true; 
        } 

    });
    if(flag ==true)
    {
        start.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.start();
            }
        });
    }
    else
    {
        stop.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.stop();
            }
        });
    }

    pause.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mp.pause();
        }
    });
}}

但是当我检查 logcat 时文件没有播放,弹出一个错误“开始调用状态 0 错误 (-38,0)

任何人都可以帮助解决此代码

提前感谢

【问题讨论】:

  • 我试过 onPreparedListener 而不是 onClickListener
  • 在媒体播放器准备好之前开始调用
  • mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer player) { mp.start(); } });
  • 发布了代码。检查它是否有效,您可以接受相同的

标签: java android media-player


【解决方案1】:

你需要等到媒体播放器准备好后再调用start

mp.setOnPreparedListener(
new MediaPlayer.OnPreparedListener() {
 public void onPrepared(MediaPlayer player) 
 { 
    mp.start();  
 }
 });

如果您想在按钮单击时启动播放器。你可以有一面旗帜。 boolean flag=false;

然后

 public void onPrepared(MediaPlayer player) 
 { 
   flag= true; 
 }

然后在onClick中

if(flag ==true)
{
  mp.start();
}else
{
     // media player not prepared
}

【讨论】:

  • 我已经编辑了这段代码@Raghunandan,但为什么我不知道它仍然需要很长时间
  • @SandeepV 因为媒体播放器还没有准备好。你需要等待它发生
  • @SandeepV 在点击时检查里面的标志。不知道时间
  • @SandeepV 你没有从互联网上流式传输音频,所以拥有互联网权限是没有意义的
猜你喜欢
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多