add barcode scan method

This commit is contained in:
wangmi 2017-01-06 13:19:33 +08:00
parent 25b9a6f630
commit 7b3121b9fa
18 changed files with 687 additions and 64 deletions

View File

@ -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"

BIN
qy/libs/core-3.2.0.jar Normal file

Binary file not shown.

BIN
qy/libs/javase-2.3-SNAPSHOT.jar Executable file

Binary file not shown.

View File

@ -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"
<!--/>--> />

View File

@ -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";

View File

@ -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() {

View File

@ -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{

View File

@ -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;
}
}

View File

@ -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");*/
}
} }

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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) ;

View File

@ -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

View File

@ -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"

View File

@ -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>

View File

@ -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>

View File

@ -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>