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,如需转载请自行联系原作者




相关文章
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
4月前
|
XML Java Android开发
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
181 0
|
4月前
|
XML Java Android开发
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
91 0
|
24天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
22 1
|
24天前
|
Android开发
Android调用相机与相册的方法2
Android调用相机与相册的方法
18 0
|
3月前
|
移动开发 JavaScript 前端开发
vue实现调用手机拍照、录像功能
vue实现调用手机拍照、录像功能
154 0
|
3月前
|
安全 网络协议 Linux
【公网远程手机Android服务器】安卓Termux搭建Web服务器
【公网远程手机Android服务器】安卓Termux搭建Web服务器
67 0
|
4月前
|
传感器 物联网 Android开发
【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)
【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)
69 1
|
4月前
|
Android开发 网络架构
【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)
【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)
206 1
|
4月前
|
存储 Java 定位技术
【Android App】获取照片里的位置信息及使用全球卫星导航系统(GNSS)获取位置实战(附源码和演示 超详细)
【Android App】获取照片里的位置信息及使用全球卫星导航系统(GNSS)获取位置实战(附源码和演示 超详细)
109 0