android 调用系统相机拍照返回Intent 为空的处理
来源:互联网 发布:linux监控进程脚本 编辑:程序博客网 时间:2024/05/19 18:41
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyy_MM_dd_HH_mm_ss");
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(Media.TITLE, filename);
photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, reqCode);
uri = data.getData();
}
// 一些机型无法从getData中获取uri,则需手动指定拍照后存储照片的Uri
if (uri == null) {
if (photoUri != null) {
uri = photoUri;
}
}
补充上问:
首先看看调用系统相机的核心方法:
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera, CAMERA);
相机返回的数据通过下面的回调方法取得,并处理:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CAMERA && resultCode == Activity.RESULT_OK && null != data){
String sdState=Environment.getExternalStorageState();
if(!sdState.equals(Environment.MEDIA_MOUNTED)){
GameLog.log(Tag, "sd card unmount");
return;
}
new DateFormat();
String name= DateFormat.format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA))+".jpg";
Bundle bundle = data.getExtras();
//获取相机返回的数据,并转换为图片格式
Bitmap bitmap = (Bitmap)bundle.get("data");
FileOutputStream fout = null;
File file = new File("/sdcard/pintu/");
file.mkdirs();
String filename=file.getPath()+name;
try {
fout = new FileOutputStream(filename);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
try {
fout.flush();
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//显示图片
}
}
下面是调用系统相册并取得照片的方法:
Intent picture = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(picture, PICTURE);
下面是相应的回调方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CAMERA && resultCode == Activity.RESULT_OK && null != data){
Uri selectedImage = data.getData();
String[] filePathColumns={MediaStore.Images.Media.DATA};
Cursor c = this.getContentResolver().query(selectedImage, filePathColumns, null,null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePathColumns[0]);
String picturePath= c.getString(columnIndex);
c.close();
//获取图片并显示
}
- 调用系统相机拍照返回Intent 为空的处理。
- android 调用系统相机拍照返回Intent 为空的处理
- android 调用系统相机拍照返回Intent 为空的处理
- android调用系统相机拍照,返回数据为空的一些说明
- android 调用系统相机拍照,返回的data为null
- android 调用系统相机,不拍照直接按返回的处理。
- Android 调用系统相机拍照的返回结果
- Android调用系统照相机返回intent为空原因分析
- android 调用系统相机拍照的各种异常处理
- 调用android系统相机,按返回键返回和拍照成功返回的resultCode也一样
- android 调用系统相机拍照
- android调用系统相机拍照
- android调用系统相机拍照
- Android调用系统相机拍照
- Android 调用系统相机拍照
- Android 调用系统相机拍照
- 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
- 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
- lambda表达式&委托
- leetcode 112 —— Path Sum
- SIP协议详解&eXosip源码库用法分析
- 依赖权重的随机选择
- Lucas定理 大组合数取模
- android 调用系统相机拍照返回Intent 为空的处理
- 编译zlib遇到的问题 没有找到match686.obj
- linux ssh授权 无密码登录
- cron表达式
- centos7 设置IP/开机启动
- Num 26 : HDOJ2187 : 悼念512汶川大地震遇难同胞——老人是真饿了 [ 贪心 ]
- Linux | 管道
- POJ 2991 Crane (线段树)
- NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)