diff --git a/qy/build.gradle b/qy/build.gradle
index ff68151..343a5fe 100644
--- a/qy/build.gradle
+++ b/qy/build.gradle
@@ -6,7 +6,7 @@ android {
defaultConfig {
applicationId "com.qiyou.mb.android"
- minSdkVersion 8
+ minSdkVersion 9
targetSdkVersion 22
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_social_sdk.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 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) {
// options.encoding = "GBK"
diff --git a/qy/libs/core-3.2.0.jar b/qy/libs/core-3.2.0.jar
new file mode 100644
index 0000000..6af9c62
Binary files /dev/null and b/qy/libs/core-3.2.0.jar differ
diff --git a/qy/libs/javase-2.3-SNAPSHOT.jar b/qy/libs/javase-2.3-SNAPSHOT.jar
new file mode 100755
index 0000000..b7b7357
Binary files /dev/null and b/qy/libs/javase-2.3-SNAPSHOT.jar differ
diff --git a/qy/src/main/AndroidManifest.xml b/qy/src/main/AndroidManifest.xml
index f2e9de6..8a6b59b 100644
--- a/qy/src/main/AndroidManifest.xml
+++ b/qy/src/main/AndroidManifest.xml
@@ -8,7 +8,9 @@
+ tools:overrideLibrary="com.umeng.message.lib"
+
+ />
@@ -63,18 +65,18 @@
android:value="AIzaSyBAey0WNbuvc2WeEbCOsGEpp2WW0iw77u0"
/>
-
+ />-->
-
-
-
-
+
diff --git a/qy/src/main/java/com/qiyou/mb/android/QiYouConstant.java b/qy/src/main/java/com/qiyou/mb/android/QiYouConstant.java
index e938c20..530aef6 100644
--- a/qy/src/main/java/com/qiyou/mb/android/QiYouConstant.java
+++ b/qy/src/main/java/com/qiyou/mb/android/QiYouConstant.java
@@ -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 TENCENT_APP_ID = "1104563148";
// 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*/ ;
@@ -214,7 +214,11 @@ public static String EXTRA_KEY_DISTANCE = "distance";
public static String EXTRA_KEY_LOG_SHELL = "LOG";
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_START_PROXI_ALERT="START_PROXI_ALERT";
public static String EXTRA_KEY_START_NAVI="START_PROXI_NAVI";
diff --git a/qy/src/main/java/com/qiyou/mb/android/ui/MainActivity.java b/qy/src/main/java/com/qiyou/mb/android/ui/MainActivity.java
index 40bb169..8b018b1 100644
--- a/qy/src/main/java/com/qiyou/mb/android/ui/MainActivity.java
+++ b/qy/src/main/java/com/qiyou/mb/android/ui/MainActivity.java
@@ -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.RegistFragment;
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.TrackList_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.umeng.analytics.MobclickAgent;
import com.umeng.analytics.MobclickAgent.UMAnalyticsConfig;
+import com.umeng.message.PushAgent;
import com.umeng.socialize.bean.RequestType;
import com.umeng.socialize.bean.SHARE_MEDIA;
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.media.CircleShareContent;
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.JSONObject;
import java.util.ArrayList;
-
+
+import me.dm7.barcodescanner.zxing.ZXingScannerView;
+
+//import com.google.zxing.BarcodeFormat;
+
//@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
//@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 dTAG ="com.qiyou";
@@ -150,7 +156,8 @@ public class MainActivity extends Activity_qiyouBase {
// public Activity_bean currentAcitiviy;
// public Group_bean currentGroup;
// public User_bean currentUser;
-
+ private ZXingScannerView mScannerView;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
// startWelcome();
@@ -796,8 +803,26 @@ public void stopNaviService(){
showFragment(new OfflineMaps_fragment(),OfflineMaps_fragment.getFTag());
}
-
-
+
+ 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() {
// if(app.currentActiveFragment==WebList_fragment.getFTag()) return;
@@ -2299,7 +2324,8 @@ public void showNoteDetail(Note note,NoteMessage noteMsg) {
// mTts.destory();
super.onDestroy();
}
-
+
+
public final MediaScannerConnection msc = new MediaScannerConnection((QiYouApplication) getApplication(), new MediaScannerConnectionClient() {
@Override
public void onMediaScannerConnected() {
diff --git a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/ActivityDetail.java b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/ActivityDetail.java
index d57ce76..363bcd0 100644
--- a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/ActivityDetail.java
+++ b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/ActivityDetail.java
@@ -214,7 +214,7 @@ public class ActivityDetail extends WebList_fragment /*TrackingBasic_fragment*/
Button btn_refresh;
Button btn_actJoin;
Button btn_share;
-
+ Button btn_qcode;
// TextView td_track_sumary;
EditText act_roadbook;
EditText act_edit_title;
@@ -295,7 +295,12 @@ public class ActivityDetail extends WebList_fragment /*TrackingBasic_fragment*/
edit_act_distance= (EditText) vContainer.findViewById(R.id.act_edit_distance);
edit_act_speed= (EditText) vContainer.findViewById(R.id.act_edit_speed);
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.setOnClickListener(ButtonOnClickListener);
act_startplace_share = (TextView) vContainer.findViewById(R.id.act_txt_startGeo_share);
@@ -411,9 +416,28 @@ 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
void pickGeoPlace(int 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);
}
- 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){
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");
else
- postJsonWS(json.toString(),RestMethods.ACT_P_DEL_MEMBER "mb/activity/delmember");*/
+ postJsonWS(json.toString(),RestMethods.ACT_P_DEL_MEMBER "mb/activity/delmember");*//*
- }
+ }*/
@Override
void processJsonObject(String method,JSONObject jsonObject,String msg)throws JSONException{
diff --git a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/QCode_fragment.java b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/QCode_fragment.java
new file mode 100644
index 0000000..8f75851
--- /dev/null
+++ b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/QCode_fragment.java
@@ -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;
+
+ }
+
+}
diff --git a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/Querybase_fragment.java b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/Querybase_fragment.java
index 7c5d7c2..3fe43f9 100644
--- a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/Querybase_fragment.java
+++ b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/Querybase_fragment.java
@@ -1,17 +1,5 @@
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.Dialog;
import android.app.ProgressDialog;
@@ -55,12 +43,12 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RadioGroup;
-import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.ScrollView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TimePicker;
+import android.widget.Toast;
import com.google.gson.JsonSyntaxException;
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.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 {
public abstract void doQuery();
@@ -161,6 +161,7 @@ public abstract class Querybase_fragment extends QiyouFragment implements SwipeR
}
protected void initialCommonControlls(){
+// if (vContainer.findViewById(R.id.swipRefresh) == null ){return;}
mSwipeLayout = (SwipeRefreshLayout)vContainer.findViewById(R.id.swipRefresh);
if (mSwipeLayout!=null){
@@ -2629,21 +2630,71 @@ public abstract class Querybase_fragment extends QiyouFragment implements SwipeR
return spannableString1;
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ 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");*/
+
+
+ }
}
diff --git a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/Scan_fragment.java b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/Scan_fragment.java
new file mode 100644
index 0000000..a0f6631
--- /dev/null
+++ b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/Scan_fragment.java
@@ -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;
+
+ }
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
diff --git a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackStatics_fragment.java b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackStatics_fragment.java
index 7ae718a..0954eb4 100644
--- a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackStatics_fragment.java
+++ b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackStatics_fragment.java
@@ -83,7 +83,7 @@ public class TrackStatics_fragment extends TrackMap_fragment implements Ilocatio
private TextView mftNoteText;
private TextView mdetailNoteText;
private ImageView imgBtnEditUser;
- private Button btnMoreHistory,btnMoreConfigure,btnMoreOffline;
+ private Button btnMoreHistory,btnMoreConfigure,btnMoreOffline,btnScan;
// 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.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);
// iv.setBackgroundResource(R.drawable.icon_footmark);
iv.setImageResource(R.drawable.icon_footmark);
+
+ tv.setPadding(0,0,0,5);
try{
((LinearLayout)tabWidget.getChildAt(i)).setGravity(Gravity.CENTER_VERTICAL);
((LinearLayout)tabWidget.getChildAt(i)).addView(iv,0);
@@ -1385,7 +1388,8 @@ public class TrackStatics_fragment extends TrackMap_fragment implements Ilocatio
} else if(i==3){
// ImageView iv = new ImageView(activity);
// 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);
try{
((LinearLayout)tabWidget.getChildAt(i)).setGravity(Gravity.CENTER_VERTICAL);
diff --git a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackingBasic_fragment.java b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackingBasic_fragment.java
index bd5329f..51e9eae 100755
--- a/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackingBasic_fragment.java
+++ b/qy/src/main/java/com/qiyou/mb/android/ui/fragments/TrackingBasic_fragment.java
@@ -685,6 +685,9 @@ mBaiduMap.setMyLocationData(locData);*/
case R.id.btn_more_history:{activity.showLocalTrackList();break; }
case R.id.btn_more_configure:{activity. startPrefActivity(); 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 showObjDetail(){}
void importTrack(){}
-
+ void generateQcode(){}
void switchLiveList(){
liveList =(LinearLayout)vContainer.findViewById(R.id.ll_liveList) ;
LinearLayout leftBtns=(LinearLayout)vContainer.findViewById(R.id.ll_left_btns) ;
diff --git a/qy/src/main/java/com/qiyou/mb/android/utils/image/QRCodeUtil.java b/qy/src/main/java/com/qiyou/mb/android/utils/image/QRCodeUtil.java
new file mode 100644
index 0000000..05da4cf
--- /dev/null
+++ b/qy/src/main/java/com/qiyou/mb/android/utils/image/QRCodeUtil.java
@@ -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 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;
+ }
+
+}
\ No newline at end of file
diff --git a/qy/src/main/res/drawable-hdpi/icon_gift.png b/qy/src/main/res/drawable-hdpi/icon_gift.png
new file mode 100644
index 0000000..1c51338
Binary files /dev/null and b/qy/src/main/res/drawable-hdpi/icon_gift.png differ
diff --git a/qy/src/main/res/layout/act_group_buttons.xml b/qy/src/main/res/layout/act_group_buttons.xml
index dc37acf..946ab76 100755
--- a/qy/src/main/res/layout/act_group_buttons.xml
+++ b/qy/src/main/res/layout/act_group_buttons.xml
@@ -31,9 +31,14 @@
style="@style/button_top"
android:text="@string/delete"
android:visibility="gone" />
-
-
-
+
+
+
+
@@ -80,7 +80,13 @@ android:padding="0dp"
>
+
diff --git a/qy/src/main/res/layout/qcode_fragment.xml b/qy/src/main/res/layout/qcode_fragment.xml
new file mode 100755
index 0000000..9c71319
--- /dev/null
+++ b/qy/src/main/res/layout/qcode_fragment.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/qy/src/main/res/values/strings.xml b/qy/src/main/res/values/strings.xml
index 081c732..7fecfbb 100755
--- a/qy/src/main/res/values/strings.xml
+++ b/qy/src/main/res/values/strings.xml
@@ -161,8 +161,11 @@
偏好设置
+ 扫一扫
离线地图
- 首页
+ 花积分
+ 兑积分
+ 首页
关于爱骑驴
退出
语音路书
@@ -272,6 +275,7 @@
运动趋势
概略图
运动数据明细,可以按时间和运动类型查看您的详细运动数据
+ 更多功能
活动标题
发起人员
@@ -313,6 +317,7 @@
收尾
保存
加入
+ 二维码
退出
待同意
提交