首页 > 系统 > Android > 正文

Android自定义相机

2019-11-06 09:57:43
字体:
来源:转载
供稿:网友
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; } } }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表