gpt4 book ai didi

android - ImageView setImageBitmap 在某些设备上不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:37:38 26 4
gpt4 key购买 nike

我正在练习使用 Camera API,为此我执行了以下操作:

一个。为捕获的图像设置一个目录(用于startActivityForResult)

设置位图,以便图像一旦保存在应用程序本身中就可以显示。

下面是代码:

设置目录。

private static File getOutputMediaFile(int type) {

// External sdcard location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
IMAGE_DIRECTORY_NAME);
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");
} else {
return null;
}

return mediaFile;
}

应用程序中的全局变量

// Activity request codes
private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
public static final int MEDIA_TYPE_IMAGE = 1;

// directory name to store the captured images
private static final String IMAGE_DIRECTORY_NAME = "my_camera_app";

private Uri fileUri;

// Views
ImageView photo;
Button camera;

相机实现逻辑

// Use camera function
private void captureImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

// start the image capture Intent
startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// Successfully captured the image
// display in imageview
previewImage();
} else {
// failed to capture image
Toast.makeText(getApplicationContext(),
"Sorry! Failed to capture image", Toast.LENGTH_SHORT)
.show();
}
}
}

private void previewImage() {
try {
// Bitmap factory
BitmapFactory.Options options = new BitmapFactory.Options();

// Downsizing image as it throws OutOfMemory exception for larger
// images
options.inSampleSize = 3;

final Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath(),
options);

photo.setImageBitmap(bitmap);

} catch (NullPointerException e) {
e.printStackTrace();
}
}

我遇到的问题是......对于我测试该应用程序的某些设备,该应用程序显示拍摄图像的空白预览,而在其他设备上该应用程序运行良好。

为什么我收到空白反馈?在某些情况下,当保存图像时,用户不会被定向到我的应用程序,而是停留在相机应用程序中。

请帮忙。

最佳答案

我遇到了同样的问题,通过将 View 渲染更改为软件解决了

ImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

关于android - ImageView setImageBitmap 在某些设备上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19947624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com