android中打开相机、打开相册进行图片的获取示例
发布时间 - 2026-01-10 22:31:04 点击率:次这里介绍在Android中实现相机调取、拍照片、获取照片、存储新路径等已经打开相册、选择照片等功能

首先看一下界面,很简单
配置读取内存卡和调用照相头的功能
<!-- 使用网络权限 --> <uses-permission android:name="android.permission.INTERNET"/> <!-- 写sd卡的权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 读sd卡权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
下面是代码的主题
public class TakePhotos extends Activity implements
android.view.View.OnClickListener {
Button takePhoto;
Bitmap photo;
String picPath;
Button capture;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo);
takePhoto = (Button) findViewById(R.id.button1);
capture = (Button) findViewById(R.id.capture);
takePhoto.setOnClickListener(this);
capture.setOnClickListener(this);
}
@Override
public void onClick(View viewid) {
switch (viewid.getId()) {
case R.id.button1: {// 打开相机
String state = Environment.getExternalStorageState();// 获取内存卡可用状态
if (state.equals(Environment.MEDIA_MOUNTED)) {
// 内存卡状态可用
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, 1);
} else {
// 不可用
Toast.makeText(TakePhotos.this, "内存不可用", Toast.LENGTH_LONG)
.show();
}
break;
}
case R.id.capture: {// 打开相册
// 打开本地相册
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
// 设定结果返回
startActivityForResult(i, 2);
break;
}
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
switch (requestCode) {
case 1:
// 两种方式 获取拍好的图片
if (data.getData() != null || data.getExtras() != null) { // 防止没有返回结果
Uri uri = data.getData();
if (uri != null) {
this.photo = BitmapFactory.decodeFile(uri.getPath()); // 拿到图片
}
if (photo == null) {
Bundle bundle = data.getExtras();
if (bundle != null) {
photo = (Bitmap) bundle.get("data");
FileOutputStream fileOutputStream = null;
try {
// 获取 SD 卡根目录 生成图片并
String saveDir = Environment
.getExternalStorageDirectory()
+ "/dhj_Photos";
// 新建目录
File dir = new File(saveDir);
if (!dir.exists())
dir.mkdir();
// 生成文件名
SimpleDateFormat t = new SimpleDateFormat(
"yyyyMMddssSSS");
String filename = "MT" + (t.format(new Date()))
+ ".jpg";
// 新建文件
File file = new File(saveDir, filename);
// 打开文件输出流
fileOutputStream = new FileOutputStream(file);
// 生成图片文件
this.photo.compress(Bitmap.CompressFormat.JPEG,
100, fileOutputStream);
// 相片的完整路径
this.picPath = file.getPath();
ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageBitmap(this.photo);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Toast.makeText(getApplicationContext(), "获取到了",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "找不到图片",
Toast.LENGTH_SHORT).show();
}
}
}
break;
case 2: {
//打开相册并选择照片,这个方式选择单张
// 获取返回的数据,这里是android自定义的Uri地址
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
// 获取选择照片的数据视图
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
// 从数据视图中获取已选择图片的路径
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
// 将图片显示到界面上
ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
break;
}
default:
break;
}
}
}
}
注释的很详细,自己分析吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android调用相机相册
# android
# 相机相册选择
# 调取相机相册
# 基于Android实现保存图片到本地并可以在相册中显示出来
# android获取相册图片和路径的实现方法
# android照相、相册获取图片剪裁报错的解决方法
# 解决Android从相册中获取图片出错图片却无法裁剪问题的方法
# Android实现读取相机(相册)图片并进行剪裁
# Android实现保存图片到本地并在相册中显示
# Android实现长按图片保存至相册功能
# Android获取本地相册图片和拍照获取图片的实现方法
# Android 图片存储到指定路径和相册的方法
# Android实现选择相册图片并显示功能
# 内存卡
# 不可用
# 找不到
# 两种
# 很简单
# 自定义
# 看一下
# 等功能
# 大家多多
# activity_photo
# findViewById
# setContentView
# layout
# setOnClickListener
# id
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何创建自定义中间件?(Middleware代码示例)
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
网站制作企业,网站的banner和导航栏是指什么?
,在苏州找工作,上哪个网站比较好?
高防服务器如何保障网站安全无虞?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
如何在 React 中条件性地遍历数组并渲染元素
如何用PHP快速搭建高效网站?分步指南
详解jQuery中基本的动画方法
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
如何破解联通资金短缺导致的基站建设难题?
详解jQuery停止动画——stop()方法的使用
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel怎么实现模型属性的自动加密
如何在服务器上配置二级域名建站?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
利用 Google AI 进行 YouTube 视频 SEO 描述优化
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
Laravel如何处理CORS跨域请求?(配置示例)
Android使用GridView实现日历的简单功能
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Python制作简易注册登录系统
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel如何实现一对一模型关联?(Eloquent示例)
如何快速生成凡客建站的专业级图册?
香港服务器部署网站为何提示未备案?
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
如何在VPS电脑上快速搭建网站?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
中国移动官方网站首页入口 中国移动官网网页登录
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Angular 表单中正确绑定输入值以确保提交与验证正常工作
html5的keygen标签为什么废弃_替代方案说明【解答】
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Android自定义listview布局实现上拉加载下拉刷新功能
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何在宝塔面板创建新站点?
公司网站制作价格怎么算,公司办个官网需要多少钱?
iOS UIView常见属性方法小结
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何正确下载安装西数主机建站助手?
青岛网站建设如何选择本地服务器?
制作企业网站建设方案,怎样建设一个公司网站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?

