Простая запись видео

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

Ваша приложение выполняет какую-либо работу, и интеграция с видео является лишь небольшой частью. Вы хотите получить видео с минимальными затратами, не изобретая видеокамеру. К счастью, в большинстве Android устройств уже есть приложение Камера, которое записывает видео. В этом уроке вы узнаете, как записать видео.

Запрос разрешения камеры

Для информирования, что ваше приложение зависит от наличия камеры, добавьте <uses-feature> тег в файл манифеста:

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

Если ваше приложение использует, но не требует камеру для основных функций, установите android:required в false. При этом Google Play позволит устройствам без камеры загружать приложение. И теперь это то ваша ответственность проверять на наличие камеры во время выполнения с помощью вызова hasSystemFeature(PackageManager.FEATURE_CAMERA). Если камера не доступна, то вы должны отключить свою функциональность, связанную с камерой.

Запись видео с помощью приложения камеры

Принципом Android является делегирование действий в другие приложения, послав Intent , который описывает то, что вы хотите сделать. Этот процесс включает в себя три части: Intent сам по себе, вызов для запуска внешней Activity, и некоторый код для обработки видео, когда фокус возвращается к вашей деятельности.

Вот функция, которая вызывает намерение захвата видео.

static final int REQUEST_VIDEO_CAPTURE = 1;

private void dispatchTakeVideoIntent() {
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
    }
}

Обратите внимание, что startActivityForResult() метод защищен условием, которое вызывает resolveActivity(), которая возвращает первый компонент деятельности, который может обрабатывать намерения. Выполнение этой проверки важно, потому что если вы вызовите startActivityForResult() используя намерение, которое ни одно приложение не может обработать, ваше приложение завершится крахом. Так что, если результат не нулевой, можно с уверенностью использовать намерение.

Просмотр видео

Приложение Камера для Android возвращает видео в Intent доставленном в onActivityResult() в виде Uri указывающим на расположение видео в хранилище. Следующий код извлекает это видео и отображает его в VideoView.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        Uri videoUri = intent.getData();
        mVideoView.setVideoURI(videoUri);
    }
}