拍照中点击完成按钮崩溃

拍照中点击完成按钮崩溃

之前有客户反应,拍照中点击完成按钮会崩溃或者卡死,而且时有时无。

报错代码

Bitmap bitmap = BitmapFactory.decodeFile(imgFileUrl);
int mWidth = bitmap.getWidth();

发现每次都是bitmap为空的,也就是说以下几种情况:

  1. 拍照的时候的路径有问题,图片不能生成
  2. 拍照的时候图片生成了,但是不能读取

接着是我的获取目录的逻辑,先获取ExternalCacheDir目录,如果是空的则获取CacheDir目录。

解决思路

后来我把这个逻辑改成了获取CacheDir目录,发现在4.x和5.x的手机上产生这个null的几率变成了百分之百。后来改成了ExternalCacheDir目录就没有这个问题了,算是暂时解决了,现在只要获取不到ExternalCacheDir我就给用户说没有多余的缓存。

求助

有哪位大神可以告诉我为啥4.x和5.x的手机上拍照用Context.getCacheDir()这个方法获取到的路径,bitmap会是空的?

你可以使用 Android 系统提供的 Intent 类调用系统相机拍照。你需要创建一个 Intent 对象,指定 Intent 的 action 为 MediaStore.ACTION_IMAGE_CAPTURE,然后调用 startActivityForResult() 方法启动相机应用。 以下是一个示例代码: ``` private static final int REQUEST_IMAGE_CAPTURE = 1; private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { // 处理拍照返回的数据 Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); // 将图片显示在 ImageView 中或者保存到本地 } } ``` 在上面的代码中,我们定义了一个 REQUEST_IMAGE_CAPTURE 常量来标识启动相机的请求。当用户点击按钮时,我们调用 dispatchTakePictureIntent() 方法来启动相机应用。如果设备上没有安装相机应用,那么 takePictureIntent.resolveActivity(getPackageManager()) 会返回 null,我们需要检查这个返回值以避免应用崩溃。 当用户拍照完成后,相机应用会将照片数据返回给我们的应用。我们需要在 onActivityResult() 方法中处理这个返回的数据。在上面的代码中,我们从 Intent 的 extras 中获取了照片的 Bitmap 对象,然后可以将它显示在 ImageView 中或者保存到本地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值