public class CameraActivity extends BaseActivity implements View.OnClickListener {
//存放路径
public static final String UPLOAD_PATH = Constants.SDCARD_PATH
+ "upload/claim/";
public static final int MASK_NULL = 0;//不设置蒙版
public static final int MASK_FRONT = 1;//全车拍照
public static final int MASK_FRAME = 2;//车架号
public static final int MASK_OBJECT = 3;//损失物拍照
private static int maskType = MASK_NULL;//默认
private int position; // 需要拍照的坑位编号 1 - 8
private String uri;
private Camera camera;
private CameraHelper mCameraHelper;
private Camera.Parameters parameters = null;
private Camera.Size previewSize = null;
private int screenWidth;
private int screenHeight;
private static final String NOT_AUTO_FOCUS = "fixed__";// 定焦
private String autofocusType = NOT_AUTO_FOCUS;// -1表示不支持
private static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture";
private boolean isFlashOpen ;
private String mFilePath;//保存文件的路径
private ImageButton btn_flash;//闪关灯
private ImageButton btn_takephoto;//拍照
private View layout_takepic_con;
private View layout_take_finish;
private OrientationEventListener mOrientationListener;
private int mScreenExifOrientation = 0;
private ImageView mImageMask ;//拍照蒙版
private TextView tips_top;//上面的提示
private TextView tips_bottom;//底部提示
private File mJpgFile;//拍照的图片
/**
*设置蒙版 类型
* @param type MASK_FRONT MASK_FRAME MASK_NULL
*/
public static void setMaskType(int type){
maskType = type;
}
private boolean isFromGallery;
private boolean isFromUploadPage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int pageNumber = 1;
DisplayMetrics metrics = getResources().getDisplayMetrics();
Intent i = getIntent();
position = i.getIntExtra("position", -1);
initMasks(position);
uri = i.getStringExtra("uri");
isFromGallery=i.getBooleanExtra("isFromGallery", false);
isFromUploadPage=isFromUploadPage(i.getBooleanExtra("isFromUploadPage", false),!TextUtils.isEmpty(uri));
if (TextUtils.isEmpty(uri)) {
gotoShootingView();
} else {
Bitmap bm = PathTurnUtils.getBitmap(uri, metrics.widthPixels, metrics.heightPixels);
gotoPreviewView(bm);
}
}
//判断是从上传图片页面跳转切已选择图片
private boolean isFromUploadPage(boolean FromUploadPage,boolean getUri){
return FromUploadPage && getUri;
}
private void initMasks(int position) {
if (position == 0) {
maskType = MASK_FRONT;
} else {
maskType = MASK_NULL;
}
}
@Override
protected void onDestroy() {
if (mOrientationListener != null) {
mOrientationListener.disable();
}
if (MessageDialogUtil.isShow()) {
MessageDialogUtil.dismissAlertDialog();
}
super.onDestroy();
}
private void gotoFirstView(int pageNumber) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_camera_firstpage);
ImageView main = (ImageView) findViewById(R.id.iv_main);
if (!TextUtils.isEmpty(uri)) {
Bitmap bm = null;
main.setImageBitmap(bm);
} else {
main.setImageResource(ImageResource.get(position));
}
ImageView back = (ImageView) findViewById(R.id.iv_back);
back.setOnClickListener(this);
TextView shoot = (TextView) findViewById(R.id.tv_shoot);
shoot.setOnClickListener(this);
}
private void gotoShootingView(){
mOrientationListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int i) {
if(45 <= i && i < 135) {
mScreenExifOrientation = 180;
} else if(135 <= i && i < 225) {
mScreenExifOrientation = 270;
} else if(225 <= i && i < 315) {
mScreenExifOrientation = 0;
} else {
mScreenExifOrientation = 90;
}
}
};
mOrientationListener.enable();
// 显示界面
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.camera_layout);
SurfaceView surfaceView = (SurfaceView) this.findViewById(R.id.SurfaceView01);
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceView.getHolder().setKeepScreenOn(true);
surfaceView.getHolder().addCallback(new SurfaceCallback());
// 方法1 Android获得屏幕的宽和高
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
mCameraHelper = new CameraHelper(this);
try {
Uri mUri = getIntent().getExtras().getParcelable(MediaStore.EXTRA_OUTPUT);// localIntent.putExtra(MediaStore.EXTRA_OUTPUT,
// imageUriFromCamera);
mFilePath = UriUtils.getPath(this, mUri);
}catch (Exception e){
e.printStackTrace();
}
btn_flash = (ImageButton) findViewById(R.id.btn_flash);
btn_flash.setOnClickListener(mListener);
btn_takephoto = (ImageButton) findViewById(R.id.btn_takephoto);
btn_takephoto.setOnClickListener(mListener);
if(isSurportFlash()){
btn_flash.setVisibility(View.VISIBLE);
}else{
btn_flash.setVisibility(View.INVISIBLE);
}
layout_takepic_con = findViewById(R.id.layout_takepic_con);
layout_take_finish = findViewById(R.id.layout_take_finish);
mImageMask = (ImageView) findViewById(R.id.img_mask);
tips_top = (TextView) findViewById(R.id.tv_tips_top);
tips_bottom = (TextView) findViewById(R.id.tv_tips_bottom);
switch(maskType){
case MASK_FRONT:
mImageMask.setImageResource(R.drawable.car_mask);
tips_top.setText(R.string.camera_tips_all);
tips_top.setVisibility(View.VISIBLE);
break;
// case MASK_FRAME:
// mImageMask.setImageResource(R.drawable.car_mask_frame);
// tips_top.setText(R.string.camera_tips_frame);
// break;
// case MASK_OBJECT:
// mImageMask.setImageResource(R.drawable.car_mask);
// tips_top.setText(R.string.camera_tips_object);
// tips_top.setVisibility(View.VISIBLE);
// break;
default:
mImageMask.setImageDrawable(null);
tips_top.setText("");
break;
}
}
private void gotoPreviewView(Bitmap result) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_camera_preview);
ImageView i = (ImageView) findViewById(R.id.iv_main_picture);
ImageView delete = (ImageView) findViewById(R.id.tv_camera_delete);
ImageView back = (ImageView) findViewById(R.id.iv_back);
back.setOnClickListener(this);
delete.setVisibility(View.GONE);
i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
i.setImageBitmap(result);
final ImageView s = (ImageView) findViewById(R.id.iv_standard);
final ViewGroup compare = (ViewGroup) findViewById(R.id.rl_compare);
if ((position >=0 && position <=3) || (position >= 100 && position <= 103)) {
s.setImageResource(ImageResource.get(position));
TextView title = (TextView) findViewById(R.id.tv_title);
title.setText(getTitle(position));
compare.setVisibility(View.VISIBLE);
compare.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
s.setVisibility(View.VISIBLE);
} else if (action == MotionEvent.ACTION_UP) {
s.setVisibility(View.GONE);
}
return true;
}
});
} else {
s.setVisibility(View.GONE);
compare.setVisibility(View.GONE);
delete.setVisibility(View.VISIBLE);
}
ViewGroup use = (ViewGroup) findViewById(R.id.rl_use);
ViewGroup retake = (ViewGroup) findViewById(R.id.rl_retake);
use.setOnClickListener(this);
retake.setOnClickListener(this);
delete.setOnClickListener(this);
}
private String getTitle(int position) {
String[] titlesA = {"全车图片", "损失远景", "损失近景", "损失细节"};
String[] titlesB = {"被保人身份证", "行驶证", "驾驶证", "被保人银行卡"};
if (position >=0 && position <= 3) {
return titlesA[position];
} else if (position >= 100 && position <= 103) {
return titlesB[position - 100];
}
return "其他";
}
/**
* *****************************************************************
* 对重拍弹dialog的修改
*
*/
private OnDeletePhotoListener deletePhotoListener = null;
public interface OnDeletePhotoListener {
public void onDeletePhotoListener();
}
private void createDirIfNotExist(final String uploadPath) {
File out = new File(uploadPath);
if (!out.exists()) {
out.mkdirs();
}
}
private void usePhoto() {
Intent headimg = new Intent(Intent.ACTION_PICK, null);
headimg.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(headimg, ClaimLossCertyChatAcitivty.RequestCode.GALLERY.ordinal());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(data==null){
return;
}
if (requestCode ==ClaimLossCertyChatAcitivty.RequestCode.GALLERY.ordinal()){
Uri galleryUri = data.getData();
if (galleryUri == null) {
return;
}
uri= UriUtils.getPath(this, galleryUri);
DisplayMetrics metrics = getResources().getDisplayMetrics();
Bitmap bm = PathTurnUtils.getBitmap(uri, metrics.widthPixels, metrics.heightPixels);
gotoPreviewView(bm);
}
}
/**
* ********************************************
*/
private PicturePickerDialog pickerDialog;
public void onButtonClick(View v){
switch (v.getId()) {
case R.id.btn_repeat:// 重拍
if(camera != null){
camera.startPreview(); // 拍完照后,重新开始预览
}
showTakePicorFinish(true);
break;
case R.id.btn_confirm://确认
setResult(RESULT_OK);
finish();
break;
case R.id.btn_return://返回
setResult(RESULT_CANCELED);
finish();
break;
default:break;
}
}
/**
* 创建图片文件名
* @return
*/
private String createImgName() {
StringBuffer sb = new StringBuffer();
sb.append(Preferences.getInstance(getApplicationContext()).getUid())
.append("_").append(AutoClaimUtils.getAutoClaimCaseId()).append("_")
.append(System.currentTimeMillis()).append(".jpg");
return sb.toString();
}
/**
* 弹窗提示,是否要删除该照片
*/
private void showIsDeletePic() {
MessageDialogUtil.showAlertDialog(this, "温馨提示", "确定删除这张照片吗?", "是的", "取消");
MessageDialogUtil.setLeftListener(new MessageDialogUtil.OnLeftListener() {
@Override
public void onClick() {
mJpgFile.delete();
Intent back = new Intent();
back.putExtra("uri", "");
back.putExtra("position", position);
setResult(RESULT_OK, back);
finish();
}
});
}
/**
*
* @param istrue true 显示 拍照 按钮 false 显示拍照完成 按钮
*/
private void showTakePicorFinish(boolean istrue){
if(istrue){
layout_takepic_con.setVisibility(View.VISIBLE);
mImageMask.setVisibility(View.VISIBLE);
layout_take_finish.setVisibility(View.GONE);
tips_bottom.setVisibility(View.VISIBLE);
tips_top.setVisibility(View.VISIBLE);
}else{
layout_takepic_con.setVisibility(View.GONE);
layout_take_finish.setVisibility(View.VISIBLE);
mImageMask.setVisibility(View.INVISIBLE);
tips_bottom.setVisibility(View.INVISIBLE);
tips_top.setVisibility(View.INVISIBLE);
}
}
private View.OnClickListener mListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (camera != null) {
switch (v.getId()) {
case R.id.btn_takephoto:// 拍照
takePic();
break;
case R.id.btn_flash:
btn_flash.setSelected(!btn_flash.isSelected());
setFlashOn(btn_flash.isSelected());
break;
default:break;
}
}
}
};
/**
* 拍照处理
*/
private void takePic(){
if (autofocusType.contains(FOCUS_MODE_CONTINUOUS_PICTURE)) {
if (android.os.Build.VERSION.SDK_INT == 15) {// 适配HTC HTC
// T320e拍照BUG
try {
camera.autoFocus(new Camera.AutoFocusCallback() {
@Override
public void onAutoFocus(final boolean success, final Camera camera) {
camera.takePicture(null, null, new MyPictureCallback());
}
});
} catch (Exception e) {
camera.takePicture(null, null, new MyPictureCallback());
}
} else {
camera.takePicture(null, null, new MyPictureCallback());
}
} else if (autofocusType.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
camera.autoFocus(new Camera.AutoFocusCallback() {
@Override
public void onAutoFocus(final boolean success, final Camera camera) {
// camera.cancelAutoFocus();//只有加上了这一句,才会自动对焦。
if (success) {
camera.takePicture(null, null, new MyPictureCallback());
} else {
Toast.makeText(getApplicationContext(), "拍照失败",
Toast.LENGTH_SHORT).show();
}
}
});
} else {
camera.takePicture(null, null, new MyPictureCallback());
}
}
/**
* 开关 闪光灯
*
* @param isOn
*/
private void setFlashOn(boolean isOn) {
if(camera != null ) {
isFlashOpen = isOn;
Camera mCamera = camera;
if (isFlashOpen) {
if (mCamera != null) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
mCamera.setParameters(parameters);
}
} else {
if (mCamera != null) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(parameters);
}
}
}
}
/**
* 检测是否支持闪光灯
* @return
*/
public boolean isSurportFlash() {
PackageManager pm = this.getPackageManager();
FeatureInfo[] features = pm.getSystemAvailableFeatures();
for (FeatureInfo f : features) {
if (PackageManager.FEATURE_CAMERA_FLASH.equals(f.name)){ // 判断设备是否支持闪光灯
return true;
}
}
return false;
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.iv_back:
finish();
break;
case R.id.tv_shoot:
gotoShootingView();
break;
case R.id.rl_use:
Intent back = new Intent();
back.putExtra("uri", uri);
back.putExtra("position", position);
setResult(RESULT_OK, back);
finish();
break;
case R.id.tv_camera_delete://点击删除按钮
showIsDeletePic();
break;
case R.id.rl_retake:
if(!isFromUploadPage) {
if (!isFromGallery) {
gotoShootingView();
} else {
usePhoto();
}
}else{
// gotoShootingView();
//TODO:弹dialog显示拍照还是从相册选择
if (pickerDialog == null) {
pickerDialog = new PicturePickerDialog(
CameraActivity.this,
new PicturePickerDialog.IRequestCode() {
@Override
public int photoCode() {
return ClaimLossCertyChatAcitivty.RequestCode.GALLERY.ordinal();
}
@Override
public int cameraCode() {
CameraActivity.setMaskType(CameraActivity.MASK_NULL);
return ClaimLossCertyChatAcitivty.RequestCode.CAMERA.ordinal();
}
}){
public void showPickDialog(final String uploadPath, final String filename,
boolean delete) {
String shareDialogTitle = CameraActivity.this
.getString(R.string.pick_dialog_title);
if (!delete) {
MMAlert.showAlert(CameraActivity.this, shareDialogTitle, CameraActivity.this
.getResources().getStringArray(R.array.picks_pics_item),
null, new MMAlert.OnAlertSelectId() {
@Override
public void onClick(int whichButton) {
switch (whichButton) {
case 0: // 拍照
createDirIfNotExist(uploadPath);
// useCamera(uploadPath, filename);
isFromUploadPage=false;
isFromGallery=false;
gotoShootingView();
break;
case 1: // 相册
createDirIfNotExist(uploadPath);
isFromUploadPage=false;
isFromGallery=true;
usePhoto();
break;
}
}
});
} else {
MMAlert.showAlert(
CameraActivity.this,
shareDialogTitle,
CameraActivity.this.getResources().getStringArray(
R.array.picks_pics_delete_item), null,
new MMAlert.OnAlertSelectId() {
@Override
public void onClick(int whichButton) {
switch (whichButton) {
case 0:
if (deletePhotoListener != null) {
deletePhotoListener.onDeletePhotoListener();
}
break;
case 1: // 拍照
createDirIfNotExist(uploadPath);
// useCamera(uploadPath, filename);
isFromUploadPage=false;
isFromGallery=false;
gotoShootingView();
break;
case 2: // 相册
createDirIfNotExist(uploadPath);
isFromUploadPage=false;
isFromGallery=true;
usePhoto();
break;
}
}
});
}
}
};
}
pickerDialog.setType(true);
pickerDialog.showPickDialog(UPLOAD_PATH, createImgName(), false);
}
break;
}
}
private final class MyPictureCallback implements Camera.PictureCallback {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try {
if(camera != null ){
camera.stopPreview();
}
Bitmap bMapRotate = null;
Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, data.length);
if(mScreenExifOrientation == 90){
Matrix matrix = new Matrix();
matrix.reset();
matrix.postRotate(0);
bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true);
}else if(mScreenExifOrientation == 270){
Matrix matrix = new Matrix();
matrix.reset();
matrix.postRotate(180);
bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true);
}else if (mScreenExifOrientation != 0) {
Matrix matrix = new Matrix();
matrix.reset();
matrix.postRotate(mScreenExifOrientation);
bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true);
} else {
bMapRotate = bMap;
}
if(bMapRotate != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bMapRotate.compress(Bitmap.CompressFormat.JPEG, 80, baos);
data = baos.toByteArray();
baos.close();
}
saveToSDCard(data); // 保存图片到sd卡中
gotoPreviewView(bMapRotate);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "拍照失败", Toast.LENGTH_SHORT).show();
}
}
}
/**
* 将拍下来的照片存放在SD卡中
* @param data
* @throws IOException
*/
public void saveToSDCard(byte[] data) throws IOException {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 格式化时间
String filename = format.format(date) + ".jpg";
File fileFolder = new File(Environment.getExternalStorageDirectory() + "/carowner/");
if (!fileFolder.exists()) {
fileFolder.mkdir();
}
if(TextUtils.isEmpty(mFilePath)){
mJpgFile = new File(fileFolder, filename);
}else{
mJpgFile = new File(mFilePath);
}
FileOutputStream outputStream = new FileOutputStream(mJpgFile); // 文件输出流
outputStream.write(data); // 写入sd卡中
outputStream.close(); // 关闭输出流
uri = mJpgFile.getAbsolutePath();
}
/**
* 像是相机错误对话框
*/
private void ShowErrorDialog(){
if (!MessageDialogUtil.isShow()){
MessageDialogUtil.showAlertDialog(this, getString(R.string.dialog_defalut_title), "相机打开失败,请检查系统权限设置。","确定",null);
}
MessageDialogUtil.setLeftListener(new MessageDialogUtil.OnLeftListener() {
@Override
public void onClick() {
MessageDialogUtil.dismissAlertDialog();
finish();
}
});
}
private final class SurfaceCallback implements SurfaceHolder.Callback {
// 拍照状态变化时调用该方法
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
// 开始拍照时调用该方法
@Override
public void surfaceCreated(SurfaceHolder holder) {
showTakePicorFinish(true);
try {
camera = mCameraHelper.openBackCamera(); // 打开摄像头
initParameters(camera.getParameters());
camera.setPreviewDisplay(holder); // 设置用于显示拍照影像的SurfaceHolder对象
camera.setDisplayOrientation(getPreviewDegree(CameraActivity.this));
camera.startPreview(); // 开始预览
} catch (Exception e) {
e.printStackTrace();
ShowErrorDialog();
}
}
// 停止拍照时调用该方法
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (camera != null) {
camera.release(); // 释放照相机
camera = null;
}
}
}
private void initParameters(Camera.Parameters param){
previewSize = null;
//计算预览尺寸
List<Camera.Size> previewList = param.getSupportedPreviewSizes();
Collections.sort(previewList, new MyComparator());
float screenScale = screenHeight/ (float)screenWidth;
for (Camera.Size preSize : previewList) {
Log.v("Demo", "----size:" + preSize.width + "x" + preSize.height);
//GPU性能不太强的话,建议将预览设置在120W以下
if (preSize.width * preSize.height > 1200000) {
continue;
}
float preScale = preSize.width / (float) preSize.height;
float tag = Math.abs(preScale - screenScale);
if (tag < 0.03) {
previewSize = preSize;
break;
}
}
if (previewSize == null) {
previewSize = previewList.get(0);
}
Log.v("Demo", "----Use size:" + previewSize.width + "x" + previewSize.height);
param.setPreviewSize(previewSize.width, previewSize.height); // 设置预览大小
List<String> mSuportList = param.getSupportedFocusModes();
if (mSuportList.contains(FOCUS_MODE_CONTINUOUS_PICTURE)) {
param.setFocusMode(FOCUS_MODE_CONTINUOUS_PICTURE);
autofocusType = FOCUS_MODE_CONTINUOUS_PICTURE;
} else if (mSuportList.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
param.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
autofocusType = Camera.Parameters.FOCUS_MODE_AUTO;
} else {
autofocusType = NOT_AUTO_FOCUS;
}
param.setPictureFormat(PixelFormat.JPEG); // 设置图片格式
Camera.Size mSize = camera.new Size(1280, 720);
List<Camera.Size> mSizeList = param.getSupportedPictureSizes();
Collections.sort(mSizeList, new Comparator<Camera.Size>() { // 按支持的分辨率由大到小排序
@Override
public int compare(Camera.Size arg0, Camera.Size arg1) {
if (arg0.width > arg1.width) {
return -1;
} else if (arg0.width == arg1.width) {
if (arg0.height > arg1.height) {
return 1;
} else {
return -1;
}
}
return 1;
}
});
for (Camera.Size size2 : mSizeList) {
Log.i("ASDF", "Supported: " + size2.width + "x" + size2.height);
if (mSize.width < size2.width) {
continue;
} else {
mSize = size2;
break;
}
}
Log.i("ASDF", "Use : " + mSize.width + "x" + mSize.height);
param.setPictureSize(mSize.width, mSize.height);
param.setJpegQuality(80); // 设置照片质量
if(isSurportFlash()) {
setFlashOn(btn_flash.isSelected());
}
camera.setParameters(param);
}
private class MyComparator implements Comparator<Camera.Size> {
@Override
public int compare(Camera.Size size, Camera.Size size2) {
return size2.width * size2.height - size.width * size.height;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_CAMERA: // 按下拍照按钮
if (camera != null && event.getRepeatCount() == 0) {
takePic();
}
}
return super.onKeyDown(keyCode, event);
}
// 提供一个静态方法,用于根据手机方向获得相机预览画面旋转的角度
public static int getPreviewDegree(Activity activity) {
// 获得手机的方向
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
int degree = 0;
// 根据手机的方向计算相机预览画面应该选择的角度
switch (rotation) {
case Surface.ROTATION_0:
degree = 90;
break;
case Surface.ROTATION_90:
degree = 0;
break;
case Surface.ROTATION_180:
degree = 270;
break;
case Surface.ROTATION_270:
degree = 180;
break;
}
return degree;
}
public static class ImageResource {
public static int WHOLE_CAR = R.drawable.damage_whole_car1;
public static int DAMAGE_FAR = R.drawable.damage_distant_scenery1;
public static int DAMAGE_NEAR = R.drawable.damage_nearby_scenery1;
public static int DAMAGE_DETAILS = R.drawable.damage_detail1;
public static int INSURED_PESON_ID = R.drawable.certificate_identity_card1;
public static int CAR_LICENSE = R.drawable.certificate_steer_license1;
public static int DRIVER_LICENSE = R.drawable.certificate_driving_license1;
public static int INSURED_PERSON_BANK_CARD = R.drawable.certificate_bank_card1;
public static int get(int position) {
switch (position) {
case 0:
return WHOLE_CAR;
case 1:
return DAMAGE_FAR;
case 2:
return DAMAGE_NEAR;
case 3:
return DAMAGE_DETAILS;
case 100:
return INSURED_PESON_ID;
case 101:
return CAR_LICENSE;
case 102:
return DRIVER_LICENSE;
case 103:
return INSURED_PERSON_BANK_CARD;
default:
return WHOLE_CAR;
}
}
}
}
Android自定义相机
最新推荐文章于 2024-10-18 14:19:47 发布