如何一键播放和暂停 - 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的主要内容,如果未能解决你的问题,请参考以下文章

如何一键切换音频播放/暂停

切换播放/暂停以响应音频

如何一键开启和关闭音乐?

EasyPlayer声音自动停止恢复,一键静音等功能

Unity3D日常开发Unity3D中Animation和Animator动画的播放暂停倒放控制

如何在其他视图中使用 Swift 中的 AVPlayer 暂停和播放音乐