【问题标题】:media player issue while continuously click on button?连续单击按钮时出现媒体播放器问题?
【发布时间】:2012-08-30 02:26:26
【问题描述】:

我正在使用 android 的默认媒体播放器播放 mp3 声音,下面是我用于播放声音的代码

MediaPlayer mp=MediaPlayer.create(hello.this,R.raw.abc);
          if(mp!=null)
          {
              mp.start();
          }

我需要在单击相同的按钮时播放相同的声音。当我在一段时间后连续单击按钮时声音不起作用并且我收到错误 MediaPlayer(7395): error (-19, 0)。

有没有人对这个问题有想法, 请发给我

提前致谢。

【问题讨论】:

  • 禁用按钮,直到您的媒体播放器完成播放,或者您可以在每次单击按钮时将当前位置设置为 0
  • 感谢您的回复,是的,我们可以做到,但我认为这不是解决此问题的正确方法。我已经找到了这个问题的解决方案,我也在这里添加代码..

标签: android media-player


【解决方案1】:

打电话

mp.reset();

因为每次你都在 decalaring 对象

或在类级别的 Mediaplayer OBject 上声明

【讨论】:

    【解决方案2】:

    制作mediaplayer的全局变量,试试这个方法

             MediaPlayer mp;
    
              if (mp!=null) {
                  mp.stop();
                  mp.release();
                }
              mp= MediaPlayer.create(hello.this,R.raw.abc);
              mp.start();
    

    【讨论】:

      【解决方案3】:
          mp = new MediaPlayer();
          mp.create(this, R.raw.testmed);
          mp.setVolume(100, 100);
          mp.setOnPreparedListener(this);
          mp.prepare();
      

      然后你需要定义它,它应该可以工作:

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

      【讨论】:

        【解决方案4】:
        you can play music like below
        
         // for play the song
        
             MediaPlayer mp = new MediaPlayer();
        
                         try 
                        {                   
                             mp.reset();
                             mp.setDataSource(songPath);                        
                             mp.prepare();
                             mp.start();                    
                             btnPlay.setBackgroundResource(R.drawable.img_btn_pause);                   
        
                         } catch (IOException e) {
                                Log.v(getString(R.string.app_name), e.getMessage());
                        }
        

        【讨论】:

          【解决方案5】:

          我已经找到了解决这个问题的方法。我已经使用下面的代码纠正了这个问题,也可以帮助其他人。

          谢谢

          调用方法喜欢

          PlaySound(R.raw.abc);
          

          //方法

          private void PlaySound(int Sound_id) 
              {
                  mplayer = MediaPlayer.create(Act_Oceanwaves.this,Sound_id);
                  if(mplayer!=null)
                  {           
                      mplayer.start();
                  }
                  mplayer.setOnCompletionListener(new OnCompletionListener() 
                  {
          
                      @Override
                      public void onCompletion(MediaPlayer mp) 
                      {               
                          mp.release();
                      }
          
                  });   
          
          
              }
          

          【讨论】:

          • 如果你点击你的按钮两次,然后你的函数被调用两次,你的 mplayer 对象被初始化两次。
          • 实际上我需要在diff按钮点击中播放不同的声音,所以我认为它会在声音完成后释放..
          • 你的解决方案也是对的。现在我已经使用我的解决方案来解决这个问题,即使我会遇到任何问题,然后我会尝试你的方式。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多