Android-включает в себя два класса, которые отвечают за реализацию воспроизведения видео на устройствах Android. Эти классы очень легко и просто реализовать при разработке приложений. Сегодня я расскажу вам о том, как использовать эти два класса: VideoView и MediaController , чтобы получить приложение воспроизводящее видео.
В этом примере мы будем играть mp4 с SDCard/External-storage с помощью android.widget.VideoView. Также мы будем управлять видео с помощью MediaController, который содержит кнопки, как «Воспроизведение/Пауза», «Перемотка назад», «Перемотка вперед» и ползунок прогресса, связав их методом VideoView.setMediaController() .
Пользователь будет иметь возможность контролировать видео с помощью MediaController нажав на видео (или VideoView), чтобы отобразить контроллер. Следуйте инструкциям ниже, чтобы получить рабочий код.
Шаг 1: Создайте новый проект в AndroidStudio. Убедитесь, что у вас на вашем устройстве/эмуляторе есть MP4-файл на флеш-карте.
Шаг 2: Добавить следующее разрешение в вашем Manifest-файле :
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
ПРИМЕЧАНИЕ: Вы получите диалоговое окно с сообщением «Невозможно воспроизвести это видео», если вы забыли добавить разрешения в манифесте или если нет MP4-файла на флешке.
Шаг 3: Напишите следующий текст в ваш layout-файл:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <ToggleButton android:id="@+id/enableMediaController" android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" android:textOff="Enable MediaController" android:textOn="Disable MediaController"> <VideoView android:id="@+id/myvideoview" android:layout_width="fill_parent" android:layout_height="wrap_content"> </LinearLayout>
Шаг 4: Напишите это в MainActivity:
package com.example.videoviewformp4; import java.io.File; import android.support.v7.app.ActionBarActivity; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.MediaController; import android.widget.Toast; import android.widget.ToggleButton; import android.widget.VideoView; import android.os.Bundle; import android.os.Environment; public class MainActivity extends ActionBarActivity { ToggleButton enableMediaController; VideoView myVideoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); enableMediaController = (ToggleButton) findViewById(R.id.enableMediaController); myVideoView = (VideoView) findViewById(R.id.myvideoview); myVideoView.setVideoPath(getViewSrc()); myVideoView.requestFocus(); myVideoView.start(); setMediaController(); enableMediaController .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { setMediaController(); } }); } private void setMediaController() { if (enableMediaController.isChecked()) { myVideoView.setMediaController(new MediaController(this)); } else { myVideoView.setMediaController(null); } } private String getViewSrc() { File extStorageDirectory = Environment.getExternalStorageDirectory(); String s = extStorageDirectory.getAbsolutePath() + "/test.mp4"; Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show(); return s; } }
Результат: