add barcode scan method
This commit is contained in:
parent
25b9a6f630
commit
7b3121b9fa
|
@ -6,7 +6,7 @@ android {
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.qiyou.mb.android"
|
applicationId "com.qiyou.mb.android"
|
||||||
minSdkVersion 8
|
minSdkVersion 9
|
||||||
targetSdkVersion 22
|
targetSdkVersion 22
|
||||||
|
|
||||||
testApplicationId "com.qiyou.mb.android.test"
|
testApplicationId "com.qiyou.mb.android.test"
|
||||||
|
@ -48,9 +48,12 @@ dependencies {
|
||||||
compile files('libs/umeng-update-v2.6.0.1.jar')
|
compile files('libs/umeng-update-v2.6.0.1.jar')
|
||||||
compile files('libs/umeng_social_sdk.jar')
|
compile files('libs/umeng_social_sdk.jar')
|
||||||
compile files('libs/universal-image-loader-1.9.2.jar')
|
compile files('libs/universal-image-loader-1.9.2.jar')
|
||||||
// compile files('libs/utdid4all-1.0.4.jar')
|
// compile files('libs/utdid4all-1.0.4.jar')
|
||||||
compile 'com.google.code.gson:gson:2.8.0'
|
compile 'com.google.code.gson:gson:2.8.0'
|
||||||
compile project(':PushSDK')
|
compile project(':PushSDK')
|
||||||
|
compile 'me.dm7.barcodescanner:zxing:1.9'
|
||||||
|
compile files('libs/core-3.2.0.jar')
|
||||||
|
compile files('libs/javase-2.3-SNAPSHOT.jar')
|
||||||
}
|
}
|
||||||
//tasks.withType(JavaCompile) {
|
//tasks.withType(JavaCompile) {
|
||||||
// options.encoding = "GBK"
|
// options.encoding = "GBK"
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -8,7 +8,9 @@
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
android:minSdkVersion="8"
|
android:minSdkVersion="8"
|
||||||
android:targetSdkVersion="22"
|
android:targetSdkVersion="22"
|
||||||
tools:overrideLibrary="com.umeng.message.lib"/>
|
tools:overrideLibrary="com.umeng.message.lib"
|
||||||
|
|
||||||
|
/> <!--" tools:overrideLibrary=me.dm7.barcodescanner.zxing"-->
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
|
||||||
</uses-permission>
|
</uses-permission>
|
||||||
|
@ -63,18 +65,18 @@
|
||||||
android:value="AIzaSyBAey0WNbuvc2WeEbCOsGEpp2WW0iw77u0"
|
android:value="AIzaSyBAey0WNbuvc2WeEbCOsGEpp2WW0iw77u0"
|
||||||
/>
|
/>
|
||||||
<!-- release -->
|
<!-- release -->
|
||||||
<meta-data
|
<!-- <meta-data
|
||||||
android:name="com.baidu.lbsapi.API_KEY"
|
android:name="com.baidu.lbsapi.API_KEY"
|
||||||
android:value="rI4GlZIZcFv5fB5qxotyrW9f"
|
android:value="rI4GlZIZcFv5fB5qxotyrW9f"
|
||||||
/>
|
/>-->
|
||||||
|
|
||||||
|
|
||||||
<!-- home -->
|
<!-- home -->
|
||||||
|
|
||||||
<!--<meta-data-->
|
<meta-data
|
||||||
<!--android:name="com.baidu.lbsapi.API_KEY"-->
|
android:name="com.baidu.lbsapi.API_KEY"
|
||||||
<!--android:value="4lcFzBPFbukDG9DulM4qjjaI"-->
|
android:value="4lcFzBPFbukDG9DulM4qjjaI"
|
||||||
<!--/>-->
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ public final static String BASE_MD_URL = BASE_URL;//+"upload/";
|
||||||
public final static String BASE_STATIC_URL = BASE_URL +"staticmap/";
|
public final static String BASE_STATIC_URL = BASE_URL +"staticmap/";
|
||||||
public final static String TENCENT_APP_ID = "1104563148";
|
public final static String TENCENT_APP_ID = "1104563148";
|
||||||
// TODO Turn off when deploying.
|
// TODO Turn off when deploying.
|
||||||
public static boolean DEVELOPER_MODE = false;
|
public static boolean DEVELOPER_MODE = true;
|
||||||
|
|
||||||
public static boolean PLAYBACK_CAN_RECORD = false /*DEVELOPER_MODE*/ ;
|
public static boolean PLAYBACK_CAN_RECORD = false /*DEVELOPER_MODE*/ ;
|
||||||
|
|
||||||
|
@ -214,7 +214,11 @@ public static String EXTRA_KEY_DISTANCE = "distance";
|
||||||
public static String EXTRA_KEY_LOG_SHELL = "LOG";
|
public static String EXTRA_KEY_LOG_SHELL = "LOG";
|
||||||
public static String EXTRA_VALUE_LOG_SHELL = "logcat | grep com.qiyou";
|
public static String EXTRA_VALUE_LOG_SHELL = "logcat | grep com.qiyou";
|
||||||
|
|
||||||
//public static String EXTRA_KEY_FORCEREFRESH = "force_refresh";
|
public static String EXTRA_KEY_GENERAL = "EXTRA_KEY_GENERAL";
|
||||||
|
public static String EXTRA_KEY_QCODEDESC = "EXTRA_KEY_QCODEDESC";
|
||||||
|
public static String EXTRA_KEY_RESTMETHOD = "EXTRA_KEY_RESTMETHOD";
|
||||||
|
public static String EXTRA_KEY_SVRID = "EXTRA_KEY_SVRID";
|
||||||
|
//public static String EXTRA_KEY_FORCEREFRESH = "force_refresh";
|
||||||
//public static String EXTRA_KEY_IN_BACKGROUND = "EXTRA_KEY_IN_BACKGROUND";
|
//public static String EXTRA_KEY_IN_BACKGROUND = "EXTRA_KEY_IN_BACKGROUND";
|
||||||
public static String EXTRA_KEY_START_PROXI_ALERT="START_PROXI_ALERT";
|
public static String EXTRA_KEY_START_PROXI_ALERT="START_PROXI_ALERT";
|
||||||
public static String EXTRA_KEY_START_NAVI="START_PROXI_NAVI";
|
public static String EXTRA_KEY_START_NAVI="START_PROXI_NAVI";
|
||||||
|
|
|
@ -81,6 +81,7 @@ import com.qiyou.mb.android.ui.fragments.OfflineMaps_fragment;
|
||||||
import com.qiyou.mb.android.ui.fragments.Playback_fragment;
|
import com.qiyou.mb.android.ui.fragments.Playback_fragment;
|
||||||
import com.qiyou.mb.android.ui.fragments.RegistFragment;
|
import com.qiyou.mb.android.ui.fragments.RegistFragment;
|
||||||
import com.qiyou.mb.android.ui.fragments.Route_fragment;
|
import com.qiyou.mb.android.ui.fragments.Route_fragment;
|
||||||
|
import com.qiyou.mb.android.ui.fragments.Scan_fragment;
|
||||||
import com.qiyou.mb.android.ui.fragments.TrackDetail_fragment;
|
import com.qiyou.mb.android.ui.fragments.TrackDetail_fragment;
|
||||||
import com.qiyou.mb.android.ui.fragments.TrackList_fragment;
|
import com.qiyou.mb.android.ui.fragments.TrackList_fragment;
|
||||||
import com.qiyou.mb.android.ui.fragments.TrackStatics_fragment;
|
import com.qiyou.mb.android.ui.fragments.TrackStatics_fragment;
|
||||||
|
@ -100,6 +101,7 @@ import com.tencent.tauth.Tencent;
|
||||||
import com.tencent.tauth.UiError;
|
import com.tencent.tauth.UiError;
|
||||||
import com.umeng.analytics.MobclickAgent;
|
import com.umeng.analytics.MobclickAgent;
|
||||||
import com.umeng.analytics.MobclickAgent.UMAnalyticsConfig;
|
import com.umeng.analytics.MobclickAgent.UMAnalyticsConfig;
|
||||||
|
import com.umeng.message.PushAgent;
|
||||||
import com.umeng.socialize.bean.RequestType;
|
import com.umeng.socialize.bean.RequestType;
|
||||||
import com.umeng.socialize.bean.SHARE_MEDIA;
|
import com.umeng.socialize.bean.SHARE_MEDIA;
|
||||||
import com.umeng.socialize.controller.UMServiceFactory;
|
import com.umeng.socialize.controller.UMServiceFactory;
|
||||||
|
@ -112,17 +114,21 @@ import com.umeng.socialize.sso.UMQQSsoHandler;
|
||||||
import com.umeng.socialize.weixin.controller.UMWXHandler;
|
import com.umeng.socialize.weixin.controller.UMWXHandler;
|
||||||
import com.umeng.socialize.weixin.media.CircleShareContent;
|
import com.umeng.socialize.weixin.media.CircleShareContent;
|
||||||
import com.umeng.socialize.weixin.media.WeiXinShareContent;
|
import com.umeng.socialize.weixin.media.WeiXinShareContent;
|
||||||
import com.umeng.message.PushAgent;
|
import com.qiyou.mb.android.ui.fragments.QCode_fragment;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import me.dm7.barcodescanner.zxing.ZXingScannerView;
|
||||||
|
|
||||||
|
//import com.google.zxing.BarcodeFormat;
|
||||||
|
|
||||||
|
|
||||||
//@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
//@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
||||||
//@SuppressLint("NewApi")
|
//@SuppressLint("NewApi")
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
public class MainActivity extends Activity_qiyouBase {
|
public class MainActivity extends Activity_qiyouBase{
|
||||||
public static final String TAG ="com.qiyou.MainActivity";
|
public static final String TAG ="com.qiyou.MainActivity";
|
||||||
public static final String dTAG ="com.qiyou";
|
public static final String dTAG ="com.qiyou";
|
||||||
|
|
||||||
|
@ -150,6 +156,7 @@ public class MainActivity extends Activity_qiyouBase {
|
||||||
// public Activity_bean currentAcitiviy;
|
// public Activity_bean currentAcitiviy;
|
||||||
// public Group_bean currentGroup;
|
// public Group_bean currentGroup;
|
||||||
// public User_bean currentUser;
|
// public User_bean currentUser;
|
||||||
|
private ZXingScannerView mScannerView;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -797,6 +804,24 @@ public void stopNaviService(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void showScanner() {
|
||||||
|
// if(app.currentActiveFragment==WebList_fragment.getFTag()) return;
|
||||||
|
|
||||||
|
Scan_fragment fragment = (Scan_fragment) getSupportFragmentManager().findFragmentByTag(Scan_fragment.getFTag());
|
||||||
|
if(fragment==null) fragment =new Scan_fragment();
|
||||||
|
showFragment(fragment,Scan_fragment.getFTag());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showQcode(String json) {
|
||||||
|
// if(app.currentActiveFragment==WebList_fragment.getFTag()) return;
|
||||||
|
|
||||||
|
QCode_fragment fragment = (QCode_fragment) getSupportFragmentManager().findFragmentByTag(QCode_fragment.getFTag());
|
||||||
|
if(fragment==null) fragment = QCode_fragment.newInstance(json);
|
||||||
|
showFragment(fragment,QCode_fragment.getFTag());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void showWebList() {
|
public void showWebList() {
|
||||||
// if(app.currentActiveFragment==WebList_fragment.getFTag()) return;
|
// if(app.currentActiveFragment==WebList_fragment.getFTag()) return;
|
||||||
|
@ -2300,6 +2325,7 @@ public void showNoteDetail(Note note,NoteMessage noteMsg) {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public final MediaScannerConnection msc = new MediaScannerConnection((QiYouApplication) getApplication(), new MediaScannerConnectionClient() {
|
public final MediaScannerConnection msc = new MediaScannerConnection((QiYouApplication) getApplication(), new MediaScannerConnectionClient() {
|
||||||
@Override
|
@Override
|
||||||
public void onMediaScannerConnected() {
|
public void onMediaScannerConnected() {
|
||||||
|
|
|
@ -214,7 +214,7 @@ public class ActivityDetail extends WebList_fragment /*TrackingBasic_fragment*/
|
||||||
Button btn_refresh;
|
Button btn_refresh;
|
||||||
Button btn_actJoin;
|
Button btn_actJoin;
|
||||||
Button btn_share;
|
Button btn_share;
|
||||||
|
Button btn_qcode;
|
||||||
// TextView td_track_sumary;
|
// TextView td_track_sumary;
|
||||||
EditText act_roadbook;
|
EditText act_roadbook;
|
||||||
EditText act_edit_title;
|
EditText act_edit_title;
|
||||||
|
@ -296,6 +296,11 @@ public class ActivityDetail extends WebList_fragment /*TrackingBasic_fragment*/
|
||||||
edit_act_speed= (EditText) vContainer.findViewById(R.id.act_edit_speed);
|
edit_act_speed= (EditText) vContainer.findViewById(R.id.act_edit_speed);
|
||||||
btn_actJoin =(Button)vContainer.findViewById(R.id.act_btn_join);
|
btn_actJoin =(Button)vContainer.findViewById(R.id.act_btn_join);
|
||||||
btn_actJoin.setOnClickListener(ButtonOnClickListener);
|
btn_actJoin.setOnClickListener(ButtonOnClickListener);
|
||||||
|
|
||||||
|
btn_qcode =(Button)vContainer.findViewById(R.id.act_btn_qcode);
|
||||||
|
btn_qcode.setOnClickListener(ButtonOnClickListener);
|
||||||
|
|
||||||
|
|
||||||
txtStartGeoPicker = (TextView) vContainer.findViewById(R.id.act_txt_startGeo_picker);
|
txtStartGeoPicker = (TextView) vContainer.findViewById(R.id.act_txt_startGeo_picker);
|
||||||
txtStartGeoPicker.setOnClickListener(ButtonOnClickListener);
|
txtStartGeoPicker.setOnClickListener(ButtonOnClickListener);
|
||||||
act_startplace_share = (TextView) vContainer.findViewById(R.id.act_txt_startGeo_share);
|
act_startplace_share = (TextView) vContainer.findViewById(R.id.act_txt_startGeo_share);
|
||||||
|
@ -413,7 +418,26 @@ public class ActivityDetail extends WebList_fragment /*TrackingBasic_fragment*/
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void generateQcode(){
|
||||||
|
if (currentAct.getSvrNumber() > 0){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
try {
|
||||||
|
json.put(QiYouConstant.EXTRA_KEY_SVRID, String.valueOf(currentAct.getSvrNumber()));
|
||||||
|
json.put("ownerId", String.valueOf( currentAct.getUserId()));
|
||||||
|
json.put("svrName", currentAct.getName());
|
||||||
|
json.put(QiYouConstant.EXTRA_KEY_RESTMETHOD,RestMethods.ACT_P_ADD_MEMBER);
|
||||||
|
json.put(QiYouConstant.EXTRA_KEY_QCODEDESC, currentAct.getName());
|
||||||
|
} catch (JSONException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
activity.showQcode(json.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
void pickGeoPlace(int textViewId){
|
void pickGeoPlace(int textViewId){
|
||||||
// activity.addressTextId=textViewId;
|
// activity.addressTextId=textViewId;
|
||||||
|
@ -1120,7 +1144,7 @@ public class ActivityDetail extends WebList_fragment /*TrackingBasic_fragment*/
|
||||||
doMemberOperation(currentAct.getSvrNumber(),currentAct.getName(),currentAct.getUserId(),userId, activity.app.user.getUserbean().getUserName(),RestMethods.ACT_P_DEL_MEMBER);
|
doMemberOperation(currentAct.getSvrNumber(),currentAct.getName(),currentAct.getUserId(),userId, activity.app.user.getUserbean().getUserName(),RestMethods.ACT_P_DEL_MEMBER);
|
||||||
}
|
}
|
||||||
|
|
||||||
void doMemberOperation(int svrId, String svrName,int ownerId,int userId,String userName,final String restMethod){
|
/*void doMemberOperation(int svrId, String svrName,int ownerId,int userId,String userName,final String restMethod){
|
||||||
|
|
||||||
if(userId<=0||svrId<=0){
|
if(userId<=0||svrId<=0){
|
||||||
return;
|
return;
|
||||||
|
@ -1171,13 +1195,13 @@ public class ActivityDetail extends WebList_fragment /*TrackingBasic_fragment*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*if(btn_actJoin.getText().toString().equalsIgnoreCase(getResources().getString(R.string.act_join)))
|
*//*if(btn_actJoin.getText().toString().equalsIgnoreCase(getResources().getString(R.string.act_join)))
|
||||||
postJsonWS(json.toString(), RestMethods.ACT_P_ADD_MEMBER"mb/activity/addmember");
|
postJsonWS(json.toString(), RestMethods.ACT_P_ADD_MEMBER"mb/activity/addmember");
|
||||||
else
|
else
|
||||||
postJsonWS(json.toString(),RestMethods.ACT_P_DEL_MEMBER "mb/activity/delmember");*/
|
postJsonWS(json.toString(),RestMethods.ACT_P_DEL_MEMBER "mb/activity/delmember");*//*
|
||||||
|
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void processJsonObject(String method,JSONObject jsonObject,String msg)throws JSONException{
|
void processJsonObject(String method,JSONObject jsonObject,String msg)throws JSONException{
|
||||||
|
|
|
@ -0,0 +1,188 @@
|
||||||
|
package com.qiyou.mb.android.ui.fragments;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.Bitmap.Config;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.google.zxing.common.BitMatrix;
|
||||||
|
import com.google.zxing.qrcode.QRCodeWriter;
|
||||||
|
import com.google.zxing.BarcodeFormat;
|
||||||
|
import com.google.zxing.WriterException;
|
||||||
|
import com.qiyou.mb.android.QiYouConstant;
|
||||||
|
import com.qiyou.mb.android.R;
|
||||||
|
import com.qiyou.mb.android.utils.ImageLoader;
|
||||||
|
import com.qiyou.mb.android.utils.image.*;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by wangmi on 17/1/5.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class QCode_fragment extends QiyouFragment {
|
||||||
|
|
||||||
|
public static QCode_fragment newInstance(String json) {
|
||||||
|
|
||||||
|
QCode_fragment f = new QCode_fragment();
|
||||||
|
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
// args.putString(QiYouConstant.EXTRA_KEY_ID, trackId);
|
||||||
|
// args.putString(QiYouConstant.EXTRA_KEY_TYPE, inType);
|
||||||
|
args.putString(QiYouConstant.EXTRA_KEY_GENERAL,json );
|
||||||
|
|
||||||
|
f.setArguments(args);
|
||||||
|
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String qCodeString = "";
|
||||||
|
private QimageView mImageView;
|
||||||
|
private TextView qdesc ;
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
activity.app.playBack=false;
|
||||||
|
|
||||||
|
vContainer = inflater.inflate(R.layout.qcode_fragment, container, false);
|
||||||
|
super. onCreateView( inflater, container, savedInstanceState);
|
||||||
|
|
||||||
|
if (getArguments() != null) {
|
||||||
|
// String Id = getArguments().getString(QiYouConstant.EXTRA_KEY_ID);
|
||||||
|
// if(Id!=null)trackId =Integer.valueOf(Id);
|
||||||
|
qCodeString = getArguments().getString(QiYouConstant.EXTRA_KEY_GENERAL);
|
||||||
|
// String t=getArguments().getString(QiYouConstant.EXTRA_KEY_TYPE);
|
||||||
|
// if(!TextUtils.isEmpty(t))
|
||||||
|
// inType=Integer.valueOf(t);
|
||||||
|
|
||||||
|
}
|
||||||
|
mImageView = (QimageView) vContainer.findViewById(R.id.img_qcode);
|
||||||
|
qdesc =(TextView) vContainer.findViewById(R.id.txt_qcode);
|
||||||
|
return vContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
String txtDesc = "";
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONObject jo = new JSONObject(qCodeString);
|
||||||
|
txtDesc = jo.getString(QiYouConstant.EXTRA_KEY_QCODEDESC);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Bitmap qrcode = generateQRCode(qCodeString);
|
||||||
|
// mImageView.setImageBitmap(qrcode);
|
||||||
|
setImage();
|
||||||
|
qdesc.setText(txtDesc);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void setImage(){
|
||||||
|
|
||||||
|
final String filePath = QiYouConstant.SD_PATH
|
||||||
|
+ "qrcode" + ".jpg";
|
||||||
|
final ImageLoader IL = new ImageLoader(activity);
|
||||||
|
//二维码图片较大时,生成图片、保存文件的时间可能较长,因此放在新线程中
|
||||||
|
|
||||||
|
|
||||||
|
boolean success = QRCodeUtil.createQRImage(qCodeString, 800, 800,
|
||||||
|
null,
|
||||||
|
filePath);
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
IL.DisplayImage(filePath, mImageView);
|
||||||
|
}
|
||||||
|
|
||||||
|
// new Thread(new Runnable() {
|
||||||
|
// @Override
|
||||||
|
// public void run() {
|
||||||
|
// boolean success = QRCodeUtil.createQRImage(qCodeString, 800, 800,
|
||||||
|
// null,
|
||||||
|
// filePath);
|
||||||
|
//
|
||||||
|
// if (success) {
|
||||||
|
// IL.DisplayImage(filePath, mImageView);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }).start();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Bitmap generateQRCode(String content) {
|
||||||
|
try {
|
||||||
|
QRCodeWriter writer = new QRCodeWriter();
|
||||||
|
// MultiFormatWriter writer = new MultiFormatWriter();
|
||||||
|
BitMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE, 500, 500);
|
||||||
|
return bitMatrix2Bitmap(matrix);
|
||||||
|
} catch (WriterException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
private Bitmap bitMatrix2Bitmap(BitMatrix matrix) {
|
||||||
|
int w = matrix.getWidth();
|
||||||
|
int h = matrix.getHeight();
|
||||||
|
int[] rawData = new int[w * h];
|
||||||
|
for (int i = 0; i < w; i++) {
|
||||||
|
for (int j = 0; j < h; j++) {
|
||||||
|
int color = Color.WHITE;
|
||||||
|
if (matrix.get(i, j)) {
|
||||||
|
color = Color.BLACK;
|
||||||
|
}
|
||||||
|
rawData[i + (j * w)] = color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Bitmap bitmap = Bitmap.createBitmap(w, h, Config.RGB_565);
|
||||||
|
bitmap.setPixels(rawData, 0, w, 0, 0, w, h);
|
||||||
|
return bitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFTag(){
|
||||||
|
TAG="com.qiyou.QCode_fragment";
|
||||||
|
}
|
||||||
|
public static String getFTag(){
|
||||||
|
return "com.qiyou.QCode_fragment";
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String getCurrentTag(){
|
||||||
|
|
||||||
|
return "com.qiyou.QCode_fragment";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isShowBottomTabs() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTabOnFiling() {
|
||||||
|
|
||||||
|
// maxTabIndex = 3;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,17 +1,5 @@
|
||||||
package com.qiyou.mb.android.ui.fragments;
|
package com.qiyou.mb.android.ui.fragments;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONException;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
|
@ -55,12 +43,12 @@ import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.RadioGroup;
|
import android.widget.RadioGroup;
|
||||||
import android.widget.Toast;
|
|
||||||
import android.widget.RadioGroup.OnCheckedChangeListener;
|
import android.widget.RadioGroup.OnCheckedChangeListener;
|
||||||
import android.widget.ScrollView;
|
import android.widget.ScrollView;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.TimePicker;
|
import android.widget.TimePicker;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.gson.JsonSyntaxException;
|
import com.google.gson.JsonSyntaxException;
|
||||||
import com.loopj.android.http.RequestParams;
|
import com.loopj.android.http.RequestParams;
|
||||||
|
@ -90,6 +78,18 @@ import com.qiyou.mb.android.utils.log.QLog;
|
||||||
import com.qiyou.mb.android.utils.server.RestMethods;
|
import com.qiyou.mb.android.utils.server.RestMethods;
|
||||||
import com.qiyou.mb.android.utils.server.SharedLocation;
|
import com.qiyou.mb.android.utils.server.SharedLocation;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public abstract class Querybase_fragment extends QiyouFragment implements SwipeRefreshLayout.OnRefreshListener, LoaderCallbacks<Cursor> {
|
public abstract class Querybase_fragment extends QiyouFragment implements SwipeRefreshLayout.OnRefreshListener, LoaderCallbacks<Cursor> {
|
||||||
|
|
||||||
public abstract void doQuery();
|
public abstract void doQuery();
|
||||||
|
@ -161,6 +161,7 @@ public abstract class Querybase_fragment extends QiyouFragment implements SwipeR
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void initialCommonControlls(){
|
protected void initialCommonControlls(){
|
||||||
|
// if (vContainer.findViewById(R.id.swipRefresh) == null ){return;}
|
||||||
mSwipeLayout = (SwipeRefreshLayout)vContainer.findViewById(R.id.swipRefresh);
|
mSwipeLayout = (SwipeRefreshLayout)vContainer.findViewById(R.id.swipRefresh);
|
||||||
if (mSwipeLayout!=null){
|
if (mSwipeLayout!=null){
|
||||||
|
|
||||||
|
@ -2636,14 +2637,64 @@ public abstract class Querybase_fragment extends QiyouFragment implements SwipeR
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void doMemberOperation(int svrId, String svrName,int ownerId,int userId,String userName,final String restMethod){
|
||||||
|
|
||||||
|
if(userId<=0||svrId<=0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final JSONObject json = new JSONObject();
|
||||||
|
try {
|
||||||
|
json.put("svrId", String.valueOf(svrId));
|
||||||
|
json.put("userId", String.valueOf( userId));
|
||||||
|
json.put("ownerId", String.valueOf( ownerId));
|
||||||
|
json.put("userName", userName);
|
||||||
|
json.put("svrName", svrName);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(restMethod.equalsIgnoreCase(RestMethods.ACT_P_DEL_MEMBER)
|
||||||
|
|| restMethod.equalsIgnoreCase(RestMethods.GRP_P_DEL_MEMBER)) {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
|
builder.setMessage("确认继续此退出操作?");
|
||||||
|
builder.setTitle("提示");
|
||||||
|
builder.setCancelable(false);
|
||||||
|
builder.setPositiveButton("确认", new android.content.DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
dialog.dismiss();
|
||||||
|
|
||||||
|
|
||||||
|
postJsonWS(json.toString(), restMethod);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
dialog.dismiss();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.create().show();
|
||||||
|
}else
|
||||||
|
postJsonWS(json.toString(), restMethod);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*if(btn_actJoin.getText().toString().equalsIgnoreCase(getResources().getString(R.string.act_join)))
|
||||||
|
postJsonWS(json.toString(), RestMethods.ACT_P_ADD_MEMBER"mb/activity/addmember");
|
||||||
|
else
|
||||||
|
postJsonWS(json.toString(),RestMethods.ACT_P_DEL_MEMBER "mb/activity/delmember");*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,159 @@
|
||||||
|
package com.qiyou.mb.android.ui.fragments;
|
||||||
|
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import com.google.zxing.Result;
|
||||||
|
import com.qiyou.mb.android.QiYouConstant;
|
||||||
|
import com.qiyou.mb.android.R;
|
||||||
|
import com.qiyou.mb.android.utils.server.RestMethods;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import me.dm7.barcodescanner.zxing.ZXingScannerView;
|
||||||
|
/**
|
||||||
|
* Created by wangmi on 17/1/5.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Scan_fragment extends WebList_fragment implements ZXingScannerView.ResultHandler {
|
||||||
|
|
||||||
|
private ZXingScannerView mScannerView;
|
||||||
|
|
||||||
|
public static Scan_fragment newInstance() {
|
||||||
|
|
||||||
|
Scan_fragment f = new Scan_fragment();
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
activity.updateActionBarTitle(R.string.frg_notes);
|
||||||
|
|
||||||
|
mScannerView = new ZXingScannerView(activity); // Programmatically initialize the scanner view
|
||||||
|
// setContentView(mScannerView); // Set the scanner view as the content view
|
||||||
|
vContainer = mScannerView;
|
||||||
|
return vContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
|
||||||
|
mScannerView.startCamera(); // Start camera on resume
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleResult(Result rawResult) {
|
||||||
|
// Do something with the result here
|
||||||
|
Log.v(TAG, rawResult.getText()); // Prints scan results
|
||||||
|
Log.v(TAG, rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.)
|
||||||
|
|
||||||
|
String result = rawResult.getText();
|
||||||
|
|
||||||
|
String rest = "";
|
||||||
|
int svrId = 0;
|
||||||
|
JSONObject jo = new JSONObject();
|
||||||
|
try {
|
||||||
|
jo = new JSONObject(result);
|
||||||
|
rest = jo.getString(QiYouConstant.EXTRA_KEY_RESTMETHOD);
|
||||||
|
svrId = jo.getInt(QiYouConstant.EXTRA_KEY_SVRID);
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rest.equalsIgnoreCase(RestMethods.ACT_P_ADD_MEMBER) || rest.equalsIgnoreCase(RestMethods.GRP_P_ADD_MEMBER)){
|
||||||
|
|
||||||
|
|
||||||
|
String svrName ="";
|
||||||
|
int ownerId = 0;
|
||||||
|
try {
|
||||||
|
|
||||||
|
svrName = jo.getString("svrName");
|
||||||
|
ownerId = jo.getInt("ownerId");
|
||||||
|
|
||||||
|
}catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
doMemberOperation(svrId,svrName,ownerId,activity.app.user.getUserbean().getId(),activity.app.user.getUserbean().getUserName(),rest);
|
||||||
|
|
||||||
|
if (rest.equalsIgnoreCase(RestMethods.ACT_P_ADD_MEMBER) ) {
|
||||||
|
requestActFromWeb(svrId);
|
||||||
|
}else if (rest.equalsIgnoreCase(RestMethods.GRP_P_ADD_MEMBER) ) {
|
||||||
|
requestGroupFromWeb(svrId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mScannerView.stopCamera();
|
||||||
|
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void initialCommonControlls(){}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doQuery(){};
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFTag(){
|
||||||
|
TAG="com.qiyou.Scan_fragment";
|
||||||
|
}
|
||||||
|
public static String getFTag(){
|
||||||
|
return "com.qiyou.Scan_fragment";
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String getCurrentTag(){
|
||||||
|
|
||||||
|
return "com.qiyou.Scan_fragment";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isShowBottomTabs() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTabOnFiling() {
|
||||||
|
|
||||||
|
// maxTabIndex = 3;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ public class TrackStatics_fragment extends TrackMap_fragment implements Ilocatio
|
||||||
private TextView mftNoteText;
|
private TextView mftNoteText;
|
||||||
private TextView mdetailNoteText;
|
private TextView mdetailNoteText;
|
||||||
private ImageView imgBtnEditUser;
|
private ImageView imgBtnEditUser;
|
||||||
private Button btnMoreHistory,btnMoreConfigure,btnMoreOffline;
|
private Button btnMoreHistory,btnMoreConfigure,btnMoreOffline,btnScan;
|
||||||
|
|
||||||
// private GraphicsOverlay gpFootPointsOverlay = null;
|
// private GraphicsOverlay gpFootPointsOverlay = null;
|
||||||
|
|
||||||
|
@ -1286,7 +1286,8 @@ public class TrackStatics_fragment extends TrackMap_fragment implements Ilocatio
|
||||||
btnMoreOffline =(Button)vContainer.findViewById(R.id.btn_more_offlinemap);
|
btnMoreOffline =(Button)vContainer.findViewById(R.id.btn_more_offlinemap);
|
||||||
btnMoreOffline.setOnClickListener(ButtonOnClickListener);
|
btnMoreOffline.setOnClickListener(ButtonOnClickListener);
|
||||||
|
|
||||||
|
btnScan =(Button)vContainer.findViewById(R.id.btn_more_scan);
|
||||||
|
btnScan.setOnClickListener(ButtonOnClickListener);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1376,6 +1377,8 @@ public class TrackStatics_fragment extends TrackMap_fragment implements Ilocatio
|
||||||
// ImageView iv = new ImageView(activity);
|
// ImageView iv = new ImageView(activity);
|
||||||
// iv.setBackgroundResource(R.drawable.icon_footmark);
|
// iv.setBackgroundResource(R.drawable.icon_footmark);
|
||||||
iv.setImageResource(R.drawable.icon_footmark);
|
iv.setImageResource(R.drawable.icon_footmark);
|
||||||
|
|
||||||
|
tv.setPadding(0,0,0,5);
|
||||||
try{
|
try{
|
||||||
((LinearLayout)tabWidget.getChildAt(i)).setGravity(Gravity.CENTER_VERTICAL);
|
((LinearLayout)tabWidget.getChildAt(i)).setGravity(Gravity.CENTER_VERTICAL);
|
||||||
((LinearLayout)tabWidget.getChildAt(i)).addView(iv,0);
|
((LinearLayout)tabWidget.getChildAt(i)).addView(iv,0);
|
||||||
|
@ -1385,7 +1388,8 @@ public class TrackStatics_fragment extends TrackMap_fragment implements Ilocatio
|
||||||
} else if(i==3){
|
} else if(i==3){
|
||||||
// ImageView iv = new ImageView(activity);
|
// ImageView iv = new ImageView(activity);
|
||||||
// iv.setBackgroundResource(R.drawable.icon_wall);
|
// iv.setBackgroundResource(R.drawable.icon_wall);
|
||||||
iv.setPadding(0,0,4,0);
|
// iv.setPadding(0,0,4,0);
|
||||||
|
tv.setPadding(4,0,0,5);
|
||||||
iv.setImageResource(R.drawable.icon_wall);
|
iv.setImageResource(R.drawable.icon_wall);
|
||||||
try{
|
try{
|
||||||
((LinearLayout)tabWidget.getChildAt(i)).setGravity(Gravity.CENTER_VERTICAL);
|
((LinearLayout)tabWidget.getChildAt(i)).setGravity(Gravity.CENTER_VERTICAL);
|
||||||
|
|
|
@ -685,6 +685,9 @@ mBaiduMap.setMyLocationData(locData);*/
|
||||||
case R.id.btn_more_history:{activity.showLocalTrackList();break; }
|
case R.id.btn_more_history:{activity.showLocalTrackList();break; }
|
||||||
case R.id.btn_more_configure:{activity. startPrefActivity(); break; }
|
case R.id.btn_more_configure:{activity. startPrefActivity(); break; }
|
||||||
case R.id.btn_more_offlinemap:{activity.showOffline();break;}
|
case R.id.btn_more_offlinemap:{activity.showOffline();break;}
|
||||||
|
case R.id.btn_more_scan:{activity.showScanner();break;}
|
||||||
|
case R.id.act_btn_qcode:{generateQcode();break;}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -727,7 +730,7 @@ mBaiduMap.setMyLocationData(locData);*/
|
||||||
void shareObj(){};
|
void shareObj(){};
|
||||||
void showObjDetail(){}
|
void showObjDetail(){}
|
||||||
void importTrack(){}
|
void importTrack(){}
|
||||||
|
void generateQcode(){}
|
||||||
void switchLiveList(){
|
void switchLiveList(){
|
||||||
liveList =(LinearLayout)vContainer.findViewById(R.id.ll_liveList) ;
|
liveList =(LinearLayout)vContainer.findViewById(R.id.ll_liveList) ;
|
||||||
LinearLayout leftBtns=(LinearLayout)vContainer.findViewById(R.id.ll_left_btns) ;
|
LinearLayout leftBtns=(LinearLayout)vContainer.findViewById(R.id.ll_left_btns) ;
|
||||||
|
|
|
@ -0,0 +1,122 @@
|
||||||
|
package com.qiyou.mb.android.utils.image;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
|
||||||
|
import com.google.zxing.BarcodeFormat;
|
||||||
|
import com.google.zxing.EncodeHintType;
|
||||||
|
import com.google.zxing.WriterException;
|
||||||
|
import com.google.zxing.common.BitMatrix;
|
||||||
|
import com.google.zxing.qrcode.QRCodeWriter;
|
||||||
|
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
|
||||||
|
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
/**
|
||||||
|
* Created by wangmi on 17/1/5.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class QRCodeUtil {
|
||||||
|
/**
|
||||||
|
* 生成二维码Bitmap
|
||||||
|
*
|
||||||
|
* @param content 内容
|
||||||
|
* @param widthPix 图片宽度
|
||||||
|
* @param heightPix 图片高度
|
||||||
|
* @param logoBm 二维码中心的Logo图标(可以为null)
|
||||||
|
* @param filePath 用于存储二维码图片的文件路径
|
||||||
|
* @return 生成二维码及保存文件是否成功
|
||||||
|
*/
|
||||||
|
public static boolean createQRImage(String content, int widthPix, int heightPix, Bitmap logoBm, String filePath) {
|
||||||
|
try {
|
||||||
|
if (content == null || "".equals(content)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//配置参数
|
||||||
|
Map<EncodeHintType, Object> hints = new HashMap<>();
|
||||||
|
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
|
||||||
|
//容错级别
|
||||||
|
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
|
||||||
|
//设置空白边距的宽度
|
||||||
|
// hints.put(EncodeHintType.MARGIN, 2); //default is 4
|
||||||
|
|
||||||
|
// 图像数据转换,使用了矩阵转换
|
||||||
|
BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, widthPix, heightPix, hints);
|
||||||
|
int[] pixels = new int[widthPix * heightPix];
|
||||||
|
// 下面这里按照二维码的算法,逐个生成二维码的图片,
|
||||||
|
// 两个for循环是图片横列扫描的结果
|
||||||
|
for (int y = 0; y < heightPix; y++) {
|
||||||
|
for (int x = 0; x < widthPix; x++) {
|
||||||
|
if (bitMatrix.get(x, y)) {
|
||||||
|
pixels[y * widthPix + x] = 0xff000000;
|
||||||
|
} else {
|
||||||
|
pixels[y * widthPix + x] = 0xffffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成二维码图片的格式,使用ARGB_8888
|
||||||
|
Bitmap bitmap = Bitmap.createBitmap(widthPix, heightPix, Bitmap.Config.ARGB_8888);
|
||||||
|
bitmap.setPixels(pixels, 0, widthPix, 0, 0, widthPix, heightPix);
|
||||||
|
|
||||||
|
if (logoBm != null) {
|
||||||
|
bitmap = addLogo(bitmap, logoBm);
|
||||||
|
}
|
||||||
|
|
||||||
|
//必须使用compress方法将bitmap保存到文件中再进行读取。直接返回的bitmap是没有任何压缩的,内存消耗巨大!
|
||||||
|
return bitmap != null && bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(filePath));
|
||||||
|
} catch (WriterException | IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在二维码中间添加Logo图案
|
||||||
|
*/
|
||||||
|
private static Bitmap addLogo(Bitmap src, Bitmap logo) {
|
||||||
|
if (src == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (logo == null) {
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取图片的宽高
|
||||||
|
int srcWidth = src.getWidth();
|
||||||
|
int srcHeight = src.getHeight();
|
||||||
|
int logoWidth = logo.getWidth();
|
||||||
|
int logoHeight = logo.getHeight();
|
||||||
|
|
||||||
|
if (srcWidth == 0 || srcHeight == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (logoWidth == 0 || logoHeight == 0) {
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
|
||||||
|
//logo大小为二维码整体大小的1/5
|
||||||
|
float scaleFactor = srcWidth * 1.0f / 5 / logoWidth;
|
||||||
|
Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);
|
||||||
|
try {
|
||||||
|
Canvas canvas = new Canvas(bitmap);
|
||||||
|
canvas.drawBitmap(src, 0, 0, null);
|
||||||
|
canvas.scale(scaleFactor, scaleFactor, srcWidth / 2, srcHeight / 2);
|
||||||
|
canvas.drawBitmap(logo, (srcWidth - logoWidth) / 2, (srcHeight - logoHeight) / 2, null);
|
||||||
|
|
||||||
|
canvas.save(Canvas.ALL_SAVE_FLAG);
|
||||||
|
canvas.restore();
|
||||||
|
} catch (Exception e) {
|
||||||
|
bitmap = null;
|
||||||
|
e.getStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return bitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -33,6 +33,11 @@
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/act_btn_qcode"
|
||||||
|
style="@style/button_top"
|
||||||
|
android:text="@string/act_qcode"
|
||||||
|
android:visibility="visible" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/act_btn_join"
|
android:id="@+id/act_btn_join"
|
||||||
|
|
|
@ -14,7 +14,7 @@ android:padding="0dp"
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/text_note"
|
style="@style/text_note"
|
||||||
android:text = "@string/note_detail"
|
android:text = "@string/note_more"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -80,7 +80,13 @@ android:padding="0dp"
|
||||||
>
|
>
|
||||||
<LinearLayout style="@style/ll_line_small_l.v" >
|
<LinearLayout style="@style/ll_line_small_l.v" >
|
||||||
|
|
||||||
|
<Button
|
||||||
|
style="@style/more_button"
|
||||||
|
android:id="@+id/btn_more_scan"
|
||||||
|
android:text="@string/action_scan"
|
||||||
|
android:drawableTop="@drawable/icon_score"
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:background="@color/black"
|
||||||
|
android:layout_height="match_parent" >
|
||||||
|
|
||||||
|
<com.qiyou.mb.android.utils.image.QimageView
|
||||||
|
android:id="@+id/img_qcode"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_margin="20dp"
|
||||||
|
android:adjustViewBounds="true"
|
||||||
|
android:contentDescription="@string/app_name"
|
||||||
|
android:scaleType="center"
|
||||||
|
|
||||||
|
/>
|
||||||
|
<TextView style ="@style/ll_title_text"
|
||||||
|
android:id="@+id/txt_qcode"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</FrameLayout>
|
|
@ -161,8 +161,11 @@
|
||||||
|
|
||||||
<!-- action menu -->
|
<!-- action menu -->
|
||||||
<string name="action_settings" translatable="false">偏好设置</string>
|
<string name="action_settings" translatable="false">偏好设置</string>
|
||||||
|
<string name="action_scan" translatable="false">扫一扫</string>
|
||||||
<string name="action_offline" translatable="false">离线地图</string>
|
<string name="action_offline" translatable="false">离线地图</string>
|
||||||
<string name="action_main" translatable="false">首页</string>
|
<string name="action_spend_score" translatable="false">花积分</string>
|
||||||
|
<string name="action_get_score" translatable="false">兑积分</string>
|
||||||
|
<string name="action_main" translatable="false">首页</string>
|
||||||
<string name="action_about" translatable="false">关于爱骑驴</string>
|
<string name="action_about" translatable="false">关于爱骑驴</string>
|
||||||
<string name="action_exit" translatable="false">退出</string>
|
<string name="action_exit" translatable="false">退出</string>
|
||||||
<string name="action_route" translatable="false">语音路书</string>
|
<string name="action_route" translatable="false">语音路书</string>
|
||||||
|
@ -272,6 +275,7 @@
|
||||||
<string name="sports_trend">运动趋势</string>
|
<string name="sports_trend">运动趋势</string>
|
||||||
<string name="distance_speed">概略图</string>
|
<string name="distance_speed">概略图</string>
|
||||||
<string name="note_detail">运动数据明细,可以按时间和运动类型查看您的详细运动数据 </string>
|
<string name="note_detail">运动数据明细,可以按时间和运动类型查看您的详细运动数据 </string>
|
||||||
|
<string name="note_more">更多功能 </string>
|
||||||
<!-- activity -->
|
<!-- activity -->
|
||||||
<string name="act_title" translatable="false">活动标题</string>
|
<string name="act_title" translatable="false">活动标题</string>
|
||||||
<string name="act_creator" translatable="false">发起人员</string>
|
<string name="act_creator" translatable="false">发起人员</string>
|
||||||
|
@ -313,6 +317,7 @@
|
||||||
<string name="act_tail" translatable="false">收尾</string>
|
<string name="act_tail" translatable="false">收尾</string>
|
||||||
<string name="act_save" translatable="false">保存</string>
|
<string name="act_save" translatable="false">保存</string>
|
||||||
<string name="act_join" translatable="false">加入</string>
|
<string name="act_join" translatable="false">加入</string>
|
||||||
|
<string name="act_qcode" translatable="false">二维码</string>
|
||||||
<string name="act_left" translatable="false">退出</string>
|
<string name="act_left" translatable="false">退出</string>
|
||||||
<string name="act_joinInprogress" translatable="false">待同意</string>
|
<string name="act_joinInprogress" translatable="false">待同意</string>
|
||||||
<string name="act_submit" translatable="false">提交</string>
|
<string name="act_submit" translatable="false">提交</string>
|
||||||
|
|
Loading…
Reference in New Issue