Nutgat 장치에서 이미지를 캡처하고 ABC 폴더에 이미지를 저장하면 정상적으로 작동합니다. 이미지를 캡처 한 후 서버로 보내면 일단 업로드되면 ABC 폴더에서 이미지가 삭제 될 때까지 삭제됩니다.하지만 카메라가 ABC 폴더에 저장된 이미지 2 개와 DCIM/카메라에 저장된 이미지 2 개를 생성하는 것을 확인했습니다. 폴더. 또한 내가 저장하는 동안 촬영 된 이미지의 이름을 지정하지만, DCIM/카메라에 한하고있어 시스템으로 생성 된 이름, DCIM/카메라 폴더에서 해당 이미지를 삭제하는 방법을 안내하시기 바랍니다있다 여기에카메라로 촬영 한 이미지 두 장이 DCIM/카메라 폴더에서 삭제할 수 없습니다.
열기 카메라 내 코드
private void openCamera() {
destination = null;
PackageManager pm = getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
try {
String originalfileName = getFilenameOrgImage();
File root = new File(ConstantData.IMAGE_STORAGE_LOCAL_PATH + File.separator);
if (!root.exists()) {
root.mkdirs();
}
destination = new File(originalfileName);
Log.d("destination",destination.getAbsolutePath());
Uri photoURI = FileProvider.
getUriForFile(this, getPackageName() + ".provider", destination);
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
} catch (Exception e) {
e.printStackTrace();
CommonMethods.showToast(this, getResources().getString(R.string.please_try_again));
}
} else {
CommonMethods.showToast(this, getResources().getString(R.string.camera_doesnt_support));
}
}
입니다
onActivityResult를
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_IMAGE_CAPTURE) {
FileInputStream in = new FileInputStream(destination);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 10;
Log.d("IMAGE",destination.getAbsolutePath());
treeDetailsModels.get(imgClickPos).setName(imagename);
treeDetailsModels.get(imgClickPos).setImgDestinationPath(destination);
View v = viewPager.findViewWithTag("pos" + imgClickPos);
ImageView ivBackground = (ImageView) v.findViewById(R.id.ivPhoto);
Bitmap bmp = BitmapFactory.decodeStream(in, null, options);
ivBackground.setImageBitmap(bmp);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
사용자 정의 위치
public static final String IMAGE_STORAGE_LOCAL_PATH = Environment.getExternalStorageDirectory().getPath().toString() + "/ABC";
추가 에드는이
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
경로
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="ABC/"/>
</paths>
귀하의 게시물과 코드가 메쉬입니다. 당신은 ABC 폴더에 대해 이야기하지만 ABC는 당신의 코드에 아무 것도 없습니다. 대신에 ConstantData.IMAGE_STORAGE_LOCAL_PATH를 사용합니다. 그런 다음 onActivityResult에서 비트 맵을 사용합니다. 왜? 문제와 관련이 있습니까? 그리고 당신은 compressImage (destination.getAbsolutePath()); 당신이 말하지 않은 성명서. 그리고 아무도 그것이 무엇을하는지 모릅니다. 또한 파일 제공자는 언급하지 않았습니다. onActivityResult에서 모든 코드를 제거하고 여전히 두 개의 파일이 있는지 검사합니다. – greenapps