2017-06-02 86 views
0

我工作的现场直播。我的问题是,当我按下播放按钮图像应更改为停止按钮,当我按下该停止按钮应该又变成播放按钮。我很困惑怎么做?这里是我的按钮,点击收听..如何更改按钮的图像的时候按下返回按?

btnPublish.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      btnPublish.setImageResource(R.drawable.recordactive); 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("rtmpUrl", rtmpUrl); 
      editor.apply(); 
      mPublisher.startPublish(rtmpUrl); 
      mPublisher.startCamera(); 
     } 
    }); 

当我按下播放按钮,它正在改变停止图像,但是当我按下那个按钮,停止我的应用程序崩溃。因为我还没有编写任何代码为。请指导我如何去做。基本上是按停止按钮后,我想调用这个函数..

mPublisher.stopPublish(); 
       mPublisher.stopRecord(); 
+0

使用布尔变量来管理启动和停止。 –

+0

能否请你告诉我任何的示例代码? – Abhishek

+0

分享您的完整代码 – Anjali

回答

1
boolean showing = false; 

btnPublish.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(showing){ 
      mPublisher.stopPublish(); 
      mPublisher.stopRecord(); 
      showing = false; 
     } 
     else 
     { 
      btnPublish.setImageResource(R.drawable.recordactive); 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("rtmpUrl", rtmpUrl); 
     editor.apply(); 
     mPublisher.startPublish(rtmpUrl); 
     mPublisher.startCamera(); 
     showing = true; 
     } 
    } 
}); 
0

正如Ronak说你想跟踪的当前状态。你可以用布尔变量来做到这一点。事情是这样的

boolean isRecordActive = false; 
btnPublish.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (isRecordActive) { 
      btnPublish.setImageResource(R.drawable.recordinactive); 
      // stop streaming 
     } else { 
      btnPublish.setImageResource(R.drawable.recordactive); 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("rtmpUrl", rtmpUrl); 
      editor.apply(); 
      mPublisher.startPublish(rtmpUrl); 
      mPublisher.startCamera(); 
     } 

     isRecordActive != isRecordActive; 
    } 
}); 
+0

是的。 @Abhishek,尝试像这样实现。 –

0

我做了这样的事情....

 btnPublish.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //rtmpUrl = efu.getText().toString(); 
      btnPublish1.setVisibility(View.VISIBLE); 
      btnPublish.setVisibility(View.GONE); 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("rtmpUrl", rtmpUrl); 
      editor.apply(); 
      mPublisher.startPublish(rtmpUrl); 
      mPublisher.startCamera(); 
     } 
    }); 



    btnPublish1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //rtmpUrl = efu.getText().toString(); 
      btnPublish.setVisibility(View.VISIBLE); 
      btnPublish1.setVisibility(View.GONE); 
      mPublisher.stopPublish(); 
      mPublisher.stopRecord(); 
     } 
    }); 
0
btnPublish.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      btnPublish.setImageResource(R.drawable.recordactive); 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("rtmpUrl", rtmpUrl); 
      editor.apply(); 
      //Check what is the image embedded on the button. Assuming button is //ImageButton 
      Integer integer = (Integer) btnPublish.getTag(); 
      integer = integer == null ? 0 : integer; 
    switch(integer) { 
    case R.drawable.recordactive: 
    btnPublish.setDrawableResource(R.drawable.recordstop); //On click of active, //it should change to recordstop first 
    btnPublish.setTag(R.drawable.recordstop); 
      mPublisher.startPublish(rtmpUrl); 
      mPublisher.startCamera(); 
    break; 
    case R.drawable.recordstop: 
btnPublish.setDrawableResource(R.drawable.recordactive); //On click of stop, 
//it should change to recordactive first 
    btnPublish.setTag(R.drawable.recordactive); 
mPublisher.stopPublish(); 
       mPublisher.stopRecord(); 
    default: 
btnPublish.setDrawableResource(R.drawable.recordactive); //default is record //active 
    btnPublish.setTag(R.drawable.recordactive); 
    break; 
    } 

     } 
    }); 

代码是一个模拟了代码。希望有所帮助!

0

你必须设置一个变量来存储按钮的当前状态,然后相应工作。下面给出一个示例

boolean isPlaying = false; 

btnPublish.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(isPlaying){ 
       isPlaying = false; 
       //what to do when pressing stop button 
       //change your button image 
       //stop camera and other things... 

      }else{ 
       isPlaying = true; 
       //what to do when pressing the play button 
       btnPublish.setImageResource(R.drawable.recordactive); 
       SharedPreferences.Editor editor = sp.edit(); 
       editor.putString("rtmpUrl", rtmpUrl); 
       editor.apply(); 
       mPublisher.startPublish(rtmpUrl); 
       mPublisher.startCamera(); 
      } 

     } 
    });