Android 调用系统摄像头拍照保存并且更新到图库

来源:互联网 发布:软件合作开发合同 编辑:程序博客网 时间:2024/05/24 22:42

首先要添加权限

 <!-- 在SDCard中创建与删除文件权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <!-- 往SDCard写入数据权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

调用摄像头拍照

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                startActivityForResult(intent, 1);
@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        //之所以用switch是因为用户可能还需要选择本地图片功能,我这里没有        switch (requestCode) {        case 1:            Bundle bundle = data.getExtras();            bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式            saveImageToGallery(this, bitmap);//存储            sign();            try {                view.setImageBitmap(bitmap);// 将图片显示在ImageView里            } catch (Exception e) {                System.out.println("请拍照");            }             break;        default:            break;        }    }
public static void saveImageToGallery(Context context, Bitmap bitmap) {        File appDir = new File(Environment.getExternalStorageDirectory()                .getAbsolutePath(), "image");        if (!appDir.exists()) {            // 目录不存在 则创建            appDir.mkdirs();        }        String fileName = System.currentTimeMillis() + ".jpg";        File file = new File(appDir, fileName);        try {            FileOutputStream fos = new FileOutputStream(file);            bitmap.compress(CompressFormat.JPEG, 100, fos); // 保存bitmap至本地            fos.flush();            fos.close();        } catch (Exception e) {            e.printStackTrace();        } finally {            ScannerByReceiver(context, file.getAbsolutePath());            if (!bitmap.isRecycled()) {                // bitmap.recycle(); 当存储大图片时,为避免出现OOM ,及时回收Bitmap                System.gc(); // 通知系统回收            }            // Toast.makeText(context, "图片保存成功" ,            // Toast.LENGTH_SHORT).show();        }    }    /** Receiver扫描更新图库图片 **/    private static void ScannerByReceiver(Context context, String path) {        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,                Uri.parse("file://" + path)));    }
0 0
原创粉丝点击