Android 调用系统摄像头拍照保存并且更新到图库
16lz
2021-01-23
首先要添加权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <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))); }
更多相关文章
- android 运用AsyncTask 获取图片并显示
- Android:ListView数据异步加载、Handler、AsyncTask
- Android ListView组合CheckBox实现多选获取数据
- android中网络图片的显示
- Android 图片相关
- android 图片点击一下就放大到全屏,再点一下就回到原界面
- Android图片压缩、加水印
- Android获取网页上的图片的代码