本文实例为大家分享了Android拍照及图片显示的具体代码,供大家参考,具体内容如下

1、功能声明
当应用需要使用相机、NFC等外设时,需要在AndroidManifest.xml中进行声明。
这样,当设备缺少这些外设时,应用商店的安装程序可以拒绝安装设备。
声明示例代码如下:
<uses-feature android:name="android.hardware.camera2"
<!-- required为false时,不强制要求设备支持该功能 -->
<!-- 如果不设置该值,一旦设备不支持camera,就不能安装该应用-->
android:required="false"/>
2、创建指向文件的File对象
拍摄的照片可以存放到设备的外部存储区。
Android为不同的应用分配的独有的存储区域,同时按照存储数据的类型对存储区域做了进一步地划分。
设置照片存储区域的代码示例如下所示:
public File getPhotoFile(Crime crime) {
//获取应用对应的存储照片的外部存储路径
File externalFilesDir = mContext
.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
if (externalFilesDir == null) {
return null;
}
//创建指向文件的File对象
return new File(externalFilesDir, crime.getPhotoFilename());
}
.............
//每个crime对应的文件名
public String getPhotoFilename() {
return "IMG_" + getId().toString() + ".jpg";
}
3、触发拍照
可以使用MediaStore.ACTION_CAPTURE_IMAGE类型的Intent触发拍照,示例代码如下:
mPhotoButton = (ImageButton) v.findViewById(R.id.crime_camera);
//隐式Intent触发相机拍照
final Intent captureImageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//mPhotoFile保存着上文创建的指向指定地址的File
//此处判断是否有能够处理隐式Intent的组件
boolean canTakePhoto = mPhotoFile != null
&& captureImageIntent.resolveActivity(packageManager) != null;
mPhotoButton.setEnabled(canTakePhoto);
if (canTakePhoto) {
//得到File文件对应的Uri地址
Uri uri = Uri.fromFile(mPhotoFile);
//将Uri地址存入到Intent中,相机拍照得到的图像将会存入到该Uri地址对应的File里
captureImageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
}
mPhotoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(captureImageIntent, REQUEST_PHOTO);
}
});
4、处理拍照结果
拍照完成后,将可以加载得到图片了。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
.........
} else if (requestCode == REQUEST_PHOTO) {
updatePhotoView();
}
.........
}
private void updatePhotoView() {
if (mPhotoFile == null || !mPhotoFile.exists()) {
mPhotoView.setImageDrawable(null);
} else {
//加载图片对应的缩略图
Bitmap bitmap = PictureUtils.getScaledBitmap(mPhotoFile.getPath(), getActivity());
mPhotoView.setImageBitmap(bitmap);
}
}
Bitmap只存储实际像素数据,因此即使原始照片已经压缩过,但存入Bitmap对象时,文件并不会被压缩。
因此加载图片时,需要先按照给定区域的大小合理的缩放文件。 然后,用Bitmap加载缩放后的文件,示例代码如下:
//在具体视图未加载前,无法得到视图的实际大小
//因此根据屏幕尺寸,使用估算值进行缩放
public static Bitmap getScaledBitmap(String path, Activity activity) {
Point size = new Point();
activity.getWindowManager().getDefaultDisplay().getSize(size);
return getScaledBitmap(path, size.x, size.y);
}
public static Bitmap getScaledBitmap(String path, int destWidth, int destHeight) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
//按照正常尺寸解析文件
BitmapFactory.decodeFile(path, options);
//得到原始文件的宽和高
float srcWidth = options.outWidth;
float srcHeight = options.outHeight;
//inSampleSize表示水平/竖直抽样比
//例如,inSampleSize为2时,水平和数值均在原始基础上,每2个点抽取1个点
//于是,新图的大小变为原来的1/4
int inSampleSize = 1;
if (srcHeight > destHeight || srcWidth > destWidth) {
if (srcWidth > srcHeight) {
inSampleSize = Math.round(srcHeight / destHeight);
} else {
inSampleSize = Math.round(srcWidth / destWidth);
}
}
options = new BitmapFactory.Options();
options.inSampleSize = inSampleSize;
//按新的抽样比,重新解析文件
return BitmapFactory.decodeFile(path, options);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 拍照
# 图片显示
# Android仿微信单击拍照长按录像功能实例代码
# Android获取本地相册图片和拍照获取图片的实现方法
# Android SurfaceView拍照录像实现方法
# Android 7.0中拍照和图片裁剪适配的问题详解
# Android调用系统拍照裁剪图片模糊的解决方法
# Android 拍照功能实现(手机关闭依然拍照)详解及实例代码
# Android 开发手机(三星)拍照应用照片旋转问题解决办法
# 加载
# 外设
# 隐式
# 将会
# 基础上
# 就不能
# 不支持
# 可以使用
# 所示
# 大家分享
# 安装程序
# 具体内容
# 大家多多
# 到该
# 判断是否
# 新图
# 按新
# 完成后
# 屏幕尺寸
# 水平和
相关文章:
网站微信制作软件,如何制作微信链接?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何用PHP快速搭建CMS系统?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
如何选择高性价比服务器搭建个人网站?
建站之星安装失败:服务器环境不兼容?
如何选择域名并搭建高效网站?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何高效配置IIS服务器搭建网站?
如何在腾讯云服务器上快速搭建个人网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站主机无法访问?如何排查域名与服务器问题
TestNG的testng.xml配置文件怎么写
东莞专业制作网站的公司,东莞大学生网的网址是什么?
如何在万网主机上快速搭建网站?
建站之星代理如何获取技术支持?
小程序网站制作需要准备什么资料,如何制作小程序?
深圳网站制作培训,深圳哪些招聘网站比较好?
移民网站制作流程,怎么看加拿大移民官网?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
建站之星如何实现PC+手机+微信网站五合一建站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
活动邀请函制作网站有哪些,活动邀请函文案?
建站之星如何实现五合一智能建站与营销推广?
网站制作公司排行榜,四大门户网站排名?
如何选购建站域名与空间?自助平台全解析
如何快速搭建高效WAP手机网站吸引移动用户?
ppt制作免费网站有哪些,ppt模板免费下载网站?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在Windows服务器上快速搭建网站?
购物网站制作公司有哪些,哪个购物网站比较好?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
建站之星在线版空间:自助建站+智能模板一键生成方案
如何在IIS中新建站点并配置端口与物理路径?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
西安大型网站制作公司,西安招聘网站最好的是哪个?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
建站主机选购指南与交易推荐:核心配置解析
建站之星2.7模板快速切换与批量管理功能操作指南
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
css网站制作参考文献有哪些,易聊怎么注册?
制作网站的模板软件,网站怎么建设?
建站之星如何一键生成手机站?
安云自助建站系统如何快速提升SEO排名?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
如何在阿里云高效完成企业建站全流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。