| @@ -33,7 +33,6 @@ import com.android.views.indicators.SpringBar; | ||
| 33 | 33 |  | 
| 34 | 34 | import java.io.File; | 
| 35 | 35 |  | 
| 36 | -import ai.pai.client.BuildConfig; | |
| 37 | 36 | import ai.pai.client.R; | 
| 38 | 37 | import ai.pai.client.beans.GroupInfo; | 
| 39 | 38 | import ai.pai.client.db.DBService; | 
| @@ -44,7 +43,6 @@ import ai.pai.client.services.GroupService; | ||
| 44 | 43 | import ai.pai.client.services.MyLocationService; | 
| 45 | 44 | import ai.pai.client.utils.Constants; | 
| 46 | 45 | import ai.pai.client.utils.PhotoLoader; | 
| 47 | -import ai.pai.client.utils.UrlContainer; | |
| 48 | 46 | import ai.pai.client.views.GroupSelectPopup; | 
| 49 | 47 | import ai.pai.client.views.PersonInfoPopup; | 
| 50 | 48 |  | 
| @@ -100,7 +98,7 @@ public class MainActivity extends AppCompatActivity | ||
| 100 | 98 |      protected void onResume() { | 
| 101 | 99 | super.onResume(); | 
| 102 | 100 | callGuideBtn.setVisibility(TextUtils.isEmpty(Preferences.getInstance(this).getTourGuidePhone()) ? View.INVISIBLE : View.VISIBLE); | 
| 103 | -        if(Preferences.getInstance(this).isTourMode()|| BuildConfig.DEBUG){ | |
| 101 | +        if(Preferences.getInstance(this).isTourMode()){ | |
| 104 | 102 | Intent intent = new Intent(this, MyLocationService.class); | 
| 105 | 103 |              intent.putExtra("command",MyLocationService.COMMAND_START_LOCATION); | 
| 106 | 104 | startService(intent); | 
| @@ -121,9 +119,6 @@ public class MainActivity extends AppCompatActivity | ||
| 121 | 119 | @Override | 
| 122 | 120 |      protected void onDestroy() { | 
| 123 | 121 | super.onDestroy(); | 
| 124 | - Intent intent = new Intent(this, MyLocationService.class); | |
| 125 | -        intent.putExtra("command",MyLocationService.COMMAND_DESTROY_LOCATION); | |
| 126 | - startService(intent); | |
| 127 | 122 | } | 
| 128 | 123 |  | 
| 129 | 124 | @Override | 
| @@ -349,6 +344,9 @@ public class MainActivity extends AppCompatActivity | ||
| 349 | 344 |      public void onCommandCommitSuccess(int command, Object response) { | 
| 350 | 345 |          if(command == GroupService.GroupCommand.COMMAND_JOIN_GUIDE_GROUP){ | 
| 351 | 346 | Preferences.getInstance(this).setTourMode(true); | 
| 347 | + Intent intent = new Intent(this, MyLocationService.class); | |
| 348 | +            intent.putExtra("command",MyLocationService.COMMAND_START_LOCATION); | |
| 349 | + startService(intent); | |
| 352 | 350 | } | 
| 353 | 351 |          if (command == GroupService.GroupCommand.COMMAND_JOIN_GROUP||command == GroupService.GroupCommand.COMMAND_JOIN_GUIDE_GROUP) { | 
| 354 | 352 | GroupInfo info = (GroupInfo) response; | 
| @@ -51,6 +51,14 @@ public class Preferences { | ||
| 51 | 51 |          return mPrefs.getString("tour_phone",NullStr); | 
| 52 | 52 | } | 
| 53 | 53 |  | 
| 54 | +    public void setGatherTime(long gatherTime){ | |
| 55 | +        mPrefs.edit().putLong("gatherTime",gatherTime).commit(); | |
| 56 | + } | |
| 57 | + | |
| 58 | +    public long getGatherTime(){ | |
| 59 | +        return mPrefs.getLong("gatherTime",0); | |
| 60 | + } | |
| 61 | + | |
| 54 | 62 |      public boolean isTourMode(){ | 
| 55 | 63 |          return mPrefs.getBoolean("isTourMode",false); | 
| 56 | 64 | } | 
| @@ -1,12 +1,14 @@ | ||
| 1 | 1 | package ai.pai.client.fragments; | 
| 2 | 2 |  | 
| 3 | 3 | import android.content.Context; | 
| 4 | +import android.content.Intent; | |
| 4 | 5 | import android.os.AsyncTask; | 
| 5 | 6 | import android.os.Bundle; | 
| 6 | 7 | import android.support.v4.widget.SwipeRefreshLayout; | 
| 7 | 8 | import android.support.v7.widget.DefaultItemAnimator; | 
| 8 | 9 | import android.support.v7.widget.RecyclerView; | 
| 9 | 10 | import android.support.v7.widget.StaggeredGridLayoutManager; | 
| 11 | +import android.text.TextUtils; | |
| 10 | 12 | import android.view.LayoutInflater; | 
| 11 | 13 | import android.view.View; | 
| 12 | 14 | import android.view.ViewGroup; | 
| @@ -15,6 +17,7 @@ import android.widget.Toast; | ||
| 15 | 17 |  | 
| 16 | 18 | import com.android.common.executors.ThreadExecutor; | 
| 17 | 19 | import com.android.common.utils.LogHelper; | 
| 20 | +import com.android.common.utils.TimeUtils; | |
| 18 | 21 | import com.android.views.banner.CBViewHolderCreator; | 
| 19 | 22 | import com.android.views.banner.ConvenientBanner; | 
| 20 | 23 | import com.android.views.banner.Holder; | 
| @@ -30,13 +33,13 @@ import java.util.ArrayList; | ||
| 30 | 33 | import java.util.Arrays; | 
| 31 | 34 | import java.util.HashMap; | 
| 32 | 35 |  | 
| 33 | -import ai.pai.client.BuildConfig; | |
| 34 | 36 | import ai.pai.client.R; | 
| 35 | 37 | import ai.pai.client.adapter.RecentPhotoStaggeredAdapter; | 
| 36 | 38 | import ai.pai.client.beans.BannerBean; | 
| 37 | 39 | import ai.pai.client.beans.GroupPhotoItem; | 
| 38 | 40 | import ai.pai.client.db.DBService; | 
| 39 | 41 | import ai.pai.client.db.Preferences; | 
| 42 | +import ai.pai.client.services.MyLocationService; | |
| 40 | 43 | import ai.pai.client.utils.HttpPostTask; | 
| 41 | 44 | import ai.pai.client.utils.UrlContainer; | 
| 42 | 45 | import ai.pai.client.views.FullScreenImgPopup; | 
| @@ -58,15 +61,8 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh | ||
| 58 | 61 | private static final int num = 10; | 
| 59 | 62 |  | 
| 60 | 63 | private ConvenientBanner banner; | 
| 61 | - private ArrayList<BannerBean> bannerBeanList; | |
| 62 | 64 |  | 
| 63 | -    private String[] images = {"http://img2.imgtn.bdimg.com/it/u=3093785514,1341050958&fm=21&gp=0.jpg", | |
| 64 | - "http://img2.3lian.com/2014/f2/37/d/40.jpg", | |
| 65 | - "http://img2.3lian.com/2014/f2/37/d/39.jpg", | |
| 66 | - "http://www.8kmm.com/UploadFiles/2012/8/201208140920132659.jpg", | |
| 67 | - "http://f.hiphotos.baidu.com/image/h%3D200/sign=1478eb74d5a20cf45990f9df460b4b0c/d058ccbf6c81800a5422e5fdb43533fa838b4779.jpg", | |
| 68 | - "http://f.hiphotos.baidu.com/image/pic/item/09fa513d269759ee50f1971ab6fb43166c22dfba.jpg" | |
| 69 | - }; | |
| 65 | + private String[] images = new String[2]; | |
| 70 | 66 |  | 
| 71 | 67 | @Override | 
| 72 | 68 |      public void onCreate( Bundle savedInstanceState) { | 
| @@ -122,24 +118,9 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh | ||
| 122 | 118 | } | 
| 123 | 119 |  | 
| 124 | 120 |      private void fetchTourInfo(){ | 
| 125 | -        if(!Preferences.getInstance(getActivity()).isTourMode() && !BuildConfig.DEBUG){ | |
| 126 | - return; | |
| 127 | - } | |
| 128 | 121 |          if(fetchTourInfoTask!=null && fetchTourInfoTask.getStatus()== AsyncTask.Status.RUNNING){ | 
| 129 | 122 | return; | 
| 130 | 123 | } | 
| 131 | -        if(BuildConfig.DEBUG){ | |
| 132 | -            Preferences.getInstance(getActivity()).setTourGuidePhone("13811443340"); | |
| 133 | - bannerBeanList = new ArrayList<>(); | |
| 134 | -            for(int k =0;k<6;k++){ | |
| 135 | - BannerBean bean = new BannerBean(); | |
| 136 | - bean.title = "title"+k; | |
| 137 | - bean.url = images[k]; | |
| 138 | - bannerBeanList.add(bean); | |
| 139 | - } | |
| 140 | - initBanner(); | |
| 141 | - return; | |
| 142 | - } | |
| 143 | 124 | HashMap<String,String> params = new HashMap<String,String>(); | 
| 144 | 125 | String userId = Preferences.getInstance(getActivity()).getUserId(); | 
| 145 | 126 |          if(userId.length()==0){ | 
| @@ -156,8 +137,23 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh | ||
| 156 | 137 | JSONObject json = new JSONObject(response); | 
| 157 | 138 |                      int status = json.getInt("status"); | 
| 158 | 139 |                      if(status == 200){ | 
| 159 | -                        JSONObject info = json.getJSONObject("data"); | |
| 160 | - | |
| 140 | +                        JSONObject data = json.getJSONObject("data"); | |
| 141 | +                        String groupId = data.getString("group_id"); | |
| 142 | +                        if(!TextUtils.isEmpty(groupId)){ | |
| 143 | + Preferences.getInstance(context).setTourMode(true); | |
| 144 | +                            JSONObject group = data.getJSONObject("group"); | |
| 145 | +                            String phone = group.getString("phone"); | |
| 146 | + Preferences.getInstance(context).setTourGuidePhone(phone); | |
| 147 | +                            String gatherTimeStr = group.getString("gather_at"); | |
| 148 | + Preferences.getInstance(context).setGatherTime(TimeUtils.getStandardTimeInMiliSec(gatherTimeStr)); | |
| 149 | +                            JSONObject banners = group.getJSONObject("banners"); | |
| 150 | +                            images[0] = banners.getString("attentions"); | |
| 151 | +                            images[1] = banners.getString("schedules"); | |
| 152 | +                        }else{ | |
| 153 | + Preferences.getInstance(context).setTourMode(false); | |
| 154 | +                            Preferences.getInstance(context).setTourGuidePhone(""); | |
| 155 | + Preferences.getInstance(context).setGatherTime(0); | |
| 156 | + } | |
| 161 | 157 | return true; | 
| 162 | 158 | } | 
| 163 | 159 |                  }catch (Exception e){ | 
| @@ -174,6 +170,16 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh | ||
| 174 | 170 | @Override | 
| 175 | 171 |              protected void onPostSuccess(Context context) { | 
| 176 | 172 | super.onPostSuccess(context); | 
| 173 | + initBanner(); | |
| 174 | +                if(Preferences.getInstance(context).isTourMode()){ | |
| 175 | + Intent intent = new Intent(context, MyLocationService.class); | |
| 176 | +                    intent.putExtra("command",MyLocationService.COMMAND_START_LOCATION); | |
| 177 | + context.startService(intent); | |
| 178 | +                }else{ | |
| 179 | + Intent intent = new Intent(context, MyLocationService.class); | |
| 180 | +                    intent.putExtra("command",MyLocationService.COMMAND_DESTROY_LOCATION); | |
| 181 | + context.startService(intent); | |
| 182 | + } | |
| 177 | 183 | } | 
| 178 | 184 | }; | 
| 179 | 185 | fetchTourInfoTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.TOUR_INFO_URL); | 
| @@ -181,7 +187,12 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh | ||
| 181 | 187 | } | 
| 182 | 188 |  | 
| 183 | 189 |      private void initBanner(){ | 
| 190 | +        if(TextUtils.isEmpty(images[0]) && TextUtils.isEmpty(images[1])){ | |
| 191 | + banner.setVisibility(View.GONE); | |
| 192 | + return; | |
| 193 | + } | |
| 184 | 194 | banner.setVisibility(View.VISIBLE); | 
| 195 | + | |
| 185 | 196 |          banner.setPages(new CBViewHolderCreator<NetworkImageHolderView>() { | 
| 186 | 197 | @Override | 
| 187 | 198 |              public NetworkImageHolderView createHolder() { | 
| @@ -219,7 +230,6 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh | ||
| 219 | 230 |              protected void onPreExecute() { | 
| 220 | 231 | super.onPreExecute(); | 
| 221 | 232 | scrollListener.setLoading(true); | 
| 222 | -// swipeRefreshLayout.setRefreshing(true); | |
| 223 | 233 | } | 
| 224 | 234 |  | 
| 225 | 235 | @Override | 
| @@ -293,14 +303,13 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh | ||
| 293 | 303 |  | 
| 294 | 304 | @Override | 
| 295 | 305 |      public void onItemClick(int position) { | 
| 296 | - new FullScreenImgPopup(getActivity(),bannerBeanList.get(position).url).showPopupWindow(); | |
| 306 | + new FullScreenImgPopup(getActivity(),images[position]).showPopupWindow(); | |
| 297 | 307 | } | 
| 298 | 308 |  | 
| 299 | 309 |      public class NetworkImageHolderView implements Holder<String> { | 
| 300 | 310 | private ImageView imageView; | 
| 301 | 311 | @Override | 
| 302 | 312 |          public View createView(Context context) { | 
| 303 | - //你可以通过layout文件来创建,也可以像我一样用代码创建,不一定是Image,任何控件都可以进行翻页 | |
| 304 | 313 | imageView = new ImageView(context); | 
| 305 | 314 | imageView.setScaleType(ImageView.ScaleType.FIT_XY); | 
| 306 | 315 | return imageView; | 
| @@ -71,13 +71,7 @@ public class MyLocationService extends Service { | ||
| 71 | 71 | destroyLocation(); | 
| 72 | 72 | } | 
| 73 | 73 |  | 
| 74 | - /** | |
| 75 | - * 初始化定位 | |
| 76 | - * | |
| 77 | - * @since 2.8.0 | |
| 78 | - * @author hongming.wang | |
| 79 | - * | |
| 80 | - */ | |
| 74 | + | |
| 81 | 75 |      private void initLocation(){ | 
| 82 | 76 |          if(locationClient!=null){ | 
| 83 | 77 | return; | 
| @@ -91,12 +85,7 @@ public class MyLocationService extends Service { | ||
| 91 | 85 | status = 0; | 
| 92 | 86 | } | 
| 93 | 87 |  | 
| 94 | - /** | |
| 95 | - * 默认的定位参数 | |
| 96 | - * @since 2.8.0 | |
| 97 | - * @author hongming.wang | |
| 98 | - * | |
| 99 | - */ | |
| 88 | + | |
| 100 | 89 |      private AMapLocationClientOption getDefaultOption(){ | 
| 101 | 90 | AMapLocationClientOption mOption = new AMapLocationClientOption(); | 
| 102 | 91 | mOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//可选,设置定位模式,可选的模式有高精度、仅设备、仅网络。默认为高精度模式 | 
| @@ -112,9 +101,6 @@ public class MyLocationService extends Service { | ||
| 112 | 101 | return mOption; | 
| 113 | 102 | } | 
| 114 | 103 |  | 
| 115 | - /** | |
| 116 | - * 定位监听 | |
| 117 | - */ | |
| 118 | 104 |      AMapLocationListener locationListener = new AMapLocationListener() { | 
| 119 | 105 | @Override | 
| 120 | 106 |          public void onLocationChanged(AMapLocation loc) { | 
| @@ -125,13 +111,6 @@ public class MyLocationService extends Service { | ||
| 125 | 111 | }; | 
| 126 | 112 |  | 
| 127 | 113 |  | 
| 128 | - /** | |
| 129 | - * 开始定位 | |
| 130 | - * | |
| 131 | - * @since 2.8.0 | |
| 132 | - * @author hongming.wang | |
| 133 | - * | |
| 134 | - */ | |
| 135 | 114 |      private void startLocation(){ | 
| 136 | 115 |          if(status==1){ | 
| 137 | 116 | return; | 
| @@ -144,13 +123,6 @@ public class MyLocationService extends Service { | ||
| 144 | 123 | status = 1; | 
| 145 | 124 | } | 
| 146 | 125 |  | 
| 147 | - /** | |
| 148 | - * 停止定位 | |
| 149 | - * | |
| 150 | - * @since 2.8.0 | |
| 151 | - * @author hongming.wang | |
| 152 | - * | |
| 153 | - */ | |
| 154 | 126 |      private void stopLocation(){ | 
| 155 | 127 |          if(status == 2){ | 
| 156 | 128 | return; | 
| @@ -160,13 +132,6 @@ public class MyLocationService extends Service { | ||
| 160 | 132 | status = 2; | 
| 161 | 133 | } | 
| 162 | 134 |  | 
| 163 | - /** | |
| 164 | - * 销毁定位 | |
| 165 | - * | |
| 166 | - * @since 2.8.0 | |
| 167 | - * @author hongming.wang | |
| 168 | - * | |
| 169 | - */ | |
| 170 | 135 |      private void destroyLocation(){ | 
| 171 | 136 |          if (null != locationClient) { | 
| 172 | 137 | locationClient.onDestroy(); | 
| @@ -184,7 +149,7 @@ private void reportLocationWhenTourMode(double lat, double lon){ | ||
| 184 | 149 | repeatTime = 0; | 
| 185 | 150 | lastLat = lat; | 
| 186 | 151 | lastLon = lon; | 
| 187 | -    if(Preferences.getInstance(this).isTourMode()|| BuildConfig.DEBUG){ | |
| 152 | +    if(Preferences.getInstance(this).isTourMode()){ | |
| 188 | 153 | HashMap<String,String> params = new HashMap<String,String>(); | 
| 189 | 154 | String userId = Preferences.getInstance(this).getUserId(); | 
| 190 | 155 |          if(userId.length()==0){ | 
| @@ -194,7 +159,7 @@ private void reportLocationWhenTourMode(double lat, double lon){ | ||
| 194 | 159 |          params.put("lon",String.valueOf(lon)); | 
| 195 | 160 |          params.put("lat",String.valueOf(lat)); | 
| 196 | 161 | new HttpPostTask(this,params).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.GEO_LOCATION_URL); | 
| 197 | -        LogHelper.d("czy","reportLocationWhenTourMode lat = "+lat+"lon="+lon); | |
| 162 | +        LogHelper.dfile("czy","上报经纬度位置 lat = "+lat+"lon="+lon); | |
| 198 | 163 | } | 
| 199 | 164 | } | 
| 200 | 165 |  | 
| @@ -84,5 +84,5 @@ public class UrlContainer { | ||
| 84 | 84 |  | 
| 85 | 85 | public static final String GEO_LOCATION_URL = HOST_URL+"geo/submit"; | 
| 86 | 86 | //TODO | 
| 87 | - public static final String TOUR_INFO_URL = HOST_URL +"tg/info"; | |
| 87 | + public static final String TOUR_INFO_URL = HOST_URL +"pai2/tginfo"; | |
| 88 | 88 | } | 
| @@ -137,7 +137,7 @@ class FileLog { | ||
| 137 | 137 |  | 
| 138 | 138 |      public FileLog() throws RuntimeException, IOException { | 
| 139 | 139 | File sdcard = new File(SD_CARD); | 
| 140 | -        String fileName = "上传测试"+new SimpleDateFormat("MM-dd-HH-mm").format(new Date()) + ".log"; | |
| 140 | +        String fileName = "paiai-"+new SimpleDateFormat("MM-dd-HH-mm").format(new Date()) + ".log"; | |
| 141 | 141 | File logFile = new File(LOG_PATH+fileName); | 
| 142 | 142 |  | 
| 143 | 143 |          if (!sdcard.exists()) { | 
| @@ -1,6 +1,7 @@ | ||
| 1 | 1 | package com.android.common.utils; | 
| 2 | 2 |  | 
| 3 | 3 | import java.text.DateFormat; | 
| 4 | +import java.text.ParseException; | |
| 4 | 5 | import java.text.SimpleDateFormat; | 
| 5 | 6 | import java.util.Date; | 
| 6 | 7 | import java.util.TimeZone; | 
| @@ -53,6 +54,17 @@ public class TimeUtils { | ||
| 53 | 54 | return utc2Local(utcTime, "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd HH:mm"); | 
| 54 | 55 | } | 
| 55 | 56 |  | 
| 57 | +    public static long getStandardTimeInMiliSec(String utcTime){ | |
| 58 | + long time = 0; | |
| 59 | + String standardTimeStr = getStandardTime(utcTime); | |
| 60 | +        try { | |
| 61 | +            Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(standardTimeStr); | |
| 62 | + time = date.getTime(); | |
| 63 | +        } catch (ParseException e) { | |
| 64 | + e.printStackTrace(); | |
| 65 | + } | |
| 66 | + return time; | |
| 67 | + } | |
| 56 | 68 |  | 
| 57 | 69 |      public static String getFormattedTime(String utcTime) { | 
| 58 | 70 | String formattedTime = utc2Local(utcTime, "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd HH:mm"); |