导航:首页 > 操作系统 > android调用相册和相机

android调用相册和相机

发布时间:2025-02-14 10:01:55

⑴ 请android高手帮忙!

使用照相机的方法:
//在监听事件中加入如下代码
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/","temp.jpg")));
startActivityForResult(intent, reqCode_CAMERA);// reqCode_CAMERA是一个一自己设定的值,用于在onActivityResult方法中判断是哪一个activity返回的
再重写onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == reqCode_CAMERA && resultCode== RESULT_OK){
////这里是直接隐式启动系统图片预览程序
// Intent intent = new Intent();
// intent.setAction(Intent.ACTION_VIEW);
//// uri指向用户选择的那个图片
// Uri uri = data.getData();
// intent.setData(uril);
// startActivity(intent);

// Uri uri = data.getData();
// Cursor cursor = getContentResolver().query(uri, null, null, null, null);
// if(cursor!=null&&cursor.moveToFirst()){
// String path = cursor.getString(1);
// Bitmap bm = BitmapFactory.decodeFile(path);
// iv.setImageBitmap(bm);
// }
// iv.setImageURI(uri);

//也可以用这里代码打开图片裁剪
Intent intent = new Intent();
intent.setAction("com.android.camera.action.CROP");
intent.setType("image/*");
intent.putExtra("data", data.getExtras().getParcelable("data"));
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);//默认图片剪裁起始位置x值
intent.putExtra("aspectY", 1);//默认图片剪裁起始位置y值
intent.putExtra("outputX", 128);//默认图片剪裁终止位置x值
intent.putExtra("outputY", 128);//默认图片剪裁终止位置x值
intent.putExtra("return-data", true);
startActivityForResult(intent, reqCode_Zoom);

}//这里是处理剪裁图片返回后的处理,直接调用ImageView显示了,你可以根据你的需要修改
else if(requestCode==reqCode_Zoom){
Bitmap bitmap = data.getExtras().getParcelable("data");
iv.setImageBitmap(bitmap);
}

上传本地图片方法:

按钮名.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 隐式启动系统相册程序
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setDataAndType(Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, reqCode_PICK);// reqCode和上面一样自己定义,但是不要重复了
}
});
再在onActivityResult方法添加一个"elseif(requestCode == reqCode_PICK && resultCode== RESULT_OK)"条件,方法体直接参考上面,就是在剪裁那里把“intent.putExtra("data", data.getExtras().getParcelable("data"));”换为“intent.setDataAndType(data.getData(), "image/*");”就可以了。

⑵ Android调用系统相机实现拍照和视频录制

(1)申请权限

(2)设置布局

这里做了一个简单的布局:添加了一个按钮和一个ImageView控件用于显示拍摄的图像。

(3)为按钮添加点击事件监听

点击按钮时,调用系统相机进行拍照,并在确定后将图像显示在ImageView控件中。

(1)申请权限

(2)设置布局

添加了一个按钮和一个VideoView控件用于显示录制的视频。

(3)为按钮添加点击事件监听

同前面一样,点击按钮后调用系统相机进行录制视频,录制完成后点击确定即可将录制的视频显示在VideoView控件中。

对于Android11.0的版本,在调用系统相近进行视频录制的时候,即使在AndroidMenifest.xml中申请了CAMERA权限,还是会在程序运行时报错: Permission  Denial ,   . .... ....  with revoked permission android.permission.CAMERA

解决方法是在程序中动态申请权限:

写在最后:文章是在学习过程中做的学习笔记,同时与志同道合者分享,文章内容均经过我自己实验证实可行,如有问题欢迎留言,很高兴一起交流讨论,共同进步!

⑶ Android调用相机相册选图时怎么跳过裁剪

Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, PICK);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {

case PICK:
String picPath = null;
String[] pojo = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(data.getData(), pojo, null, null,
null);
if (cursor != null) {
int columnIndex = cursor.getColumnIndexOrThrow(pojo[0]);
cursor.moveToFirst();
picPath = cursor.getString(columnIndex);
try {
if (Integer.parseInt(Build.VERSION.SDK) < 14) {
cursor.close();
}
} catch (Exception e) {
Log.e("", "error:" + e);
}
}
Log.i("", "imagePath = " + picPath);

阅读全文

与android调用相册和相机相关的资料

热点内容
java赋值null 浏览:54
数控程序员考试 浏览:260
单片机0x 浏览:451
dhsp服务器是什么 浏览:690
网络监测命令 浏览:206
redis队列java 浏览:221
php商城项目思路 浏览:461
反编译程序集能修改吗 浏览:1002
小盒课堂app哪个好用 浏览:535
pdf剪裁工具 浏览:43
多人协同服务器地址 浏览:665
wifi恢复出厂设置怎么加密 浏览:337
手机date文件夹无法访问 浏览:90
19款速腾安卓主机如何与手机互联 浏览:776
网易我的世界电脑版服务器地址 浏览:78
v语言编译器解析 浏览:181
linux收不到组播 浏览:13
程序员那么可爱电视剧在线看 浏览:624
r语言图例函数命令 浏览:445
服务器怎么使用端口搭建多个网站 浏览:122