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