android 照相机

主activity

public class MainActivity 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);
        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);  
    }
    /**
     * 照相功能
     */
    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(MainActivity.this, text, duration).show();
    }

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

布局文件

activity_main.xml

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

权限:

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

 完成!

原文地址:https://www.cnblogs.com/goldeneast/p/3363363.html