如何一键播放和暂停 - Android
Posted
技术标签:
【中文标题】如何一键播放和暂停 - Android【英文标题】:How to play and pause in only one button - 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()
”,切换变量,反之亦然。
你能帮我编辑我的代码吗?我是安卓新手。
【参考方案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_
android:layout_
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");
【讨论】:
以上是关于如何一键播放和暂停 - Android的主要内容,如果未能解决你的问题,请参考以下文章