Android调用手机拍照以及从相册选择照片

简介:

该功能主要实现上传图片到服务器,选择图片的方式有两种,一种是从手机相册中选择,另一种是调用手机摄像头拍照。如图:

 

 

 

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. /*用来标识请求照相功能的activity*/          
  4. private static final int CAMERA_WITH_DATA = 1001;          
  5. /*用来标识请求gallery的activity*/          
  6. private static final int PHOTO_PICKED_WITH_DATA = 1002;    

 

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. private Bitmap bitMap;       //用来保存图片        
  4. private boolean hasImage;    //是否已经选择了图片    

 

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. /**       
  4.      * 拍照获取图片       
  5.      *        
  6.      */        
  7.     protected void doTakePhoto() {        
  8.         try {        
  9.             Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);        
  10.             startActivityForResult(cameraIntent, CAMERA_WITH_DATA);        
  11.         } catch (ActivityNotFoundException e) {        
  12.             e.printStackTrace();        
  13.         }        
  14.     }        
  15.             
  16.     /**       
  17.      * 从本地手机中选择图片       
  18.      */        
  19.     private void doSelectImageFromLoacal(){        
  20.         Intent localIntent = new Intent();        
  21.         localIntent.setType("image/*");        
  22.         localIntent.setAction("android.intent.action.GET_CONTENT");        
  23.         Intent localIntent2 = Intent.createChooser(localIntent, "选择图片");        
  24.         startActivityForResult(localIntent2, PHOTO_PICKED_WITH_DATA);        
  25.     }    

然后需要重写onActivityResult()方法,判断是否那种方式获取的图片。

 

 

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. protected void onActivityResult(int requestCode, int resultCode, Intent data) {        
  4.         if (resultCode != RESULT_OK)        
  5.             return;        
  6.         switch (requestCode) {        
  7.         case PHOTO_PICKED_WITH_DATA: //从本地选择图片        
  8.             if (bitMap != null && !bitMap.isRecycled()) {        
  9.                 bitMap.recycle();        
  10.             }        
  11.             Uri selectedImageUri = data.getData();        
  12.             if(selectedImageUri != null){        
  13.                 try {        
  14.                     bitMap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImageUri));        
  15.                 } catch (FileNotFoundException e) {        
  16.                     e.printStackTrace();        
  17.                 }        
  18.                 //下面这两句是对图片按照一定的比例缩放,这样就可以完美地显示出来。有关图片的处理将重新写文章来介绍。      
  19.                 int scale = ImageThumbnail.reckonThumbnail(bitMap.getWidth(), bitMap.getHeight(), 500600);        
  20.                 bitMap = ImageThumbnail.PicZoom(bitMap, (int) (bitMap.getWidth() / scale), (int) (bitMap.getHeight() / scale));        
  21.                 imageView.setImageBitmap(bitMap);        
  22.                 imageView.setVisibility(View.VISIBLE);        
  23.                 hasImage = true;        
  24.             }        
  25.             break;        
  26.         case CAMERA_WITH_DATA:  //拍照        
  27.             Bundle bundle = data.getExtras();        
  28.             bitMap = (Bitmap)bundle.get("data");        
  29.             if (bitMap != null)        
  30.                 bitMap.recycle();        
  31.             bitMap = (Bitmap) data.getExtras().get("data");        
  32.             int scale = ImageThumbnail.reckonThumbnail(bitMap.getWidth(), bitMap.getHeight(), 500600);        
  33.             bitMap = ImageThumbnail.PicZoom(bitMap, (int) (bitMap.getWidth() / scale), (int) (bitMap.getHeight() / scale));        
  34.             imageView.setImageBitmap(bitMap);        
  35.             imageView.setVisibility(View.VISIBLE);        
  36.             hasImage = true;        
  37.             break;        
  38.         }        
  39.     }        
  40.         
  41.       

 




     本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/962497,如需转载请自行联系原作者




相关文章
|
24天前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
281 2
|
2月前
|
缓存 Android开发 开发者
安卓系统优化:提升手机性能的秘诀
【5月更文挑战第31天】本文将探讨如何通过一系列简单的步骤和技巧,对安卓系统进行优化,以提升手机的性能。我们将从清理无用文件、管理后台应用、调整系统设置等方面入手,帮助你的安卓设备运行更加流畅。
|
2月前
|
Android开发
【苹果安卓通用】xlsx 和 vCard 文件转换器,txt转vCard文件格式,CSV转 vCard格式,如何批量号码导入手机通讯录,一篇文章说全
本文介绍了如何快速将批量号码导入手机通讯录,适用于企业客户管理、营销团队、活动组织、团队协作和新员工入职等场景。步骤包括:1) 下载软件,提供腾讯云盘和百度网盘链接;2) 打开软件,复制粘贴号码并进行加载预览和制作文件;3) 将制作好的文件通过QQ或微信发送至手机,然后按苹果、安卓或鸿蒙系统的指示导入。整个过程简便快捷,可在1分钟内完成。
|
2月前
|
Android开发
【通讯录教程】苹果安卓鸿蒙系统通用,如何大批量导入手机号码到手机的通讯录,下面教你方法,只需1分钟搞定几万个号码的导入手机电话本
该文介绍了一种快速批量导入手机通讯录的方法,适用于处理大量手机号的需求,如微商管理、客户资料整理等。在QQ同步助手开始收费后,提供了免费的替代方案。步骤包括:下载批量导入软件(链接提供腾讯云盘和百度网盘地址),清空通讯录(非必需),制作符合格式的通讯录文件,并按操作系统(苹果、安卓或鸿蒙)进行导入。整个过程只需1分钟,简便快捷。
|
23天前
|
前端开发 JavaScript Android开发
手机APP开发|基于安卓APP实现掌上党支部——党员app
手机APP开发|基于安卓APP实现掌上党支部——党员app
|
2月前
|
Java
手机照相或选择相册,类似新浪微博的图片处理
手机照相或选择相册,类似新浪微博的图片处理
16 2
|
2月前
|
安全 Android开发 iOS开发
探索安卓与iOS手机操作系统的发展趋势与差异
在移动互联网时代,安卓和iOS手机操作系统一直处于激烈的竞争之中。本文将从技术角度出发,探讨两大操作系统的发展趋势、特点以及差异,并分析其对用户体验和开发者生态的影响,旨在为读者提供对移动操作系统发展方向的深入了解。
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
129 0
|
2月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
71 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
|
2月前
|
存储 数据库 Android开发
Android实现手机内存存储功能
Android实现手机内存存储功能
38 2