|
|
@@ -1,9 +1,150 @@
|
|
|
package com.xzjmyk.pm.activity.ui.me;
|
|
|
|
|
|
+import android.graphics.Bitmap;
|
|
|
+import android.graphics.Matrix;
|
|
|
+import android.graphics.drawable.BitmapDrawable;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.os.Handler;
|
|
|
+import android.util.Log;
|
|
|
+import android.widget.ImageView;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import com.google.zxing.BarcodeFormat;
|
|
|
+import com.google.zxing.MultiFormatWriter;
|
|
|
+import com.google.zxing.WriterException;
|
|
|
+import com.google.zxing.common.BitMatrix;
|
|
|
+import com.lidroid.xutils.ViewUtils;
|
|
|
+import com.lidroid.xutils.view.annotation.ViewInject;
|
|
|
+import com.xzjmyk.pm.activity.MyApplication;
|
|
|
+import com.xzjmyk.pm.activity.R;
|
|
|
+import com.xzjmyk.pm.activity.helper.AvatarHelper;
|
|
|
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
|
|
|
+
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+
|
|
|
/**
|
|
|
* Created by FANGlh on 2017/6/5.
|
|
|
* function:
|
|
|
*/
|
|
|
|
|
|
-public class InfoCodeActivity {
|
|
|
+public class InfoCodeActivity extends BaseActivity {
|
|
|
+ @ViewInject(R.id.code_main)
|
|
|
+ private ImageView code_main;
|
|
|
+ @ViewInject(R.id.common_docui_photo_img)
|
|
|
+ private ImageView photo_im;
|
|
|
+ @ViewInject(R.id.common_docui_name_tv)
|
|
|
+ private TextView name_tv;
|
|
|
+ @ViewInject(R.id.common_docui_Section_tv)
|
|
|
+ private TextView section_tv;
|
|
|
+ // 图片宽度的一般
|
|
|
+ private static final int IMAGE_HALFWIDTH = 20;
|
|
|
+ // 显示二维码图片
|
|
|
+ private ImageView imageview;
|
|
|
+ // 插入到二维码里面的图片对象
|
|
|
+ private Bitmap mBitmap;
|
|
|
+ // 需要插图图片的大小 这里设定为40*40
|
|
|
+ int[] pixels = new int[2*IMAGE_HALFWIDTH * 2*IMAGE_HALFWIDTH];
|
|
|
+ private String uu_phone;
|
|
|
+ private String uu_name;
|
|
|
+ private String loginUserId;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreate(Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ setContentView(R.layout.info_code_main);
|
|
|
+ ViewUtils.inject(this);
|
|
|
+ initView();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initView() {
|
|
|
+ progressDialog.show();
|
|
|
+ uu_phone = MyApplication.getInstance().mLoginUser.getTelephone();
|
|
|
+ uu_name = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_emname");
|
|
|
+ loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
|
|
|
+
|
|
|
+ name_tv.setText(uu_name + "");
|
|
|
+ section_tv.setText(uu_phone+"");
|
|
|
+ // 构造对象
|
|
|
+ imageview = new ImageView(this);
|
|
|
+ // 构造需要插入的图片对象
|
|
|
+ new Thread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ mBitmap = AvatarHelper.getInstance().returnBitmap(loginUserId,false);
|
|
|
+ // 缩放图片
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }).start();
|
|
|
+
|
|
|
+ new Handler().postDelayed(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ try {
|
|
|
+ String s = "{\n"
|
|
|
+ + "\"uu_name\":\"" + uu_name + "\",\n"+
|
|
|
+ "\"uu_phone\":\"" + uu_phone + "\"\n"
|
|
|
+ +"}";
|
|
|
+
|
|
|
+ if (mBitmap == null) {
|
|
|
+ Log.i("mBitmap","null");
|
|
|
+ mBitmap = ((BitmapDrawable) getResources().getDrawable(
|
|
|
+ R.drawable.uuu)).getBitmap();
|
|
|
+
|
|
|
+ }
|
|
|
+ Log.i("mBitmap",mBitmap.toString());
|
|
|
+ code_main.setImageBitmap(cretaeBitmap(new String(s.getBytes(),
|
|
|
+ "ISO-8859-1")));
|
|
|
+ AvatarHelper.getInstance().display(loginUserId, photo_im, true, false);
|
|
|
+ } catch (WriterException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ progressDialog.dismiss();
|
|
|
+ }
|
|
|
+ },1000);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成二维码
|
|
|
+ * @throws WriterException
|
|
|
+ */
|
|
|
+ public Bitmap cretaeBitmap(String str) throws WriterException {
|
|
|
+ // 生成二维矩阵,编码时指定小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败
|
|
|
+ BitMatrix matrix = new MultiFormatWriter().encode(str,
|
|
|
+ BarcodeFormat.QR_CODE, 300, 300);
|
|
|
+ int width = matrix.getWidth();
|
|
|
+ int height = matrix.getHeight();
|
|
|
+ // 二维矩阵转为一维像素数组,也就是一直横着排了
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Bitmap bitmap = Bitmap.createBitmap(width, height,
|
|
|
+ Bitmap.Config.ARGB_8888);
|
|
|
+ // 通过像素数组生成bitmap
|
|
|
+ bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
|
|
|
+
|
|
|
+ return bitmap;
|
|
|
+ }
|
|
|
}
|