android开发 获取相册名称_Android开发之获取相册照片和获取拍照照片
在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式..
1.从本地相册获取照片:
一般就是写出这个方法
protected void getImageFromAlbum() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");//相片类型
startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
}
2.从照相机获取照片
一般就是写出这个方法
protected void getImageFromCamera() {
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(getImageByCamera, REQUEST_CODE_CAPTURE_CAMEIA);
}
else {
Toast.makeText(getApplicationContext(), "请确认已经插入SD卡", Toast.LENGTH_LONG).show();
}
}
写完这个方法后,一般我们还需要通过响应这个方法去获取图片
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_PICK_IMAGE) {
Uri uri = data.getData();
//to do find the path of pic
} else if (requestCode == REQUEST_CODE_CAPTURE_CAMEIA ) {
Uri uri = data.getData();
//to do find the path of pic
} }
但是,有时候我们会发现用相机拍摄获取照片的时候,得到的 uri 是 null 的,这是因为android把拍摄的图片封装到bundle中传递回来,但是根据不同的机器获得相片的方式不太一样,可能有的相机能够通过
inten.getData()获取到uri
然后再根据uri获取数据的路径,在封装成bitmap,但有时候有的相机获取到的是null的,这时候我们该怎么办呢?
其实这时候我们就应该从bundle中获取数据,通过
(Bitmap) bundle.get("data")
获取到相机图片的bitmap数据。
为了能够同时适应上述两种情况,我们这时候就应该在获取图片时做判断了。我们可以在响应的时候做一个判断:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_PICK_IMAGE) {
Uri uri = data.getData();
//to do find the path of pic by uri
} else if (requestCode == REQUEST_CODE_CAPTURE_CAMEIA ) {
Uri uri = data.getData();
if(uri == null){
//use bundle to get data
Bundle bundle = data.getExtras();
if (bundle != null) {
Bitmap photo = (Bitmap) bundle.get("data"); //get bitmap
//spath :生成图片取个名字和路径包含类型
saveImage(Bitmap photo, String spath);
} else {
Toast.makeText(getApplicationContext(), "err****", Toast.LENGTH_LONG).show();
return;
}
}else{
//to do find the path of pic by uri
}
}
}
后面的过程就需要通过bitmap转化成相应的图片文件了。不过得到最终的图片是被压缩了的。
public static void saveImage(Bitmap photo, String spath) {
try {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(spath, false));
photo.compress(Bitmap.CompressFormat.JPEG, 100, bos);
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
这样就能解决照相机取到的图片uri为空的状态了。但是在获取到uri为null情况下,如果想得到没有被压缩过的照片,也就是说得到的是直接从相机拍摄到的照片怎么做呢?
android开发 获取相册名称_Android开发之获取相册照片和获取拍照照片相关推荐
- linux用c++获取mac地址,网卡地址,网口地址,网卡序号ip地址,不使用 ioctl(sock, SIOCGIFCONF, ifc)获取网络接口名称,这个接口有时会返回-1获取不到,换方法获取
linux用c++获取mac地址,不使用 ioctl(sock, SIOCGIFCONF, &ifc)获取网络接口名称,这个接口有时会返回-1获取不到,换方法获取 1.弃用 SIOCGIFCO ...
- android开发 获取相册名称_Android获取手机上各个相册名称和相片的方法
下面是我用来获取相册名称以及内容的方法,比较猥琐的方法,但是也实现了功能 就是一个asyctask,将就参考参考,本人记录 class ScanAllImageTask extends android ...
- android开发 获取相册名称_android通过拍照、相册获取图片并显示 实例完整源码下载(亲测通过)...
[实例简介]其中也包含了 将图片保存至 sd卡功能 [实例截图] [核心代码] public class MainActivity extends Activity{ private static f ...
- android引用的java包_Android开发中jar包的创建及引用
jar包有两种,一种是纯粹的库功能,没有main入口函数,故无法直接执行:一种是包含main的可执行包! 如有hello/hello.java文件: $ cd hello/$ javac hello. ...
- android 代码设置居右_Android 开发实现EditText 光标居右显示
Android 开发实现EditText 光标居右显示 前言: 有些时候肯定会遇到这种奇葩的需求,光标要靠右显示,因为Android里面光标默认是靠左显示的,那怎么实现呢,肯定有办法的,这里提供一种实 ...
- android listview 自适应列宽_Android 开发技术周报 Issue#272
新闻/News 谷歌Pixel 4a将采用UFS 2.1存储:可以体验全套GMS [图]Android端Play商城现全面开放深色主题 教程/Tutorial OkHttp Interceptor - ...
- android设计个人简历页面_android开发简历工作经历填写样本
工作经历(案例一) 工作时间:2013-08 - 2017-01 公司名称:简历本网络科技有限公司 | 所在部门: | 所在岗位:android开发工程师 工作描述: 做的项目是基于硬件基础的一套Ap ...
- android与mysql数据库同步_android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?...
通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...
- android 开启一个定时线程_ANDROID开发中定时器的3种方法
在android中,经常用到的定时器主要有以下几种实现: 一.采用Handler与线程的sleep(long )方法 二.采用Handler的postDelayed(Runnable, long) 方 ...
最新文章
- python求五个数中的最大值和最小值_python编程 求输入的10个数中的最大值和最小值,并输出它们各自是第几个...
- 设计模式复习-桥接模式
- 2016 ICPC World Finals -Ceiling Function
- IDE硬盘,SATA硬盘,SCSI硬盘有什么区别
- 1269: GPA-一题简单英文题~
- linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- 注解代替枚举_精选枚举代替开关
- 排序算法之冒泡排序,选择排序
- 多校一道KMP+DP的题
- 『飞鸽』百度悄然进军客户端领域
- ML《决策树(一)ID3》
- 初使用 ReportViewer 控件时遇到的一点小麻烦
- 蓝桥杯 基础练习 杨辉三角形 JAVA
- ctype函数_Ctype函数简介
- WIFI:802.11协议帧格式
- ipmitool 命令行重启服务器
- 无源领域自适应:Source Hypothesis Transfer for Unsupervised Domain Adaptation
- 五金机电行业供应商智慧管理平台解决方案:优化供应链管理,带动企业业绩增长
- 2018ChinaJoy万代南梦宫展台速刷攻略
- 微型计算机期末考试a卷,微机原理与接口技术期末试卷A
热门文章
- OpenJDK 正式宣布AWT、2D、Swing等项目解散
- 周末了,分享个休闲软件!你懂得!
- 皮一皮:原来微信备注还有这个用...
- 皮一皮:直男最后的倔强...
- 每日一皮:程序员新手尝试新框架的时候
- 每日一皮:程序猿的读书历程,最后一本​必备​!
- 自律到极致-人生才精致「第3期」:中奖结果
- Spring Boot中使用LDAP来统一管理用户信息
- react前端封装接口弹出错误_在react项目中用es6封装ajax请求,组件中调用总是报错,求解?...
- 提高安全意识,保护自身安全