Courtesy: GitHub

Android MediaRecorder Sample

This sample uses the camera/camcorder as the A/V source for the MediaRecorder API. A TextureView is used as the camera preview which limits the code to API 14+. This can be easily replaced with a SurfaceView to run on older devices.

Introduction

This sample shows how to use the MediaRecorder API. It uses the Camera as input source and displays a preview on a TextureView The sample features a button to capture the input and stop capturing afterwards.

It demonstrates how to correctly gain control and release the camera. The sample also shows how to save the captured audio and video to persistant storage and basic error handling.

Pre-requisites

  • Android SDK 26
  • Android Build Tools v26.0.1
  • Android Support Repository

Screenshots

Screenshot Screenshot

Getting Started

This sample uses the Gradle build system. To build this project, use the "gradlew build" command or use "Import Project" in Android Studio.

Support

If you've found an error in this sample, please file an issue: https://github.com/googlesamples/android-MediaRecorder

Patches are encouraged, and may be submitted by forking this project and submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details.

License

Copyright 2017 The Android Open Source Project, Inc.

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

compile "com.android.support:support-v4:26.1.0"

compile "com.android.support:support-v13:26.1.0"

compile "com.android.support:cardview-v7:26.1.0"

compile "com.android.support:appcompat-v7:26.1.0"

compileSdkVersion 26

minSdkVersion 16

targetSdkVersion 26

package com.example.android.mediarecorder

versionCode 1

versionName 1.0

uses-permission

  • android.permission.WRITE_EXTERNAL_STORAGE
  • android.permission.RECORD_VIDEO
  • android.permission.RECORD_AUDIO
  • android.permission.CAMERA

MainActivity

This activity uses the camera/camcorder as the A/V source for the {@link android.media.MediaRecorder} API. A {@link android.view.TextureView} is used as the camera preview which limits the code to API 14+. This can be easily replaced with a {@link android.view.SurfaceView} to run on older devices.

The capture button controls all user interaction. When recording, the button click stops recording, releases {@link android.media.MediaRecorder} and {@link android.hardware.Camera}. When not recording, it prepares the {@link android.media.MediaRecorder} and starts recording. * @param view the view generating the event.

Asynchronous task for preparing the {@link android.media.MediaRecorder} since it's a long blocking operation.