MainActivity代碼:
package com.chen.test6;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (resultCode == CAPTURE_IAMGE_ACTIVITY_REQUEST_CODE) {if (resultCode == RESULT_OK) {//捕獲的映像儲存到Intent指定的fileUriToast.makeText(this, "Image saved to:\n" + data.getData(), Toast.LENGTH_LONG).show();}else if (resultCode == RESULT_CANCELED) {//使用者取消了映像的捕獲}else {//映像捕獲失敗,提示使用者}}if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {if (resultCode == RESULT_OK) {//捕獲的視頻儲存到Intent指定的fileUriToast.makeText(this, "Video saved to:\n" + data.getData(), Toast.LENGTH_LONG).show();}else if (resultCode == RESULT_CANCELED) {//使用者取消了視頻的捕獲}else {//視頻捕獲失敗,提示使用者}}}public static final int MEDIA_TYPE_IMAGE = 1;public static final int MEDIA_TYPE_VIDEO = 2;private static final int CAPTURE_IAMGE_ACTIVITY_REQUEST_CODE = 100;private static final int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE = 200;private Button imageButton;private Button videoButton;private File file1;private Uri fileUri;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageButton = (Button)findViewById(R.id.buttonStartImage);videoButton = (Button)findViewById(R.id.buttonStartVideo);imageButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//建立拍照Intent 並將控制權返回給調用的程式Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);//建立儲存圖片的檔案intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);//啟動映像捕獲IntentstartActivityForResult(intent, CAPTURE_IAMGE_ACTIVITY_REQUEST_CODE);}});videoButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);//fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);}});}/**為儲存圖片或視頻建立檔案Uri*/private static Uri getOutputMediaFileUri (int type){return Uri.fromFile(getOutputMediaFile(type));}/**為儲存圖片或視頻建立File*/private static File getOutputMediaFile(int type){File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Charein");if (!mediaStorageDir.exists()) {if (!mediaStorageDir.mkdirs()) {Log.d("Charein", "failed to create directory");return null;}}String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());File mediaFile;if (type == MEDIA_TYPE_IMAGE) {mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");}else if (type == MEDIA_TYPE_VIDEO) {mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_" + timeStamp + ".mp4");}else {return null;}return mediaFile;}}