本文共 2203 字,大约阅读时间需要 7 分钟。
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. http://blog.csdn.net/sergeycao
To advertise that your application depends on having a camera, put a <uses-feature>
tag in the manifest file:
...
If your application uses, but does not require a camera in order to function, add android:required="false"
to the tag. 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 . If a camera is not available, you should then disable your camera features.
The Android way of delegating actions to other applications is to invoke an
that describes what you want done. This involves three pieces: the itself, a call to start the external
, and some code to handle the video when focus returns to your activity.
Here's a function that invokes an intent to capture video.
private void dispatchTakeVideoIntent() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(takeVideoIntent, ACTION_TAKE_VIDEO);}
It's a good idea to make sure an app exists to handle your intent before invoking it. Here's a function that checks for apps that can handle your intent:
public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); Listlist = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0;}
The Android Camera application returns the video in the delivered to
as a
pointing to the video location in storage. The following code retrieves this video and displays it in a
.
private void handleCameraVideo(Intent intent) { mVideoUri = intent.getData(); mVideoView.setVideoURI(mVideoUri);}