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
Request camera permission
To advertise that your application depends on having a camera, put<uses-feature>
Tag in the manifest file:
<manifest ... > <uses-feature android:name="android.hardware.camera" /> ...</manifest ... >
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
hasSystemFeature(PackageManager.FEATURE_CAMERA)
. If a camera is not available, you shoshould then disable your camera features.
Record a video with a camera app
The android way of delegating actions to other applications is to invoke
Intent
That describes what you want done. This involves three pieces:
Intent
Itself, a call to start the externalActivity
, 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); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0;}
View the video
The android camera application returns the video inIntent
Delivered
onActivityResult()
AsUri
Pointing to the video location in storage. The following code retrieves this video and displays it in
VideoView
.
private void handleCameraVideo(Intent intent) { mVideoUri = intent.getData(); mVideoView.setVideoURI(mVideoUri);}