【问题标题】:How to play and pause in only one button - Android如何一键播放和暂停 - Android
【发布时间】:2013-08-09 19:41:35
【问题描述】:

我的媒体播放器中有两个按钮,用于播放广播电台,播放和暂停。我想让它只有一个具有两种功能的按钮。第一次点击我想播放,第二次点击我想暂停。当我再次单击它时,我想播放它。我需要帮助。这是我的代码。

 play = (Button) findViewById(R.id.play);
 pause = (Button) findViewById(R.id.pause);


 play.setOnClickListener(new View.OnClickListener() {
 public void onClick(View view) {
 play();
}
});
play.performClick();

pause.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
pause();
}
});


}

private void play() {
Uri myUri = Uri.parse("Shoutcast URL");
try {
if (mp == null) {
this.mp = new MediaPlayer();
} else {
mp.stop();
mp.reset();
}
mp.setDataSource(this, myUri); // Go to Initialized state
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setOnPreparedListener(this);
mp.setOnBufferingUpdateListener(this);

mp.setOnErrorListener(this);
mp.prepareAsync();

Log.d(TAG, "LoadClip Done");
} catch (Throwable t) {
Log.d(TAG, t.toString());
}
}

@Override
public void onPrepared(MediaPlayer mp) {
Log.d(TAG, "Stream is prepared");
mp.start();
}

private void pause() {
mp.pause();
}



@Override
public void onDestroy() {
super.onDestroy();
stop();

}

public void onCompletion(MediaPlayer mp) {
stop();
}

【问题讨论】:

  • 为此创建一个布尔值,如果是“PLAY”,则调用“pause()”,切换变量,反之亦然。
  • 你能帮我编辑我的代码吗?我是安卓新手。

标签: android stream radio playback


【解决方案1】:

只创建一个按钮并添加类似按钮状态的内容。然后您可以检查监听器中的状态。
例如:

boolean isPlaying = false;
playPause = (Button) findViewById(R.id.play);


 playPause.setOnClickListener(new View.OnClickListener() {
   public void onClick(View view) {
   if (isPlaying) {
     pause();
   }else{
     play();
   }
   isPlaying = !isPlaying;
}
});

【讨论】:

  • 它表示将 buttonStatus 的修饰符更改为 final
  • 然后当我输入最终布尔值时,它说它不能被定义,因为它在封闭类型中。
  • 声明为类变量
  • 您必须将变量 isPlaying 放在您的函数之外。例如直接在您的班级名称下
【解决方案2】:

例如,这是一个带有 android:onClick 属性的 ToggleButton:

<ToggleButton 
    android:id="@+id/togglebutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOn="Vibrate on"
    android:textOff="Vibrate off"
    android:onClick="onToggleClicked"/>

在承载此布局的 Activity 中,以下方法处理点击事件:

public void onToggleClicked(View view) {
    // Is the toggle on?
    boolean on = ((ToggleButton) view).isChecked();

    if (on) {
        // Enable vibrate
    } else {
        // Disable vibrate
    }
}

【讨论】:

  • 这看起来很酷,当我尝试添加代码 toggleclicked 时,我收到错误“ToggleButton 无法解析为类型”
  • 啊,没关系,发现你需要导入切换类:“import android.widget.ToggleButton;”
【解决方案3】:
Boolean b = false;
Button play = (Button) findViewById(R.id.play);
play..setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
    if(b == false)
  {
         //write play code here
       b= true;
  }
  else
  {
     // enter pause code here
   }

   }
}

【讨论】:

  • 它说将b的修饰符更改为final,然后当我输入final boolean时,它说它不能定义,因为它在封闭类型中。
【解决方案4】:

您可以使用切换按钮:

toggleButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
    if (toggleButton.isChecked()) {
       play();
    } else {
        pause();
    }
}
});

您也可以从切换按钮中移除绿条。

Toggle button Mkyong example

Android dev tutorial

【讨论】:

    【解决方案5】:

    您无需声明任何布尔变量即可检查玩家状态。在 mediaplayer 类中已经有一个方法可用 - isPlaying()。

    尝试我的代码序列,使用单个按钮进行播放暂停。

    public void playpause(){
    
                if(!mp.isPlaying()){ // here mp is object of MediaPlayer class
                mp.start();
                    //showNotification("Player State Plying");
                }
            else if(mp.isPlaying()){
                    mp.pause();
                    //showNotification("Player State Pause");
    
                }
    
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      相关资源
      最近更新 更多