package com.quark.us;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.ExifInterface;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.Display;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.StringRequest;
import com.carson.constant.ConstantForSaveList;
import com.carson.constant.IDCard;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import com.qingmu.jianzhidaren.R;
import com.quark.common.JsonUtil;
import com.quark.common.Url;
import com.quark.image.UploadImg;
import com.quark.jianzhidaren.BaseActivity;
import com.parttime.main.MainTabActivity;
import com.quark.model.AuthenticationResponse;
import com.quark.ui.widget.ActionSheet.OnActionSheetSelected;
import com.quark.ui.widget.CustomDialog;
import com.quark.ui.widget.CustomDialogTwo;
import com.quark.utils.Util;
/**
* 我---认证 商家端
*
* @author Administrator
*
*/
@SuppressLint("NewApi")
public class AuthenticationActivity extends BaseActivity implements
OnActionSheetSelected, OnCancelListener {
private String url;
private String parameter;
private String userId;
private String uploadidUrl;
private String uploadidUrl_zheng;
private String uploadidUrl_fan;
private String urlSubmit;
private String realNameStr;
private String idCardStr;
private int option = 1;// 1上传正面照 2上传反面照 3上传执照
private AuthenticationResponse autrsp;
private static final int IMAGE_REQUEST_CODE = 0;
private static final int CAMERA_REQUEST_CODE = 1;
private static final int RESULT_REQUEST_CODE = 2;
private static final String IMAGE_FILE_NAME = "faceImage.jpg";// 图片名称
private int userStatus; // 审核通过 未通过
public boolean isUploadsfz_zheng = false;
public boolean isUploadsfz_fan = false;
public boolean isUploads_qiyepic = false;
@ViewInject(R.id.real_name)
EditText real_name;
@ViewInject(R.id.idCode)
EditText idCode;
// 真实姓名错误提示
@ViewInject(R.id.icon_warn_name)
Button icon_warn_name;
// 身份证错误提示
@ViewInject(R.id.icon_warn_code)
Button icon_warn_code;
// 身份证图片
@ViewInject(R.id.pic_idCard)
ImageView pic_idCard;
// 身份证图片错误提示
@ViewInject(R.id.icon_warn_idCard)
Button icon_warn_idCard;
// 身份证图片xiugai按钮
@ViewInject(R.id.updateIdCard)
Button updateIdCard;
// 身份证图片
@ViewInject(R.id.pic_idCard_back)
ImageView pic_idCard_back;
// 身份证图片错误提示
@ViewInject(R.id.icon_warn_idCard_back)
Button icon_warn_idCard_back;
// 身份证图片提交按钮
@ViewInject(R.id.updateIdCard_back)
Button updateIdCard_back;
// 提交按钮
@ViewInject(R.id.verify)
Button verify;
@ViewInject(R.id.isPass)
ImageView isPass;
@ViewInject(R.id.name_text)
TextView name_text;
@ViewInject(R.id.idcode_text)
TextView idcode_text;
private int width;
private Bitmap userPhotoBmp = null;// 上传图像
private ProgressBar proBar1, proBar2;// 身份证正、反、营业执照
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.me_authentication);
ViewUtils.inject(this);
setTopTitle("经纪人认证");
setBackButton();
// 上传图片加载框
proBar1 = (ProgressBar) findViewById(R.id.progressBar1);
proBar2 = (ProgressBar) findViewById(R.id.progressBar2);
// 获取屏幕宽度
WindowManager wm = this.getWindowManager();
width = wm.getDefaultDisplay().getWidth();
SharedPreferences sp = getSharedPreferences("jrdr.setting",
MODE_PRIVATE);
userId = sp.getString("userId", "");
RelativeLayout topLayout = (RelativeLayout) findViewById(R.id.top_title_layout);
topLayout.setBackgroundColor(getResources().getColor(
R.color.guanli_common_color));
url = Url.COMPANY_yanzheng + "?token=" + MainTabActivity.token;
parameter = "company_id";
uploadidUrl_zheng = Url.COMPANY_uploadIdcard_zheng + "?token="
+ MainTabActivity.token;
uploadidUrl_fan = Url.COMPANY_uploadIdcard_fan + "?token="
+ MainTabActivity.token;
urlSubmit = Url.COMPANY_shenheSubmit + "?token="
+ MainTabActivity.token;
getStatus();
}
/**
* 获取数据
*/
public void getStatus() {
showWait(true);
StringRequest request = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showWait(false);
Log.e("tag", response);
try {
JSONObject js = new JSONObject(response);
int type = js.getInt("ResponseType");
if (type == 1) {
// 表示经纪人端
JSONObject contentjs = js
.getJSONObject("InfoResponse");
autrsp = (AuthenticationResponse) JsonUtil
.jsonToBean(contentjs,
AuthenticationResponse.class);
real_name.setText(autrsp.getName());
if (autrsp.getName() != null
&& !"".equals(autrsp.getName())) {
real_name.setSelection(autrsp.getName()
.length());// 设置光标在尾部
}
idCode.setText(autrsp.getIdentity());
if (autrsp.getIdentity() != null
&& !"".equals(autrsp.getIdentity())) {
idCode.setSelection(autrsp.getIdentity()
.length());
}
// volley加载图片
if (autrsp.getIdentity_front() != null
&& !"".equals(autrsp
.getIdentity_front())) {
isUploadsfz_zheng = true;
loadpersonPic(
Url.GETPIC
+ autrsp.getIdentity_front(),
pic_idCard, 0);
}
if (autrsp.getIdentity_verso() != null
&& !"".equals(autrsp
.getIdentity_verso())) {
isUploadsfz_fan = true;
loadpersonPic(
Url.GETPIC
+ autrsp.getIdentity_verso(),
pic_idCard_back, 0);
}
userStatus = contentjs.getInt("status");
if (userStatus == 0) {
verify.setText("提交兼职达人审核");
} else if (userStatus == 1) {
verify.setText("审核中···");
verify.setBackgroundResource(R.drawable.btn_changingcolor_gray);
real_name.setClickable(false);
idCode.setClickable(false);
verify.setClickable(false);
updateIdCard.setVisibility(View.GONE);
updateIdCard_back.setVisibility(View.GONE);
} else if (userStatus == 2) {// 审核通过
real_name.setClickable(false);
idCode.setClickable(false);
icon_warn_idCard
.setVisibility(View.INVISIBLE);
icon_warn_idCard_back
.setVisibility(View.INVISIBLE);
verify.setVisibility(View.GONE);
verify.setClickable(false);
updateIdCard.setVisibility(View.GONE);
updateIdCard_back.setVisibility(View.GONE);
isPass.setVisibility(View.VISIBLE);
} else if (userStatus == 3) {
verify.setText("审核失败,重新提交");
verify.setBackgroundResource(R.drawable.btn_changingcolor_gray);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
showToast("提交失败");
showWait(false);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put(parameter, userId);
return map;
}
};
queue.add(request);
request.setRetryPolicy(new DefaultRetryPolicy(
ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f));
}
// 提交数据
@OnClick(R.id.verify)
public void submitOnclick(View v) {
realNameStr = real_name.getText().toString();
idCardStr = idCode.getText().toString();
if (check()) {
showWait(true);
StringRequest request = new StringRequest(Request.Method.POST,
urlSubmit, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showWait(false);
try {
JSONObject js = new JSONObject(response);
JSONObject statusjs = js
.getJSONObject("ResponseStatus");
int status = statusjs.getInt("status");
if (status == 3) {
String title = statusjs.getString("title");
String msg = statusjs.getString("msg");
String confirm = statusjs
.getString("confirm");
showAlertDialog(msg, title, confirm);
} else if (status == 2) {
succeedDialog();
} else {
showToast("用户不存在");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
showWait(false);
showToast("提交失败");
}
}) {
@Override
protected Map<String, String> getParams()
throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put(parameter, userId);
map.put("name", realNameStr);
map.put("identity", idCardStr);
return map;
}
};
queue.add(request);
request.setRetryPolicy(new DefaultRetryPolicy(
ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f));
}
}
public boolean check() {
int isUploadidCard = icon_warn_idCard.getVisibility(); // gone= 8
// invisiable =
// 4 visiable =0
if (isUploadidCard == 0) {
if (!isUploadsfz_zheng) {
icon_warn_idCard.setVisibility(View.VISIBLE);
showToast("请上传身份证正面图片");
return false;
}
}
icon_warn_idCard.setVisibility(View.INVISIBLE);
int isUploadidCardBack = icon_warn_idCard_back.getVisibility();
// Log.e("error","身份证正面图片="+isUploadidCardBack);
if (isUploadidCardBack == 0) {
if (!isUploadsfz_fan) {
icon_warn_idCard_back.setVisibility(View.VISIBLE);
showToast("请上传身份证背面图片");
return false;
}
}
icon_warn_idCard_back.setVisibility(View.INVISIBLE);
if (!Util.isEmpty(realNameStr)) {
icon_warn_name.setVisibility(View.VISIBLE);
showToast("姓名不能为空");
return false;
}
icon_warn_name.setVisibility(View.INVISIBLE);
if (!Util.isIdCard(idCardStr)) {
icon_warn_code.setVisibility(View.VISIBLE);
showToast("请输入正确的身份证号码");
return false;
} else {
String str = IDCard.IDCardValidate(idCardStr);
if (!"".equals(str)) {
icon_warn_code.setVisibility(View.VISIBLE);
showToast(str);
return false;
}
}
icon_warn_code.setVisibility(View.INVISIBLE);
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) { // 监控/拦截/屏蔽返回键
if (userStatus == 0 || userStatus == 3) {
exitApp();
} else {
finish();
}
return true;
} else if (keyCode == KeyEvent.KEYCODE_MENU) {
// 监控/拦截菜单键
} else if (keyCode == KeyEvent.KEYCODE_HOME) {
// 由于Home键为系统键,此处不能捕获,需要重写onAttachedToWindow()
}
return super.onKeyDown(keyCode, event);
}
// 点击退出
public void exitApp() {
CustomDialogTwo.Builder builder = new CustomDialogTwo.Builder(this);
builder.setMessage("完成实名认证,才能发布兼职活动哦");
builder.setTitle("温馨提示");
builder.setPositiveButton("确认退出",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
});
builder.setNegativeButton("继续认证",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
// 成功提示
public void succeedDialog() {
CustomDialog.Builder builder = new CustomDialog.Builder(this);
builder.setMessage("您的实名认证申请已经成功提交,系统将在1~2个工作日内完成审核");
builder.setTitle("提交成功");
builder.setPositiveButton("我知道了",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
});
builder.create().show();
}
// 提交失败提示
private void showAlertDialog(String str, String str2, String str3) {
CustomDialog.Builder builder = new CustomDialog.Builder(this);
builder.setMessage(str);
builder.setTitle(str2);
builder.setPositiveButton(str3, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
// finish();
}
});
builder.create().show();
}
// ==============图片上传===========
// 正面身份证
@OnClick(R.id.updateIdCard)
public void updateIdCardOnclick(View v) {
option = 1;
uploadidUrl = uploadidUrl_zheng;
UploadImg.showSheetPic(AuthenticationActivity.this,
AuthenticationActivity.this, AuthenticationActivity.this,
AuthenticationActivity.this);
}
// 反面身份证
@OnClick(R.id.updateIdCard_back)
public void updateIdCardBackOnclick(View v) {
option = 2;
uploadidUrl = uploadidUrl_fan;
UploadImg.showSheetPic(AuthenticationActivity.this,
AuthenticationActivity.this, AuthenticationActivity.this,
AuthenticationActivity.this);
}
/**
* 裁剪图片方法实现
*
* @param uri
*/
private void startPhotoZoom(Uri uri, int x, int y) {
ConstantForSaveList.uploadUri = uri;// 暂时存储uri 如htc不能保存uri
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
// 设置裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", x);
intent.putExtra("aspectY", y);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", x);
intent.putExtra("outputY", y);
intent.putExtra("noFaceDetection", true);// 取消人脸识别
intent.putExtra("return-data", false);
startActivityForResult(intent, RESULT_REQUEST_CODE);
}
/**
* 读取图片的旋转的角度
*
* @param path
* 图片绝对路径
* @return 图片的旋转角度
*/
private int getBitmapDegree(String path) {
int degree = 0;
try {
// 从指定路径下读取图片,并获取其EXIF信息
ExifInterface exifInterface = new ExifInterface(path);
// 获取图片的旋转信息
int orientation = exifInterface.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
degree = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
degree = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
degree = 270;
break;
}
} catch (IOException e) {
e.printStackTrace();
}
return degree;
}
/**
* 将图片按照某个角度进行旋转
*
* @param bm
* 需要旋转的图片
* @param degree
* 旋转角度
* @return 旋转后的图片
*/
private Bitmap rotateBitmapByDegree(Bitmap bm, int degree) {
Bitmap returnBm = null;
// 根据旋转角度,生成旋转矩阵
Matrix matrix = new Matrix();
matrix.postRotate(degree);
try {
// 将原始图片按照旋转矩阵进行旋转,并得到新的图片
returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
bm.getHeight(), matrix, true);
} catch (OutOfMemoryError e) {
}
if (returnBm == null) {
returnBm = bm;
}
if (bm != returnBm) {
bm.recycle();
}
return returnBm;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// ****************************之前的拍照先取消**end********************************
// 结果码不等于取消时候
if (resultCode != RESULT_CANCELED) {
switch (requestCode) {
case IMAGE_REQUEST_CODE:
// 位置固定 只能固定大小
if (data.getData() != null) {
startPhotoZoom(data.getData(), 360, 224);
} else {
showToast("获取图片失败...");
}
break;
case CAMERA_REQUEST_CODE:
if (Util.hasSdcard()) {
File tempFile = new File(
Environment.getExternalStorageDirectory() + "/"
+ IMAGE_FILE_NAME);
//
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
userPhotoBmp = BitmapFactory.decodeFile(
Environment.getExternalStorageDirectory() + "/"
+ IMAGE_FILE_NAME, opt);
// 获取到这个图片的原始宽度和高度
int picWidth = opt.outWidth;
int picHeight = opt.outHeight;
// 获取屏的宽度和高度
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
opt.inSampleSize = 2;
if (picWidth > picHeight) {
if (picWidth > screenWidth)
opt.inSampleSize = picWidth / screenWidth;
} else {
if (picHeight > screenHeight)
opt.inSampleSize = picHeight / screenHeight;
}
int degree = getBitmapDegree(Environment
.getExternalStorageDirectory()
+ "/"
+ IMAGE_FILE_NAME);
opt.inJustDecodeBounds = false;
userPhotoBmp = BitmapFactory.decodeFile(
Environment.getExternalStorageDirectory() + "/"
+ IMAGE_FILE_NAME, opt);
userPhotoBmp = rotateBitmapByDegree(userPhotoBmp, degree);
Uri tt_uri = null;
try {
tt_uri = Uri
.parse(MediaStore.Images.Media.insertImage(
getContentResolver(), userPhotoBmp,
null, null));
} catch (Exception e) {
e.printStackTrace();
tt_uri = Uri.fromFile(tempFile);
}
if (tt_uri != null) {
startPhotoZoom(tt_uri, 360, 224);
} else {
showToast("未找到存储卡,无法存储照片");
}
} else {
showToast("未找到存储卡,无法存储照片");
}
break;
case RESULT_REQUEST_CODE:
if (data != null) {
// 企业
if (option == 1) {
proBar1.setVisibility(View.VISIBLE);
UploadImg.getImageToView(AuthenticationActivity.this,
data, pic_idCard, uploadidUrl,
icon_warn_idCard, "company_id", userId,
"identity_front", null, null, null, proBar1, null);
} else if (option == 2) {
proBar2.setVisibility(View.VISIBLE);
UploadImg.getImageToView(AuthenticationActivity.this,
data, pic_idCard_back, uploadidUrl,
icon_warn_idCard_back, "company_id", userId,
"identity_verso", null, null, null, proBar2, null);
}
}
break;
}
}
super.onActivityResult(requestCode, resultCode, data);
}
// ==============图片上传end===========
/**
* @Description: 加载图片
* @author howe
* @date 2014-7-30 下午5:57:52
*
*/
public void loadpersonPic(String url, final ImageView imageView,
final int isRound) {
ImageRequest imgRequest = new ImageRequest(url,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap arg0) {
if (isRound == 1) {
// Bitmap output=Util.toRoundCorner(arg0, 2);
// imageView.setImageBitmap(output);
} else {
LayoutParams params = new LayoutParams(width - 30,
(width - 30) * 380 / 640);
// params.setMargins(15, 0, 0, 0);
//
// imageView.setLayoutParams(params );
imageView.setImageBitmap(arg0);
}
}
}, 300, 200, Config.ARGB_8888, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
}
});
queue.add(imgRequest);
imgRequest.setRetryPolicy(new DefaultRetryPolicy(
ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f));
}
@Override
public void onCancel(DialogInterface dialog) {
}
@Override
public void onClick(int whichButton) {
}
}