package com.quark.company.function;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.carson.constant.ConstantForSaveList;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.qingmu.jianzhidaren.R;
import com.quark.adapter.FullStarffedAdapter;
import com.quark.common.JsonUtil;
import com.quark.common.Url;
import com.quark.jianzhidaren.BaseActivity;
import com.parttime.main.MainTabActivity;
import com.quark.model.RosterUser;
import com.quark.model.SignPersonList;
/**
* 管理员:签到人员列表
*
* @author Administrator
*
*/
public class SignPersonActivity extends BaseActivity {
private ImageView im;
private Button btn_code, btn_pen;
LinearLayout codeLayout, penLayout;
// 参数
FullStarffedAdapter fullStarffedAdapter;
private ListView listView;
private String company_id, activity_id;
private String sign_url, signUpList_url;
private String activity_name, total;
ArrayList<RosterUser> list = new ArrayList<RosterUser>();
ArrayList<SignPersonList> signPersonList = new ArrayList<SignPersonList>();
// //
private ImageView qrImgImageView;
Bitmap mBitmap;
public int status = 0;
// 图片宽度的一般
private static final int IMAGE_HALFWIDTH = 50;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.company_person_sign_yesorno);
setBackButton();
setRightImage(R.id.right, listener);
// 处理数据
activity_name = getIntent().getStringExtra("activity_name");
activity_id = getIntent().getStringExtra("activity_id");
SharedPreferences sp = getSharedPreferences("jrdr.setting",
Activity.MODE_PRIVATE);
company_id = sp.getString("userId", "");
//
im = (ImageView) findViewById(R.id.right);
Resources res = this.getResources();
Drawable btnDrawable = res.getDrawable(R.drawable.nav_btn_refresh);
im.setBackgroundDrawable(btnDrawable);
// 评价
btn_pen = (Button) findViewById(R.id.roster_pen);
penLayout = (LinearLayout) findViewById(R.id.penLayout);
penLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(SignPersonActivity.this,
PersonAssessActivity.class);
intent.putExtra("activity_id", activity_id + "");
intent.putExtra("total_num", total);
startActivity(intent);
}
});
// 二维码签到
btn_code = (Button) findViewById(R.id.roster_code);
codeLayout = (LinearLayout) findViewById(R.id.codeLayout);
codeLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
initPopWindow();
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
setTopTitle(activity_name);
sign_url = Url.COMPANY_sign + "?token=" + MainTabActivity.token
+ "&company_id=" + company_id + "&activity_id=" + activity_id;
signUpList_url = Url.COMPANY_signUpList + "?token="
+ MainTabActivity.token;
}
/*
* 点击头顶刷新
*/
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Refresh();
}
};
// 二维码签到刷新
protected void Refresh() {
// TODO Auto-generated method stub
showWait(true);
StringRequest stringRequest = new StringRequest(Method.POST, sign_url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// TODO Auto-generated method stub
showWait(false);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
showWait(false);
Log.e("TAG", arg0.getMessage(), arg0);
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> map = new HashMap<String, String>();
map.put("activity_id", activity_id);
map.put("company_id", company_id);
return map;
}
};
queue.add(stringRequest);
stringRequest
.setRetryPolicy(new DefaultRetryPolicy(ConstantForSaveList.DEFAULTRETRYTIME*1000, 1, 1.0f));
}
private void initPopWindow() throws WriterException {
// 加载popupWindow的布局文件
final View contentView = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.alert_dialog_code, null);
qrImgImageView = (ImageView) contentView
.findViewById(R.id.qiandao_code);
Resources r = getResources();
// 生成二维码
// res= getResources();activity的方法上下文获取
mBitmap = BitmapFactory.decodeResource(r, R.drawable.code_logo);
// 缩放图片
Matrix m = new Matrix();
float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth();
float sy = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getHeight();
m.setScale(sx, sy);
// 重新构造一个40*40的图片
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(),
mBitmap.getHeight(), m, false);
// mBitmap = EncodingHandler.createQRCode(url, 420);//生成二维码
WindowManager wm = (WindowManager) this
.getSystemService(Context.WINDOW_SERVICE);
try {
int width = wm.getDefaultDisplay().getWidth();// 屏幕
int height = wm.getDefaultDisplay().getHeight();
mBitmap = cretaeBitmap(
new String(sign_url.getBytes(), "ISO-8859-1"),
width * 3 / 4);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
qrImgImageView.setImageBitmap(mBitmap);
// 声明一个弹出框
final PopupWindow popupWindow = new PopupWindow(
findViewById(R.id.pop_layout), LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
// 为弹出框设定自定义的布局
popupWindow.setContentView(contentView);
Button button_sure = (Button) contentView.findViewById(R.id.btn_cancel);
button_sure.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
status = 1;
signStaff();
}
});
contentView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int height = contentView.findViewById(R.id.pop_layout).getTop();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_UP) {
if (y < height) {// 把小于号 改为大于号,轻触其他地方都可以退出二维码
popupWindow.dismiss();
}
}
return true;
}
});
// 设置SelectPicPopupWindow弹出窗体可点击
popupWindow.setFocusable(true);
// 设置SelectPicPopupWindow弹出窗体动画效果
popupWindow.setAnimationStyle(R.style.AnimBottom);
// 实例化一个ColorDrawable颜色为半透明
ColorDrawable dw = new ColorDrawable(0xb0000000);
// 设置SelectPicPopupWindow弹出窗体的背景
popupWindow.setBackgroundDrawable(dw);
popupWindow.showAtLocation(
SignPersonActivity.this.findViewById(R.id.yes_no_full_main),
Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
}
/**
* 生成二维码
*
* @param 字符串
* @return Bitmap
* @throws WriterException
*/
public Bitmap cretaeBitmap(String str, int widthAndHeight)
throws WriterException {
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
// 生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败
// BitMatrix matrix= new MultiFormatWriter().encode(str,
// BarcodeFormat.QR_CODE, 300, 300);
BitMatrix matrix = new MultiFormatWriter().encode(str,
BarcodeFormat.QR_CODE, widthAndHeight, widthAndHeight, hints);
int width = matrix.getWidth();
int height = matrix.getHeight();
// 二维矩阵转为一维像素数组,也就是一直横着排了,logo位于中间
int halfW = width / 2;
int halfH = height / 2;
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH
&& y > halfH - IMAGE_HALFWIDTH
&& y < halfH + IMAGE_HALFWIDTH) {
pixels[y * width + x] = mBitmap.getPixel(x - halfW
+ IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH);
} else {
if (matrix.get(x, y)) {
pixels[y * width + x] = 0xff000000;
} else { // 无信息设置像素点为白色
pixels[y * width + x] = 0xffffffff;
}
}
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
// 通过像素数组生成bitmap
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}
// 签到人员列表
private void signStaff() {
// TODO Auto-generated method stub
showWait(true);
StringRequest stringRequest = new StringRequest(Method.POST,
signUpList_url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// TODO Auto-generated method stub
Log.e("test1", "返回dd的数据" + response);
showWait(false);
try {
JSONObject js = new JSONObject(response);
JSONObject jss = js
.getJSONObject("ActivitySignList");
JSONArray jsss = jss.getJSONArray("list");
if (jsss.length() > 0) {
for (int i = 0; i < jsss.length(); i++) {
SignPersonList rt = new SignPersonList();
rt = (SignPersonList) JsonUtil.jsonToBean(
jsss.getJSONObject(i),
SignPersonList.class);
signPersonList.add(rt);
}
}
initSignPerson();
Message msg = handleSign.obtainMessage();
msg.what = 1;
handleSign.sendMessage(msg);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
showWait(false);
Log.e("TAG", arg0.getMessage(), arg0);
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> map = new HashMap<String, String>();
map.put("activity_id", activity_id);
map.put("company_id", company_id);
return map;
}
};
queue.add(stringRequest);
stringRequest
.setRetryPolicy(new DefaultRetryPolicy(ConstantForSaveList.DEFAULTRETRYTIME*1000, 1, 1.0f));
}
protected void initSignPerson() {
// TODO Auto-generated method stub
if (signPersonList.size() > 0) {
Log.e("test2", "返回dd的数据");
} else {
Log.e("test3", "返回dd的数据");
}
}
private Handler handleSign = new Handler() {
public void handleMessage(Message msg) {
// fullStarffedAdapter.notifyDataSetChanged();
};
};
}