Руководство по VideoView и MediaController

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;
	}
}

Результат:

https://www.youtube.com/watch?v=12yzVefQlc0

Комментарии:

1 Comment

  1. Дмитрий Reply

    Спасибо за статью. Что мне прописать, для того что бы воспроизвести свой файл из своих ресурсов?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *