Android拍照、录像、录音代码范例
View Code
1 package com.cons.dcg.collect; 2 3 import java.io.File; 4 import java.text.SimpleDateFormat; 5 import java.util.*; 6 import android.app.*; 7 import android.content.Intent; 8 import android.database.Cursor; 9 import android.net.Uri; 10 import android.os.AsyncTask; 11 import android.os.Bundle; 12 import android.os.Environment; 13 import android.provider.MediaStore; 14 import android.view.*; 15 import android.widget.*; 16 17 public class RecordActivity extends Activity implements OnClickListener { 18 19 private static final int RESULT_CAPTURE_IMAGE = 1;// 照相的requestCode 20 private static final int REQUEST_CODE_TAKE_VIDEO = 2;// 摄像的照相的requestCode 21 private static final int RESULT_CAPTURE_RECORDER_SOUND = 3;// 录音的requestCode 22 23 private String strImgPath = "";// 照片文件绝对路径 24 private String strVideoPath = "";// 视频文件的绝对路径 25 private String strRecorderPath = "";// 录音文件的绝对路径 26 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 this.setContentView(R.layout.problem_report); 31 } 32 33 @Override 34 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 35 super.onActivityResult(requestCode, resultCode, data); 36 switch (requestCode) { 37 case RESULT_CAPTURE_IMAGE://拍照 38 if (resultCode == RESULT_OK) { 39 Toast.makeText(this, strImgPath, Toast.LENGTH_SHORT).show(); 40 } 41 break; 42 case REQUEST_CODE_TAKE_VIDEO://拍摄视频 43 if (resultCode == RESULT_OK) { 44 Uri uriVideo = data.getData(); 45 Cursor cursor=this.getContentResolver().query(uriVideo, null, null, null, null); 46 if (cursor.moveToNext()) { 47 /** _data:文件的绝对路径 ,_display_name:文件名 */ 48 strVideoPath = cursor.getString(cursor.getColumnIndex("_data")); 49 Toast.makeText(this, strVideoPath, Toast.LENGTH_SHORT).show(); 50 } 51 } 52 break; 53 case RESULT_CAPTURE_RECORDER_SOUND://录音 54 if (resultCode == RESULT_OK) { 55 Uri uriRecorder = data.getData(); 56 Cursor cursor=this.getContentResolver().query(uriRecorder, null, null, null, null); 57 if (cursor.moveToNext()) { 58 /** _data:文件的绝对路径 ,_display_name:文件名 */ 59 strRecorderPath = cursor.getString(cursor.getColumnIndex("_data")); 60 Toast.makeText(this, strRecorderPath, Toast.LENGTH_SHORT).show(); 61 } 62 } 63 break; 64 } 65 } 66 67 68 69 /** 70 * 照相功能 71 */ 72 private void cameraMethod() { 73 Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 74 strImgPath = Environment.getExternalStorageDirectory().toString() + "/CONSDCGMPIC/";//存放照片的文件夹 75 String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpg";//照片命名 76 File out = new File(strImgPath); 77 if (!out.exists()) { 78 out.mkdirs(); 79 } 80 out = new File(strImgPath, fileName); 81 strImgPath = strImgPath + fileName;//该照片的绝对路径 82 Uri uri = Uri.fromFile(out); 83 imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 84 imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 85 startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE); 86 87 } 88 89 /** 90 * 拍摄视频 91 */ 92 private void videoMethod() { 93 Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 94 intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); 95 startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO); 96 } 97 98 /** 99 * 录音功能 100 */ 101 private void soundRecorderMethod() { 102 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 103 intent.setType("audio/amr"); 104 startActivityForResult(intent, RESULT_CAPTURE_RECORDER_SOUND); 105 } 106 107 /** 108 * 提示信息 109 * @param text 110 * @param duration 111 */ 112 private void showToast(String text, int duration) { 113 Toast.makeText(ProblemReport.this, text, duration).show(); 114 } 115 }