<uses-feature android:name="android.hardware.camera2"
<!-- required为false时,不强制要求设备支持该功能 -->
<!-- 如果不设置该值,一旦设备不支持camera,就不能安装该应用-->
android:required="false"/>
public File getPhotoFile(Crime crime) {
//获取应用对应的存储照片的外部存储路径
File externalFilesDir = mContext
.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
if (externalFilesDir == null) {
return null;
}
//创建指向文件的File对象
return new File(externalFilesDir, crime.getPhotoFilename());
}
.............
//每个crime对应的文件名
public String getPhotoFilename() {
return "IMG_" + getId().toString() + ".jpg";
}
mPhotoButton = (ImageButton) v.findViewById(R.id.crime_camera);
//隐式Intent触发相机拍照
final Intent captureImageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//mPhotoFile保存着上文创建的指向指定地址的File
//此处判断是否有能够处理隐式Intent的组件
boolean canTakePhoto = mPhotoFile != null
&& captureImageIntent.resolveActivity(packageManager) != null;
mPhotoButton.setEnabled(canTakePhoto);
if (canTakePhoto) {
//得到File文件对应的Uri地址
Uri uri = Uri.fromFile(mPhotoFile);
//将Uri地址存入到Intent中,相机拍照得到的图像将会存入到该Uri地址对应的File里
captureImageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
}
mPhotoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(captureImageIntent, REQUEST_PHOTO);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
.........
} else if (requestCode == REQUEST_PHOTO) {
updatePhotoView();
}
.........
}
private void updatePhotoView() {
if (mPhotoFile == null || !mPhotoFile.exists()) {
mPhotoView.setImageDrawable(null);
} else {
//加载图片对应的缩略图
Bitmap bitmap = PictureUtils.getScaledBitmap(mPhotoFile.getPath(), getActivity());
mPhotoView.setImageBitmap(bitmap);
}
}
//在具体视图未加载前,无法得到视图的实际大小
//因此根据屏幕尺寸,使用估算值进行缩放
public static Bitmap getScaledBitmap(String path, Activity activity) {
Point size = new Point();
activity.getWindowManager().getDefaultDisplay().getSize(size);
return getScaledBitmap(path, size.x, size.y);
}
public static Bitmap getScaledBitmap(String path, int destWidth, int destHeight) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
//按照正常尺寸解析文件
BitmapFactory.decodeFile(path, options);
//得到原始文件的宽和高
float srcWidth = options.outWidth;
float srcHeight = options.outHeight;
//inSampleSize表示水平/竖直抽样比
//例如,inSampleSize为2时,水平和数值均在原始基础上,每2个点抽取1个点
//于是,新图的大小变为原来的1/4
int inSampleSize = 1;
if (srcHeight > destHeight || srcWidth > destWidth) {
if (srcWidth > srcHeight) {
inSampleSize = Math.round(srcHeight / destHeight);
} else {
inSampleSize = Math.round(srcWidth / destWidth);
}
}
options = new BitmapFactory.Options();
options.inSampleSize = inSampleSize;
//按新的抽样比,重新解析文件
return BitmapFactory.decodeFile(path, options);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有