Как я могу остановить запись видео, когда пользователь нажимает кнопку «Назад» на пользовательской камере Android - PullRequest
0 голосов
/ 15 марта 2019

ПРИМЕЧАНИЕ: Это похоже на дубликат, но никто из других не решил мою проблему

@ ответ Hitesh Tarbundiya в Шаг 2 решил моюпроблема

Я использую библиотеку natario1 CameraView для Android для записи видео.

Я работаю с Fragment.

Я написал код для

  1. Остановить запись видео

  2. Сохранить записанное видео

  3. Обновить медиа галерею с помощью только что созданного видеофайла

Но что я не могу понятьТеперь нужно вызывать эти методы, когда пользователь нажимает кнопку «Назад» или кнопку «Домой» на своем телефоне до того, как фрагмент будет уничтожен.

Я попытался вызвать методы из onPause() onStop() onDestroyView() и onDestroy() но не удалось.

Буду признателен за некоторые советы, спасибо.

1 Ответ

2 голосов
/ 15 марта 2019

попробуйте, может решить вашу проблему.

@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;
    }
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...