调用系统拍照、录像、录音功能并播放的demo

来源:互联网 发布:mac设置桌面应用 编辑:程序博客网 时间:2024/04/30 05:20

最近项目中要使用自定义录像功能,开发的结果是奇丑无比,但人家就是不用系统自带的,我只能默默的写个调用系统的备用吧!!!

是网上找的代码直接修改并加入播放功能的,向前人致敬



直接上代码


package developer.muzi.com.captcher;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.util.Log;import android.view.View;import android.widget.Button;import android.widget.Toast;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends Activity implements View.OnClickListener {    public String Tag="MainActivity";    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.activity_main);        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) {                    // /storage/emulated/0/CONSDCGMPIC/20150918170441.jpg                   Log.i(Tag,"strImgPath:"+strImgPath);                }                break;           case REQUEST_CODE_TAKE_VIDEO://拍摄视频                if (resultCode == RESULT_OK) {                    //content://media/external/video/media/5743                    Uri uriVideo = data.getData();                    Log.i("Tag","uri:"+uriVideo.toString());                    Cursor cursor=this.getContentResolver().query(uriVideo, null, null, null, null);                   if(cursor!=null){                       if (cursor.moveToNext()) {                        /* _data:文件的绝对路径 ,_display_name:文件名 */                           strVideoPath = cursor.getString(cursor.getColumnIndex("_data"));                           Log.i(Tag,"strVideoPath:"+strVideoPath);                           Intent intent = new Intent(Intent.ACTION_VIEW);                           intent.setDataAndType(Uri.parse("file://"+strVideoPath), "video/mp4");                           startActivity(intent);                       }                   }                 }                 break;            case RESULT_CAPTURE_RECORDER_SOUND://录音                if (resultCode == RESULT_OK) {                    //  file:///storage/emulated/0/MIUI/sound_recorder/9%E6%9C%8818%E6%97%A5%20%E4%B8%8B%E5%8D%884%E7%82%B958%E5%88%86.amr                    //  content://media/external/audio/media/2468929                     Uri uriRecorder = data.getData();                    Log.i(Tag,"uri:"+uriRecorder.toString());                    String scheme=uriRecorder.getScheme();                    Log.i(Tag,"scheme:"+scheme);                    if(scheme.equals("file")){                        Log.i(Tag,"path:"+uriRecorder.getEncodedPath());                        Intent it = new Intent(Intent.ACTION_VIEW);                        it.setDataAndType(uriRecorder, "audio/MP3");                        startActivity(it);                    }else if(scheme.equals("content")){                        Cursor cursor=this.getContentResolver().query(uriRecorder, null, null, null, null);                        if (cursor.moveToNext()) {                         /* _data:文件的绝对路径 ,_display_name:文件名 */                            strRecorderPath = cursor.getString(cursor.getColumnIndex("_data"));                            Log.i(Tag,"path:"+strRecorderPath);                            Intent it = new Intent(Intent.ACTION_VIEW);                            it.setDataAndType(Uri.parse("file://" + strRecorderPath), "audio/MP3");                            startActivity(it);                        }                    }             }                 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);     }}


<?xml version="1.0" encoding="utf-8"?><ScrollViewxmlns: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>



用到的权限

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


0 1
原创粉丝点击