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" /> - - - + + +