android 相机和相册,[转载][转载] android调用相机和相册

本文介绍了在Android客户端中如何轻松调用相机和相册进行图片上传。首先,在AndroidManifest.xml中添加相机权限,然后通过Intent启动相机和相册应用。当用户选择图片后,onActivityResult方法接收返回的Bitmap并显示在ImageView上。同时提供了将Bitmap转换为byte[]的方法,以便进一步将图片上传到服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多同学在做客户端的时候,都需要做上传图片,那么上传图片如何上传呢?自己写一个SurfaceView做为展示区,然后用camera类来实现?太out了!直接调用相机拍照获取或者调用相册来取照片才是王道

a4c26d1e5885305701be709a3d33442f.png现在晓飞教你如何调用相机和相册:

首先:

1.首先在AndroidManifest.xml中设置权限:

android:name="android.permission.CAMERA"/>

/>

android:name="android.hardware.camera.autofocus"

/>

2.调用相机和相册:

Intent takephoto = new

Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(takephoto,CAPTURE_CODE);

Intent album = new

Intent(Intent.ACTION_GET_CONTENT);

album.setType("image/*");

startActivityForResult(album, IMAGE_CODE);

因为需要调用到返回值,所以必须使用startActivityForResult(Intent

intent,int result);

3.写onActivityResult方法接返回值

@Override

protected void onActivityResult(int requestCode, int resultCode,

Intent data) {

try {

ContentResolver resolver = getContentResolver();

if (resultCode != RESULT_OK) {

return;

} else if (requestCode == IMAGE_CODE) {

Uri originalUri = data.getData();

if (originalUri != null) {

bm = MediaStore.Images.Media.getBitmap(resolver,originalUri);

iv.setImageBitmap(bm);

}

} else if (requestCode == CAPTURE_CODE

&& resultCode == RESULT_OK) {

Bundle bundle = data.getExtras();

if (bundle != null) {

bm = (Bitmap) bundle.get("data");

iv.setImageBitmap(bm);

}

}

} catch (Exception e) {

Toast.makeText(this, "选择图片错误,图片只能为jpg格式",

Toast.LENGTH_SHORT).show();

}

}

至此,bitmap已经返回并且已经赋值给了界面上的ImageView。

友情提示:如何将bitmap转成byte[]?晓飞告诉你:

private byte[] Bitmap2Bytes(Bitmap bm){

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

留意观察晓飞帖子的同学应该知道晓飞曾经发过一个http请求的工具类(私藏好久的万能http请求工具类),结合那个工具类就可以图片上传到服务器端了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值