为了账号安全,请及时绑定邮箱和手机立即绑定

android开发:调用照相机临时跳转页面

标签:
Android

临时相机调用页面

/**
 * 临时照相页面
 */
public class CameraTempActivity extends JCBBaseActivity {

    public static final String USER_ID = "user_id";
    public static final String SESSION_TYPE = "session_type";

    public void start(Context context, String userId, SessionTypeEnum sessiongType){
        Intent it = new Intent();
        it.setClass(context,CameraTempActivity.class);
        it.putExtra(USER_ID,userId);
        it.putExtra(SESSION_TYPE,sessiongType);
        startActivity(it);
    }

    String outPath = UStorage.getWritePath(HString.get32UUID() + ".jpg", StorageType.TYPE_TEMP);
    private static final int REQUEST_CODE_CAMERA = 2;

    @Override
    protected void initView(Bundle savedInstanceState) {
        super.initView(savedInstanceState);
        try {
            if (TextUtils.isEmpty(outPath)) {
                toast(getResources().getString(R.string.sdcard_not_enough_error), Toast.LENGTH_LONG);
                finish();
                return;
            }
            File outputFile = new File(outPath);
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outputFile));
            startActivityForResult(intent, REQUEST_CODE_CAMERA);
        } catch (ActivityNotFoundException e) {
            finish();
        } catch (Exception e) {
            toast(getResources().getString(R.string.sdcard_not_enough_head_error), Toast.LENGTH_LONG);
            finish();
        }
    }

    @Override
    protected void startView(Bundle savedInstanceState) {

    }

    @Override
    protected int layoutViewId() {
        return R.layout.activity_camera_temp;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != RESULT_OK) {
            setResult(resultCode);
            finish();
            return;
        }
        onPickedCamera(data, requestCode);
    }

    private void onPickedCamera(Intent data, int code) {
        try {
            String photoPath = pathFromResult(data);
            if (!TextUtils.isEmpty(photoPath)) {
                Intent it = getIntent();
                String userId = it.getStringExtra(USER_ID);
                SessionTypeEnum sessionType = (SessionTypeEnum) it.getSerializableExtra(SESSION_TYPE);
                CameraActivity.start(CameraTempActivity.this,userId,sessionType,photoPath);
            }
            finish();
        } catch (Exception e) {
            toast(getResources().getString(R.string.picker_image_error), Toast.LENGTH_LONG);
            finish();
        }
    }

    private String pathFromResult(Intent data) {
        if (data == null || data.getData() == null) {
            return outPath;
        }

        Uri uri = data.getData();
        Cursor cursor = getContentResolver()
                .query(uri, new String[]{MediaStore.Images.Media.DATA}, null, null, null);
        if (cursor == null) {
            // miui 2.3 有可能为null
            return uri.getPath();
        } else {
            if (uri.toString().contains("content://com.android.providers.media.documents/document/image")) { // htc 某些手机
                // 获取图片地址
                String _id = null;
                String uridecode = uri.decode(uri.toString());
                int id_index = uridecode.lastIndexOf(":");
                _id = uridecode.substring(id_index + 1);
                Cursor mcursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, " _id = " + _id,
                        null, null);
                mcursor.moveToFirst();
                int column_index = mcursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                outPath = mcursor.getString(column_index);
                if (!mcursor.isClosed()) {
                    mcursor.close();
                }
                if (!cursor.isClosed()) {
                    cursor.close();
                }
                return outPath;

            } else {
                cursor.moveToFirst();
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                outPath = cursor.getString(column_index);
                if (!cursor.isClosed()) {
                    cursor.close();
                }
                return outPath;
            }
        }
    }

}
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消