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

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;  
    }  
   }    
           
}



界面布局:

<?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> 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值