Android-приложение не воспроизводит MP4 с SD-карты - PullRequest
0 голосов
/ 22 февраля 2012

Я пытаюсь воспроизвести mp4 с SD-карты.Это мой второй день.Вчера это не сработало бы вообще, а сегодня воспроизводит первую секунду видео, прежде чем приложение вылетает с ошибкой: android.view.WindowManager $ BadToxenException: Невозможно добавить окно - нулевой токен недействителен;ваша деятельность работает?

У меня есть файл playvideo.xml в папке макета как:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<LinearLayout
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   >
<VideoView
   android:id="@+id/myvideoview"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   />
</LinearLayout>
</LinearLayout>

и в коде java - только несколько коротких строк:

path = Environment.getExternalStorageDirectory() + "/videos/video.mp4";
                    Log.i("path", path);

                     setContentView(R.layout.playvideo);
                       VideoView myVideoView = (VideoView)findViewById(R.id.myvideoview);
                       myVideoView.setVideoPath(path);
                       myVideoView.setMediaController(new MediaController(getBaseContext()));
                       myVideoView.requestFocus();
                       myVideoView.start();

Как я уже сказал, видео воспроизводится секунду, а затем приложение вылетает.

Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

попробуйте этот код

VideoView videoView = (VideoView) findViewById (R.id.myvideoview);

             videoView.setOnCompletionListener(this);//checks when end

             File path = new File(mPath + "/" + mDownloadedFile);

             videoView.setVideoPath(path.getAbsolutePath());
             MediaController mediaController = new MediaController(this);
             mediaController.setMediaPlayer(videoView);
             mediaController.setAnchorView(videoView);

             videoView.setMediaController(mediaController);
             videoView.requestFocus();
             videoView.start();
0 голосов
/ 22 февраля 2012

Вместо

myVideoView.setMediaController(new MediaController(getBaseContext()));

используйте

myVideoView.setMediaController(new MediaController(this));

Это должно работать.

...