page.title=Recording Videos Simply
parent.title=Capturing Photos
parent.link=index.html

trainingnavtop=true
previous.title=Recording Photos Simply
previous.link=photobasics.html
next.title=Controlling the Camera
next.link=cameradirect.html

@jd:body


<div id="tb-wrapper">
  <div id="tb">

    <h2>This lesson teaches you to</h2>
    <ol>
      <li><a href="#TaskManifest">Request Camera Permission</a></li>
      <li><a href="#TaskCaptureIntent">Record a Video with a Camera App</a>
      <li><a href="#TaskVideoView">View the Video</a></li>
    </ol>

    <h2>You should also read</h2>
      <ul>
        <li><a href="{@docRoot}guide/topics/media/camera.html">Camera</a></li>
        <li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
      Filters</a></li>
      </ul>

    <h2>Try it out</h2>

    <div class="download-box">
      <a href="http://developer.android.com/shareables/training/PhotoIntentActivity.zip"
class="button">Download the sample</a>
      <p class="filename">PhotoIntentActivity.zip</p>
    </div>
  </div>
</div>


<p>This lesson explains how to capture video using existing camera
applications.</p>

<p>Your application has a job to do, and integrating videos is only a small
part of it.  You want to take videos with minimal fuss, and not reinvent the
camcorder. Happily, most Android-powered devices already have a camera application that
records video. In this lesson, you make it do this for you.</p>



<h2 id="TaskManifest">Request Camera Permission</h2>

<p>To advertise that your application depends on having a camera, put a
{@code &lt;uses-feature&gt;} tag in the manifest file:</p>

<pre style="clear:right">
&lt;manifest ... >
    &lt;uses-feature android:name="android.hardware.camera"
                  android:required="true" /&gt;
    ...
&lt;/manifest>
</pre>

<p>If your application uses, but does not require a camera in order to function, set {@code
android:required} to {@code false}. In doing so, Google Play will allow devices without a
camera to download your application. It's then your responsibility to check for the availability
of the camera at runtime by calling {@link
android.content.pm.PackageManager#hasSystemFeature hasSystemFeature(PackageManager.FEATURE_CAMERA)}.
If a camera is not available, you should then disable your camera features.</p>


<h2 id="TaskCaptureIntent">Record a Video with a Camera App</h2>

<p>The Android way of delegating actions to other applications is to invoke an {@link
android.content.Intent} that describes what you want done. This process involves three pieces: The
{@link android.content.Intent} itself, a call to start the external {@link android.app.Activity},
and some code to handle the video when focus returns to your activity.</p>

<p>Here's a function that invokes an intent to capture video.</p>

<pre>
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);
    }
}
</pre>

<p>Notice that the {@link android.app.Activity#startActivityForResult
startActivityForResult()} method is protected by a condition that calls
{@link android.content.Intent#resolveActivity resolveActivity()}, which returns the
first activity component that can handle the intent. Performing this check
is important because if you call {@link android.app.Activity#startActivityForResult
startActivityForResult()} using an intent that no app can handle,
your app will crash. So as long as the result is not null, it's safe to use the intent. </p>


<h2 id="TaskVideoView">View the Video</h2>

<p>The Android Camera application returns the video in the {@link android.content.Intent} delivered
to {@link android.app.Activity#onActivityResult onActivityResult()} as a {@link
android.net.Uri} pointing to the video location in storage. The following code
retrieves this video and displays it in a {@link android.widget.VideoView}.</p>

<pre>
&#64;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);
    }
}
</pre>

