Android 相机调用简化工具
来源:互联网 发布:曾经爆红的网络歌曲 编辑:程序博客网 时间:2024/05/16 19:20
调用安卓相机的代码稍微有点复杂,我将其进行了包装,简化调用的过程。
这个包装类能实现:调用相机、修改尺寸、获得位图 这三个基本功能。
由于涉及到向SD卡中写数据的操作,因此需要在 AndroidManifest.xml 中声明权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
创建一个 TakePhoto 类,代码如下:
import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Environment;import android.provider.MediaStore;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;public class TakePhoto { private String imagePath; private String imageName; private Uri imageUri; public TakePhoto() { //默认保存在SD卡根目录 imagePath = Environment.getExternalStorageDirectory().toString(); imageName = "output_image.jpg"; } public TakePhoto(String imagePath, String imageName) { //自定义路径及文件名 this.imagePath = imagePath; this.imageName = imageName; } //调用相机 public Uri invokeCamera(Context context) { createUri(); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); //启动相机程序 context.startActivity(intent); return imageUri; } //裁剪相片 public Uri editPicture(Context context) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(imageUri, "image/*"); intent.putExtra("scale", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); //启动裁剪程序 context.startActivity(intent); return imageUri; } //生成Uri对象 private void createUri() { File outputImage = new File(imagePath, imageName); try { //生成空白文件 if (outputImage.exists()) { outputImage.delete(); } outputImage.createNewFile(); } catch (IOException e) { e.printStackTrace(); } imageUri = Uri.fromFile(outputImage); } //得到Bitmap对象 public Bitmap getBitmap(Context context) { try { return BitmapFactory.decodeStream(context.getContentResolver().openInputStream(imageUri)); } catch (FileNotFoundException e) { e.printStackTrace(); } return null; }}
最后在 Activity 中测试,核心代码如下:
class OnClick implements View.OnClickListener { TakePhoto takePhoto = new TakePhoto(); @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn1: //调用相机 takePhoto.invokeCamera(MyActivity.this); break; case R.id.btn2: //修改尺寸 takePhoto.editPicture(MyActivity.this); break; case R.id.btn3: //获得图片 Bitmap bitmap = takePhoto.getBitmap(MyActivity.this); imageView.setImageBitmap(bitmap); break; default: break; } } }
运行截图:
0 0
- Android 相机调用简化工具
- Android调用相机接口
- android中调用相机
- Android 调用系统相机
- Android调用相机,相册
- 调用系统相机 Android
- android调用系统相机
- Android调用相机接口
- android 调用系统相机
- android 调用系统相机
- android相机调用
- android调用系统相机
- android 调用系统相机
- Android 调用系统相机
- Android调用相机
- Android 调用系统相机
- Android 调用系统相机
- Android调用相机
- 推荐几款实用的Android Studio 插件
- rsync安装配置
- 架构设计:系统间通信(20)——MQ:消息协议(下)
- 用nat123+tomcat 发布网站
- R语言-聚类分析相关函数
- Android 相机调用简化工具
- hdu 1028 Ignatius and the Princess III
- GPIO_Mode 设置
- Codeforces report
- 基础级-增删改查
- uva10163 双重dp
- Apache Storm 命令行操作
- 排序算法-基数排序
- Eclipse下的Android JNI 开发