要在Android上使用MediaStore将数据从Camera保存到磁盘,您需要遵循以下步骤:
- 首先,在AndroidManifest.xml文件中添加必要的权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
- 在您的Activity或Fragment中,检查并请求必要的权限:private static final int REQUEST_IMAGE_CAPTURE = 1;
private static final int REQUEST_STORAGE_PERMISSION = 2;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_STORAGE_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
dispatchTakePictureIntent();
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
// 使用imageBitmap进行后续操作
}
}
- 在onActivityResult方法中,您可以获取到拍摄的照片的Bitmap。您可以使用这个Bitmap进行后续操作,例如保存到磁盘或显示在ImageView中。
- 如果您想将照片保存到磁盘,您可以使用以下代码:private void saveImageToDisk(Bitmap imageBitmap) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator + "MyApp";
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
}
String fileName = "IMG_" + System.currentTimeMillis() + ".jpg";
File file = new File(dir, fileName);
try {
FileOutputStream fo = new FileOutputStream(file);
fo.write(bytes.toByteArray());
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
这样,您就可以使用MediaStore将数据从Camera保存到磁盘了。