我制作了一个包含以下内容的Android应用: (1)按钮拍摄照片'单击时打开设备摄像头。 (2)ImageView显示从相机捕获的全尺寸图像。
我所做的是保存完整大小的图像,然后将其加载到ImageView上。这适用于运行版本5.1.1的Android设备。 但是,在安装了Android 4.1.1版本的设备和另一台版本为7.0的设备上,当“' CAPTURE PHOTO'按下按钮。 我无法找到原因。 这是我的Java代码,并提前感谢:
public class MainActivity extends AppCompatActivity {
private ImageView imageHolder;
private final int requestCode = 20;
private File mTempCameraPhotoFile = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageHolder = (ImageView)findViewById(R.id.captured_photo);
Button capturedImageButton = (Button)findViewById(R.id.photo_button);
capturedImageButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent takePictureIntent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File exportDir = new
File(Environment.getExternalStorageDirectory(), "TempFolder");
if (!exportDir.exists()) {
exportDir.mkdirs();
} else {
exportDir.delete();
}
mTempCameraPhotoFile = new File(exportDir, "/" +
UUID.randomUUID().toString().replaceAll("-", "") + ".jpg");
// Log.d(LOG_TAG, "/" +
UUID.randomUUID().toString().replaceAll("-", "") + ".jpg");
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(mTempCameraPhotoFile));
startActivityForResult(takePictureIntent, requestCode);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent
data) {
super.onActivityResult(requestCode, resultCode, data);
if(this.requestCode == requestCode && resultCode == RESULT_OK){
String filePath = mTempCameraPhotoFile.getPath();
Drawable img = Drawable.createFromPath(filePath);
imageHolder.setImageDrawable(img);
Toast.makeText(this, "Image path"+filePath,
Toast.LENGTH_LONG).show();
}
}
}