Android拍照、录像、录音代码范例

来源:互联网 发布:淘宝网上买彩票可靠吗 编辑:程序博客网 时间:2024/05/21 12:18
  • <p>import java.io.File;
  • import java.text.SimpleDateFormat;
  • import java.util.Date;
  • import android.app.Activity;
  • import android.content.Intent;
  • import android.database.Cursor;
  • import android.net.Uri;
  • import android.os.Bundle;
  • import android.os.Environment;
  • import android.provider.MediaStore;
  • import android.view.View;
  • import android.view.View.OnClickListener;
  • import android.widget.Button;
  • import android.widget.Toast;</p><p>public class ActivityMedia extends Activity  implements OnClickListener {
  •   private static final int RESULT_CAPTURE_IMAGE = 1;// 照相的requestCode
  • private static final int REQUEST_CODE_TAKE_VIDEO = 2;// 摄像的照相的requestCode
  • private static final int RESULT_CAPTURE_RECORDER_SOUND = 3;// 录音的requestCode
  •          private String strImgPath = "";// 照片文件绝对路径
  •          private String strVideoPath = "";// 视频文件的绝对路径
  •          private String strRecorderPath = "";// 录音文件的绝对路径
  •          Button buttonShot;
  •          Button buttonVideo;
  •          Button buttonRecorder;
  •          @Override
  •          protected void onCreate(Bundle savedInstanceState) {
  •                  super.onCreate(savedInstanceState);
  •                  this.setContentView(R.layout.media);
  •                  buttonShot = (Button)findViewById(R.id.ButtonShot);
  •                  buttonShot.setOnClickListener(this);
  •                  buttonVideo = (Button)findViewById(R.id.ButtonVideo);
  •                  buttonVideo.setOnClickListener(this);
  •                  buttonRecorder = (Button)findViewById(R.id.ButtonRecorder);
  •                  buttonRecorder.setOnClickListener(this);
  •          }
  •          @Override
  •          protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  •                  super.onActivityResult(requestCode, resultCode, data);
  •                  switch (requestCode) {
  •                 case RESULT_CAPTURE_IMAGE://拍照
  •                          if (resultCode == RESULT_OK) {
  •                                  Toast.makeText(this, strImgPath, Toast.LENGTH_SHORT).show();
  •                          }
  •                          break;
  •                  case REQUEST_CODE_TAKE_VIDEO://拍摄视频
  •                          if (resultCode == RESULT_OK) {
  •                                  Uri uriVideo = data.getData();
  •                                  Cursor cursor=this.getContentResolver().query(uriVideo, null, null, null, null);
  •                                  if (cursor.moveToNext()) {
  •                                          /* _data:文件的绝对路径 ,_display_name:文件名 */
  •                                          strVideoPath = cursor.getString(cursor.getColumnIndex("_data"));
  •                                          Toast.makeText(this, strVideoPath, Toast.LENGTH_SHORT).show();
  •                                  }
  •                          }
  •                          break;
  •                  case RESULT_CAPTURE_RECORDER_SOUND://录音
  •                          if (resultCode == RESULT_OK) {
  •                                  Uri uriRecorder = data.getData();
  •                                 Cursor cursor=this.getContentResolver().query(uriRecorder, null, null, null, null);
  •                                 if (cursor.moveToNext()) {
  •                                          /* _data:文件的绝对路径 ,_display_name:文件名 */
  •                                          strRecorderPath = cursor.getString(cursor.getColumnIndex("_data"));
  •                                          Toast.makeText(this, strRecorderPath, Toast.LENGTH_SHORT).show();
  •                                  }
  •                          }
  •                          break;
  •                  }
  •          }
  •          /**
  •           * 照相功能
  •           */
  •          private void cameraMethod() {
  •                  Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  •                  strImgPath = Environment.getExternalStorageDirectory().toString() + "/CONSDCGMPIC/";//存放照片的文件夹
  •                  String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpg";//照片命名
  •                  File out = new File(strImgPath);
  •                  if (!out.exists()) {
  •                          out.mkdirs();
  •                  }
  •                  out = new File(strImgPath, fileName);
  •                  strImgPath = strImgPath + fileName;//该照片的绝对路径
  •                 Uri uri = Uri.fromFile(out);
  •                  imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
  •                  imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
  •                  startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);
  •          }
  •          /**
  •           * 拍摄视频
  •           */
  •          private void videoMethod() {
  •                  Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
  •                  intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
  •                  startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO);
  •         }
  •         /**
  •           * 录音功能
  •           */
  •         private void soundRecorderMethod() {
  •                  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  •                 intent.setType("audio/amr");
  •                  startActivityForResult(intent, RESULT_CAPTURE_RECORDER_SOUND);
  •          }
  •          /**
  •           * 提示信息
  •           * @param text
  •           * @param duration
  •           */
  •         private void showToast(String text, int duration) {
  •                  Toast.makeText(ActivityMedia.this, text, duration).show();
  •         }</p><p>   public void onClick(View v) {
  •     int id = v.getId();
  •     switch(id){
  •     case R.id.ButtonShot:
  •      cameraMethod();
  •      break;
  •     case R.id.ButtonVideo:
  •      videoMethod();
  •      break;
  •     case R.id.ButtonRecorder:
  •      soundRecorderMethod();
  •      break;
  •     }
  •    }
  • }</p>

复制代码
界面布局:
  • <?xml version="1.0" encoding="utf-8"?>
  • <ScrollView
  •         xmlns:android="http://schemas.android.com/apk/res/android"
  •         android:layout_width="fill_parent"
  •         android:layout_height="fill_parent">
  •         <LinearLayout
  •           android:orientation="vertical"
  •           android:layout_width="fill_parent"
  •           android:layout_height="fill_parent">
  •           <Button
  •                   android:id="@+id/ButtonShot"
  •                   android:layout_width="fill_parent"
  •                   android:layout_height="wrap_content"
  •                   android:text="拍照"/>
  •           <Button
  •                   android:id="@+id/ButtonVideo"
  •                   android:layout_width="fill_parent"
  •                   android:layout_height="wrap_content"
  •                   android:text="录像"/>
  •           <Button
  •                   android:id="@+id/ButtonRecorder"
  •                   android:layout_width="fill_parent"
  •                   android:layout_height="wrap_content"
  •                   android:text="录音"/>
  •         </LinearLayout>
  • </ScrollView>

复制代码
manifest添加权限:
  • <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
  • <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
  • <uses-permission android:name="android.permission.GET_TASKS"></uses-permission>
  • <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
  • <uses-permission android:name="android.permission.CAMERA"></uses-permission>
原创粉丝点击