Android: возвращение после воспроизведения видео - PullRequest
0 голосов
/ 13 июля 2011

Я работаю над приложением, в котором у пользователя есть список видео с кнопками воспроизведения в каждой строке списка.Всякий раз, когда пользователь нажимает кнопку воспроизведения, запускается отдельное действие для воспроизведения видео.Проблема, с которой я сталкиваюсь, заключается в том, что мне приходится дважды нажимать кнопку возврата, чтобы вернуться к основному видео.Более того, я перевел видео в альбомный режим.Когда мое исходное приложение находится в портретном режиме, а видео - в альбомном режиме, а затем я возвращаюсь в основное приложение, оно вылетает.однако, когда мое приложение или мое устройство находятся в альбомном режиме, и я воспроизводю видео, тогда все нормально, когда я возвращаюсь.Итак, у меня есть два вопроса

1- Почему я должен дважды нажать кнопку «Назад», чтобы вернуться к mainActivity (я также использовал onBackPressed в видео-активности, чтобы завершить текущую активность, но она не работает) 2- Почему происходит сбой моего приложения, когда оно находится в портретном режиме, а видео воспроизводится в ландшафтном режиме и, возвращаясь в основное приложение, оно на некоторое время переводит видео в портретный режим, а затем вылетает.Вот код моего воспроизведения видео (я не знаю, почему мне нужно дважды нажать кнопку «Назад», чтобы вернуться к основному приложению)

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.videoview);
    Intent i = getIntent();
    Bundle extras = i.getExtras();
    filename = extras.getString("videofilename");
    mVideoView = (VideoView)findViewById(R.id.videoview);
    path=filename;
    if (path == "") {

        Toast.makeText(
                ViewVideo.this, No video found,
                Toast.LENGTH_LONG).show();

    } else {

          mVideoView.setVideoPath(path);
          mVideoView.setMediaController(new MediaController(this));
          mVideoView.requestFocus();
          mVideoView.start();

    }
}


  @Override
  public void onBackPressed()
   {
   Log.v(TAG,"movie finished");
   finish();
  }}

Я надеюсь, что мой вопрос был ясен, и кто-то сможетчтобы помочь мне

СПАСИБО

Ответы [ 2 ]

0 голосов
/ 10 января 2013

1. Чтобы избежать двойного щелчка назад при воспроизведении видео, вы можете просто написать:

mVideoView.setMediaController(new MediaController(this){
            public boolean dispatchKeyEvent(KeyEvent event)
            {
                if (event.getKeyCode() == KeyEvent.KEYCODE_BACK)
                    ((Activity) getContext()).finish();

                return super.dispatchKeyEvent(event);
            }
        });

2. Чтобы предотвратить сбой приложения при изменении портретного режима, добавьте в тег AndroidManifest.xml android: configChanges , например:

<activity
    android:name=".YourActivity"
    android:configChanges="orientation|screenSize">
</activity>

Итак, ваша деятельность не будет воссоздана.

0 голосов
/ 13 июля 2011

Деятельность уничтожит воссозданную саму себя, если ориентация изменится с портретной на ландшафтную и наоборот, по этой причине, когда вы возвращаетесь с земли на порт, это может быть одной из переменных, которую вы использовали в действиях порта, может быть не задано, возможно, выбрасывает NullPointerException. Лучше, если вы предоставите более подробную информацию, такую ​​как logcat и код.

...