当用户按下Android自定义摄像头上的后退按钮时,如何停止视频录制

时间:2019-03-15 04:18:21

标签: android android-fragments kotlin

注意:这类似于重复项,但没有其他解决了我的问题

@Hitesh Tarbundiya的answer第2步中解决了我的问题

我正在使用natario1 CameraView library for android录制视频。

我正在与Fragment一起工作。

我已经向

编写了代码
  1. 停止录像

  2. 保存录制的视频

  3. 使用新创建的视频文件更新媒体库

但是我现在不知道的是,当用户在片段被破坏之前按下手机上的后退按钮或主页按钮时,在哪里调用这些方法。

我尝试从onPause() onStop() onDestroyView()onDestroy()调用方法,但是没有成功。

感谢您的建议,谢谢。

1 个答案:

答案 0 :(得分:2)

尝试一下,可能会解决您的问题。

@Override
public void onBackPressed() {
  if (mMediaRecorder != null) {
   //Wtire your code for stop video, on back press
    mMediaRecorder.stop();
    mMediaRecorder.reset();
   }else{
    super.onBackPressed();
   }         
}

如果您处于碎片状态,请执行此步骤。

第1步:创建一个接口文件

public interface IOnBackPressed {
/**
 * If you return true the back press will not be taken into account, otherwise the activity will act naturally
 * @return true if your processing has priority if not false
 */
boolean onBackPressed();
}

第2步:在Activity类中实现此目标

public class MyActivity extends Activity {
@Override public void onBackPressed() {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
   if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) {
      super.onBackPressed();
   }
 } 
}

第3步:现在在片段类隐含接口中这样写

public class MyFragment extends Fragment implements IOnBackPressed{
@Override
public boolean onBackPressed() {
   if (myCondition) {
        if (mMediaRecorder != null) {
         //Wtire your code for stop video, on back press
         mMediaRecorder.stop();
         mMediaRecorder.reset();
        }
      return true; 
    } else {
        return false;
    }
 }
}