zoukankan      html  css  js  c++  java
  • 调用系统拍照

    调用系统拍照
    // 如果点击的是拍照按钮
    case R.id.btn_map_camera: {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent, CAMERA_REQUESTCODE);
            }
                break;
    // 调用系统的方法,进入拍照界面
    
        /**
         * 回调和拍照功能
         */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            try {
                switch (requestCode) {
                case CAMERA_REQUESTCODE:
                    if (resultCode == Activity.RESULT_OK && data != null) {
                        Bitmap image = (Bitmap) data.getExtras().get("data");
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        image.compress(CompressFormat.JPEG, 100, bos);
                        byte[] imagebytes = bos.toByteArray();// 照片信息
    
            // 这里开始的第二部分,获取图片的路径:
            String[] proj = { MediaStore.Images.Media.DATA };
            // 好像是android多媒体数据库的封装接口,具体的看Android文档
            Cursor cursor = managedQuery(originalUri, proj, null, null, null);
            // 按我个人理解 这个是获得用户选择的图片的索引值
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            // 将光标移至开头 ,这个很重要,不小心很容易引起越界
            cursor.moveToFirst();
            // 最后根据索引值获取图片路径
            String path = cursor.getString(column_index);
            File f = new File(path);
            if(f.exists()){
            f.delete();
    
                        Bundle bundle = new Bundle();
                        bundle.putByteArray(CameraActivity.IMAGE_BUFFER, imagebytes);
                        Intent intent = new Intent();
                        intent.putExtras(bundle);
                        intent.setClass(MapActivity.this, CameraActivity.class);
                        startActivity(intent);
                    }
                    break;
                default:
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    Hardware Virtualization
    Windows Vista 中脱机文件的更改
    Vista右键打开方式有两个记事本。
    SQL Server 2008 无法采用SQL认证模式登录(已解决)
    .NET 书籍推荐
    快速掌握一个语言最常用的50% 孟岩
    [原创] 大内存妙用 之 Readyboost 篇
    .Net 中的反射 14
    pureMVC使用实践
    有关于movieClip的一些问题
  • 原文地址:https://www.cnblogs.com/jh5240/p/2676906.html
Copyright © 2011-2022 走看看