androidの调用系统相机拍照
来源:互联网 发布:手机淘宝直通车位置 编辑:程序博客网 时间:2024/06/07 05:40
androidの调用系统相机拍照
1. 通过Intent直接调用系统相机
1. 直接调用系统的相机应用,只需要在Intent对象中传入相应的参数即可
MediaStore.ACTION_IMAGE_CAPTURE 拍照
MediaStore.ACTION_VIDEO_CAPTURE 录像
2. 使用startActivityForResult()方法,并传入上面的intent对象, 之后,
系统自带的相机应用就会启动,用户就可以用它来拍照或者录像。
3. 用onActivityResult()接收传回的图像,
当用户拍完照片或者录像,或者取消后,系统都会调用这个函数。
2. 源码分析
package com.wyl.example;import java.io.File;import java.io.FileOutputStream;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFormat;import android.graphics.Matrix;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.ImageView;//定义了本实例的主要Activitypublic class MainActivity extends Activity {private static final int RESULT_CAPTURE_IMAGE = 1;// 照相的requestCodeprivate String strImgPath = "";// 照片文件绝对路径// 定义拍照的按钮private Button btnTakePhoto;// 定义预览图片的imageviewprivate ImageView ivSurface;//保存的拍照文件private File out;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 得到布局中的所有对象findView();// 设置对象的监听器setListener();}private void findView() {// 得到布局中的所有对象btnTakePhoto = (Button) findViewById(R.id.btn_takephoto);ivSurface = (ImageView) findViewById(R.id.iv_image);}// 设置对象的监听器private void setListener() {btnTakePhoto.setOnClickListener(listener);}OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {// 拍照的按钮case R.id.btn_takephoto:cameraMethod();break;}}};//照相功能private void cameraMethod() {// 实例化拍照的IntentIntent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 设置图片存放的路径,Environment.getExternalStorageDirectory()得到SD卡的根目录strImgPath = Environment.getExternalStorageDirectory().toString()+ "/CONSDCGMPIC/";// 存放照片的文件夹// 给相片命名String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpg";// 照片命名// 检查存放的路径是否存在,如果不存在则创建目录out = new File(strImgPath);if (!out.exists()) {out.mkdirs();}// 在此目录下创建文件out = new File(strImgPath, fileName);// 该照片的绝对路径strImgPath = strImgPath + fileName;// 启动ACITIVITYstartActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case RESULT_CAPTURE_IMAGE:// 拍照// 如果返回为正确的的结果if (resultCode == RESULT_OK) {// intent.getExtras()得到intent所附带的额外数据,在这也就是拍摄的图片Bundle extras = data.getExtras();// 得到额外的数据的data字段,转化为bitmap类型Bitmap b = (Bitmap) extras.get("data");// 实例化矩阵MatrixMatrix matrix = new Matrix();// 设置缩放matrix.postScale(5f, 4f);// 创建bitmap对象,并设置bitmap的参数b = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(),matrix, true);// 设置imageview的图片资源ivSurface.setImageBitmap(b);try {// 把文件转化为outputstreamFileOutputStream outStream = new FileOutputStream(out);// 把bitmap数据写入字符流中b.compress(CompressFormat.JPEG, 100, outStream);// 关闭字符流outStream.close();} catch (Exception e) {e.printStackTrace();}}break;}}}
3. 效果图
4. 源码下载
源码下载地址
0 0
- androidの调用系统相机拍照
- android 调用系统相机拍照
- android调用系统相机拍照
- android调用系统相机拍照
- Android调用系统相机拍照
- Android 调用系统相机拍照
- Android 调用系统相机拍照
- android调用系统相机实现拍照功能
- android调用系统相机实现拍照功能
- android 调用系统相机拍照 获取原图
- 调用android系统相机拍照并保存
- android调用系统相机实现拍照功能
- 调用android系统相机拍照并保存
- android 调用系统相机拍照 获取原图
- 调用android系统相机拍照并保存
- android调用系统相机实现拍照功能
- android调用系统相机实现拍照功能
- android基础---调用系统相机拍照
- Android Eclipse 项目报错,但没有显示具体错的代码位置
- [刷题]Search Insert Position
- Mac下面的SecureCRT(附破解方案) 更新到最新的7.3.2
- 代理模式
- 动态规划
- androidの调用系统相机拍照
- 转自66RPG:NeoAxis教程 第一篇,从头开始
- poj 2142 The Balance(不定方程)
- 查看ipc资源情况及其删除共享内存命令
- android振动效果的实现
- Libevent源码分析-----evbuffer结构与基本操作
- ubuntu-12.04-LAMP搭建-apache2.4.7虚拟机配置
- 用Buildout来构建Python项目
- 第五周上机实践项目3-用多文件组织多个类的程序