Intereting Posts
Gradle не создает строку с кавычками Есть ли список или исчерпывающее описание параметров реферера, которые приложение Android Market отправляет в намерение реферера? Android Theme.Holo.Light на Galaxy Nexus имеет серый фон, когда эмулятор не работает OptionsMenu из фрагментов в Viewpager, показывающих кнопки друг друга GetSelectedText на неактивном InputConnection / setComposingText на неактивном InputConnection / getExtractedText на неактивном InputConnection Как разделить экран на три части по вертикали? Как я могу отобразить диалоговое окно над клавиатурой Говоря с модемом с AT-командами на Android Уведомления о состоянии панели Android – открытие правильной активности при выборе уведомления Collapsing CardView внутри RecyclerView при анимации 10-дневное уведомление о нарушении Условий разработчика Google Play в отношении службы push-уведомлений OneSignal Right Drawable в Android. Не работает Как заменить файл XML в APK? UnsatisfiedLinkError в нативном методе Команда запускать команду adb и оставаться в оболочке

Как проверить, поддерживается ли файл при помощи андроидной видеозаписи кодом?

Я пытаюсь воспроизвести видео на Android-видео. Вот мой код:

super.onCreate(savedInstanceState); setContentView(R.layout.video); VideoView videoView = (VideoView) findViewById(R.id.videoView); videoView.setVideoURI(uri); videoView.requestFocus(); videoView.start(); 

Это прекрасно работает, однако некоторые телефоны по-прежнему показывают диалоговое окно с заголовком «Невозможно воспроизвести видео».

Мой вопрос: как отключить это окно уведомлений? Я имею в виду, могу ли я проверить, поддерживается ли видеофайл или нет, перед вызовом videoView.start ()? Или я могу отключить или запретить вызывать окно всплывающего окна системы?

Я хотел бы просто пропустить видео, если оно не поддерживается телефоном, без окна уведомлений.

Я использовал setOnErrorListener перед тем, как вы запустили VideoView, чтобы проверить, будет ли воспроизводиться видео.

  // Restart if PROBLEM myVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub Intent intent = getIntent(); overridePendingTransition(0, 0); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(intent); return true; } }); myVideoView.start(); 

Я нашел еще один простой способ использовать MediaPlayer для решения этой проблемы.

 try { MediaPlayer mp = MediaPlayer.create(this, uri); mp.release(); } catch (Exception e) { Log.e("MediaPlayer", "can NOT play: " + uri); } 

Вышеприведенный код может отфильтровывать большинство видео, которые не поддерживаются VideoView , но это не идеально, потому что я обнаружил, что некоторые не поддерживаемые видео mkv/mpg также проходят вышеупомянутый тест.

Во всяком случае, это еще одна мысль. Я разместил его здесь и надеюсь, что кто-то сможет его улучшить.