手机拍照然后上传图片时,路径不为空为什么总是上传失败啊?但是选择本地相册是成功的,照相之后打印出来的图片路径是/storage/emulated/0/Pictures/1476511270681.jpg。调取照相机的方法用了两种,第一种使用PhotoPicker中的方式;第二种代码如下:
private void takePhoto() {
String SDState = Environment.getExternalStorageState();
if (SDState.equals(Environment.MEDIA_MOUNTED)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyy_MM_dd_HH_mm_ss");
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, filename);
photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//Log.e("takePhoto", "-------------"+photoUri.toString());
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, SELECT_PIC_BY_CAMERA);
}
}
有没有大神遇到过问题啊?请指点一下吧!
android 调照相机拍照上传时出错问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 徐福记456 2016-10-15 16:42关注
你这样试下,我使用摄像头拍照,是可以取出图片展示的。
public final static int CODE_TAKE_PICTURE = 1111;
private String fileName;//调用摄像头拍照
public void doTakePicture() {
if (!Environment.getExternalStorageDirectory().exists()) {
Toast.makeText(this, "SD卡不存在,不能拍照", Toast.LENGTH_SHORT).show();
return;
}
String sdcard = Environment.getExternalStorageDirectory().toString();
File file = new File(sdcard + "/camera/");
if (!file.exists()) {
boolean isMade = file.mkdirs();
Log.d("mkDir--", "" + isMade);
}fileName = String.valueOf(new Date().getTime()) + ".jpg"; File cameraFile = new File(file.getAbsolutePath(), fileName ); Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile)); startActivityForResult(cameraIntent ,CODE_TAKE_PICTURE); setResult(Activity.RESULT_OK, cameraIntent); } //传入uri转换为真正路径 public static String getRealFilePath( final Context context, final Uri uri ) { if( null == uri ) return null; final String scheme = uri.getScheme(); String data = ""; if( scheme == null ) data = uri.getPath(); else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) { data = uri.getPath(); } else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) { Cursor cursor = context.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null ); if ( null != cursor ) { if ( cursor.moveToFirst() ) { int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA ); if ( index > -1 ) { data = cursor.getString( index ); } } cursor.close(); } } return data; } //在Activity的onActivityResult里面读取拍照照片路径并取出来: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode == RESULT_OK){ switch (requestCode){ case CODE_TAKE_PICTURE://拍照照片 try { File mFile = new File(Environment.getExternalStorageDirectory() + "/camera/" + fileName); Uri mUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), mFile.getAbsolutePath(), null, null)); String realFilePath = getRealFilePath(this, mUri);//获取真正的图片路径 Log.d("cameraUri", realFilePath); Bitmap bitmap = BitmapFactory.decodeFile(realFilePath); }catch (FileNotFoundException e){ e.printStackTrace(); } break; default: break; } } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 爬虫爬取网站的一些信息
- ¥15 关于vue2中methods使用call修改this指向的问题
- ¥15 idea自动补全键位冲突
- ¥15 请教一下写代码,代码好难
- ¥15 iis10中如何阻止别人网站重定向到我的网站
- ¥15 滑块验证码移动速度不一致问题
- ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
- ¥15 麒麟V10桌面版SP1如何配置bonding
- ¥15 Marscode IDE 如何预览新建的 HTML 文件
- ¥15 K8S部署二进制集群过程中calico一直报错