aloneGirle 2016-10-15 06:23 采纳率: 42.1%
浏览 1194
已结题

android 调照相机拍照上传时出错问题

手机拍照然后上传图片时,路径不为空为什么总是上传失败啊?但是选择本地相册是成功的,照相之后打印出来的图片路径是/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);
}
}
有没有大神遇到过问题啊?请指点一下吧!

  • 写回答

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;
            }
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮