使用拍照功能,测试了几款,有SD 卡的,无SD卡的 其他手机暂无问题.小米手机有SD卡,
但一直报
Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/com.hbsy.Wxbb/img/7_20170612082622.jpg: open failed: ENOENT (No such file or directory)
调试发现 无法在目录下创建文件夹
final private static String createBaseDir() {
String Rulest = "";
if (Utlity.isSdcardWritable()) {
LogUtils.i("log", "可以读取SD卡");
;
String basePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";
String destPath = basePath.trim() + APP_PAGE_NAME.trim();
File parent = new File(destPath.trim());
if (!parent.exists() && !parent.isDirectory()) {
if (parent.mkdirs()) {
LogUtils.i("创建文件夹成功!" + parent.getAbsolutePath() + "/");
} else {
LogUtils.i("创建文件夹失败!" + parent.getAbsolutePath() + "/");
parent.mkdir();
}
}
Rulest= parent.getAbsolutePath();
} else {
LogUtils.i("log", "不可以读取SD卡");
;
Rulest = getExternalSdCardPath();
}
if (Rulest != null) {
return Rulest;
} else {
return null;
}
}
/**
* 打开相机拍照功能
* @param activity //当前界面
* @param flag //回调标志位
*/
public static File openCamera(Activity activity,int flag){
String status= Environment.getExternalStorageState();
if(status.equals(Environment.MEDIA_MOUNTED)){//判断是否有SD卡
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File tempFile = new File(Environment.getExternalStorageDirectory(), getPhotoFileName());
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
intent.putExtra("camerasensortype", 2);// 调用前置摄像头
intent.putExtra("autofocus", true);// 自动对焦
intent.putExtra("fullScreen", false);// 全屏
intent.putExtra("showActionIcons", false);
activity.startActivityForResult(intent, flag);
return tempFile;
}else{
Toast.makeText(activity, "没有SD卡,无法调用拍照功能", Toast.LENGTH_LONG).show();
return null;
}
}
相机调用不了还是拍完照返回读取图片路径问题?
你能调用起系统的拍照功能么,应该是可以的,注意一个地方,intent传值是有大小限制的,也就是,拍照后的图片应该先保存在本地,然后回传一个图片保存在本地的地址,拿这个地址去上传图片,而不是直接传一个bitmap对象
小米手机存在一个拍完照片,返回的地址值为null的情况
百分之五的 几率出现
java.io.FileNotFoundException: /storage/emulated/0/com.hbsy.Wxbb/img/75_20170614152234.jpg: open failed: ENOENT (No such file or directory)