随着技术的进步,很多以前的技术也慢慢走向了人生的转折点。
就拿今天的主角,拍照效果来说,也是进行了技术生涯的改朝换代。
在两年前,Android API 级别19 20 21盛行的年代,拍照效果的调用的权限还是在Manifest配置的时代,还是挺简单的,获取路径也只是通过 Environment.getExternalStorageDirectory().getAbsolutePath(); 就可以获取了。但是,技术圈里竞争愈发激烈,各种技术都在忙着更新自己的装备,或变得更加容易调用,或变得功能更加强大,在圈子的压力下,拍照也开始适应这个圈子,开始了Android 7.0的兼容。
具体的时间我不是很清楚,但是今天在我没有注意的情况下,拍照效果的新装让我惊讶,让我驻足了一会儿,才缓缓从其全新的面貌离开又不想忘记
private void openCamera() {
//獲取系統版本
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
// 激活相机
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 判断存储卡是否可以用,可用进行存储
if (hasSdcard()) {
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyy_MM_dd_HH_mm_ss");
String filename = timeStampFormat.format(new Date());
tempFile = new File(Environment.getExternalStorageDirectory(),
filename + ".jpg");
if (currentapiVersion < 24) {
// 从文件中创建uri
imageUri = Uri.fromFile(tempFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
} else {
//兼容android7.0 使用共享文件的形式
ContentValues contentValues = new ContentValues(1);
contentValues.put(MediaStore.Images.Media.DATA, tempFile.getAbsolutePath());
//检查是否有存储权限,以免崩溃
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//申请WRITE_EXTERNAL_STORAGE权限
Toast.makeText(this,"请开启存储权限",Toast.LENGTH_SHORT).show();
return;
}
imageUri =getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
}
}
// 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA
startActivityForResult(intent, TAKE_PICTURE);
}
怎么样,开启的时候是不是变得好像很高大上了,路径的设置在调用前已经设置好了,调用之后访问该路径就可以访问这张图片了,真的不是以前的拍照效果了,如果不是度娘我可能还不认识你新的面貌。显示也变得简单了,直接将路径的Uri转换为bitmap就可以显示了,真的很快,很方便。让我不得不把你记录下来。以防下次见到不认识它了。