@@ -1,5 +1,6 @@  | 
            ||
| 1 | 1 | 
                package ai.pai.client.activity;  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 
                +import android.content.Intent;  | 
            |
| 3 | 4 | 
                import android.os.Bundle;  | 
            
| 4 | 5 | 
                import android.support.v4.app.FragmentActivity;  | 
            
| 5 | 6 | 
                import android.support.v7.app.AppCompatActivity;  | 
            
                @@ -10,6 +11,7 @@ import com.android.common.utils.NetworkUtil;  | 
            ||
| 10 | 11 | 
                import com.umeng.analytics.MobclickAgent;  | 
            
| 11 | 12 | 
                 | 
            
| 12 | 13 | 
                import ai.pai.client.R;  | 
            
| 14 | 
                +import ai.pai.client.services.MyLocationService;  | 
            |
| 13 | 15 | 
                import ai.pai.client.swipelayout.SwipeBackActivityBase;  | 
            
| 14 | 16 | 
                import ai.pai.client.swipelayout.SwipeBackActivityHelper;  | 
            
| 15 | 17 | 
                import ai.pai.client.swipelayout.SwipeBackLayout;  | 
            
                @@ -45,6 +47,9 @@ public class BaseActivity extends FragmentActivity implements SwipeBackActivityB  | 
            ||
| 45 | 47 | 
                     protected void onResume() {
               | 
            
| 46 | 48 | 
                super.onResume();  | 
            
| 47 | 49 | 
                MobclickAgent.onResume(this);  | 
            
| 50 | 
                + Intent intent = new Intent(this, MyLocationService.class);  | 
            |
| 51 | 
                +        intent.putExtra("command",MyLocationService.COMMAND_START_LOCATION);
               | 
            |
| 52 | 
                + startService(intent);  | 
            |
| 48 | 53 | 
                }  | 
            
| 49 | 54 | 
                 | 
            
| 50 | 55 | 
                @Override  | 
            
                @@ -117,7 +117,7 @@ public class MainActivity extends AppCompatActivity  | 
            ||
| 117 | 117 | 
                     protected void onResume() {
               | 
            
| 118 | 118 | 
                super.onResume();  | 
            
| 119 | 119 | 
                callGuideBtn.setVisibility(TextUtils.isEmpty(Preferences.getInstance(this).getTourGuidePhone()) ? View.INVISIBLE : View.VISIBLE);  | 
            
| 120 | 
                - gatherBtn.setVisibility(Preferences.getInstance(this).getGatherTime()+30*60*1000<System.currentTimeMillis() ? View.INVISIBLE : View.VISIBLE);  | 
            |
| 120 | 
                + gatherBtn.setVisibility(Preferences.getInstance(this).getGatherTime()<System.currentTimeMillis() ? View.INVISIBLE : View.VISIBLE);  | 
            |
| 121 | 121 | 
                }  | 
            
| 122 | 122 | 
                 | 
            
| 123 | 123 | 
                 | 
            
                @@ -126,7 +126,8 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh  | 
            ||
| 126 | 126 | 
                         if(fetchTourInfoTask!=null && fetchTourInfoTask.getStatus()== AsyncTask.Status.RUNNING){
               | 
            
| 127 | 127 | 
                return;  | 
            
| 128 | 128 | 
                }  | 
            
| 129 | 
                - HashMap<String,String> params = new HashMap<String,String>();  | 
            |
| 129 | 
                + LogHelper.d(TAG,"导游定位 每次进入首页均去请求旅行及集合信息");  | 
            |
| 130 | 
                + HashMap<String,String> params = new HashMap<>();  | 
            |
| 130 | 131 | 
                String userId = Preferences.getInstance(getActivity()).getUserId();  | 
            
| 131 | 132 | 
                         if(userId.length()==0){
               | 
            
| 132 | 133 | 
                return;  | 
            
                @@ -153,7 +154,7 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh  | 
            ||
| 153 | 154 | 
                                             String phone = group.getString("phone");
               | 
            
| 154 | 155 | 
                Preferences.getInstance(context).setTourGuidePhone(phone);  | 
            
| 155 | 156 | 
                                              String gatherTimeStr = group.getString("gather_at");
               | 
            
| 156 | 
                - Preferences.getInstance(context).setGatherTime(TimeUtils.getStandardTimeInMiliSec(gatherTimeStr));  | 
            |
| 157 | 
                + Preferences.getInstance(context).setGatherTime(TimeUtils.getStandardTimeInMiliSec(gatherTimeStr)+30*60*1000);  | 
            |
| 157 | 158 | 
                                             if(group.has("gather_location")){
               | 
            
| 158 | 159 | 
                                                 String location = group.getString("gather_location");
               | 
            
| 159 | 160 | 
                Preferences.getInstance(context).setTourGatherLocation(location);  | 
            
                @@ -192,11 +193,13 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh  | 
            ||
| 192 | 193 | 
                super.onPostSuccess(context);  | 
            
| 193 | 194 | 
                initBanner();  | 
            
| 194 | 195 | 
                                 if(Preferences.getInstance(context).isTourMode()){
               | 
            
| 196 | 
                + LogHelper.d(TAG,"导游定位 当前是旅行模式");  | 
            |
| 195 | 197 | 
                Intent intent = new Intent(context, MyLocationService.class);  | 
            
| 196 | 198 | 
                                     intent.putExtra("command",MyLocationService.COMMAND_START_LOCATION);
               | 
            
| 197 | 199 | 
                context.startService(intent);  | 
            
| 198 | 200 | 
                checkLocationPermission();  | 
            
| 199 | 201 | 
                                 }else{
               | 
            
| 202 | 
                + LogHelper.d(TAG,"导游定位 当前不是旅行模式");  | 
            |
| 200 | 203 | 
                Intent intent = new Intent(context, MyLocationService.class);  | 
            
| 201 | 204 | 
                                     intent.putExtra("command",MyLocationService.COMMAND_DESTROY_LOCATION);
               | 
            
| 202 | 205 | 
                context.startService(intent);  | 
            
                @@ -283,7 +286,7 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh  | 
            ||
| 283 | 286 | 
                                         JSONObject info = json.getJSONObject("data");
               | 
            
| 284 | 287 | 
                                         JSONArray photoArray = info.getJSONArray("photos");
               | 
            
| 285 | 288 | 
                                         if(photoArray!=null && photoArray.length()>0){
               | 
            
| 286 | 
                - photoItems = new ArrayList<GroupPhotoItem>();  | 
            |
| 289 | 
                + photoItems = new ArrayList<>();  | 
            |
| 287 | 290 | 
                int len = photoArray.length();  | 
            
| 288 | 291 | 
                                             for(int k = 0; k<len;k++){
               | 
            
| 289 | 292 | 
                JSONObject photoObj = photoArray.getJSONObject(k);  | 
            
                @@ -39,20 +39,23 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 39 | 39 | 
                private double lastLon;  | 
            
| 40 | 40 | 
                private double repeatTime;  | 
            
| 41 | 41 | 
                 | 
            
| 42 | 
                - private static final int FETCH_GATHER_INFO_PERIOD = 20*60*1000;  | 
            |
| 43 | 
                - private static final int LOCATION_MAX_PERIOD = 10*60*1000;  | 
            |
| 44 | 
                - private static final int LOCATION_MIN_PERIOD = 60*1000;  | 
            |
| 45 | 
                - private static final int LOCATION_PERIOD_CHANGE_DEADLINE = 15*60*1000;  | 
            |
| 42 | 
                + private static final int FETCH_GATHER_INFO_PERIOD = 5*60*1000;  | 
            |
| 43 | 
                + private static final int LOCATION_MAX_PERIOD = 60*1000;  | 
            |
| 44 | 
                + private static final int LOCATION_MIN_PERIOD = 30*1000;  | 
            |
| 45 | 
                + private static final int LOCATION_PERIOD_CHANGE_DEADLINE = 90*60*1000;  | 
            |
| 46 | 46 | 
                private static final int MSG_FETCH_TOUR_INFO = 4567;  | 
            
| 47 | 47 | 
                private static final int MSG_START_LOCATION = 4568;  | 
            
| 48 | 48 | 
                 | 
            
| 49 | 49 | 
                private Handler mHandler;  | 
            
| 50 | 50 | 
                 | 
            
| 51 | 51 | 
                private HttpPostTask fetchTourInfoTask;  | 
            
| 52 | 
                +  | 
            |
| 53 | 
                + private static final String TAG = "导游定位";  | 
            |
| 52 | 54 | 
                 | 
            
| 53 | 55 | 
                @Override  | 
            
| 54 | 56 | 
                     public void onCreate() {
               | 
            
| 55 | 57 | 
                super.onCreate();  | 
            
| 58 | 
                + LogHelper.d(TAG,"服务启动");  | 
            |
| 56 | 59 | 
                mHandler = new Handler(this);  | 
            
| 57 | 60 | 
                }  | 
            
| 58 | 61 | 
                 | 
            
                @@ -63,7 +66,7 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 63 | 66 | 
                 | 
            
| 64 | 67 | 
                @Override  | 
            
| 65 | 68 | 
                     public int onStartCommand(Intent intent, int flags, int startId) {
               | 
            
| 66 | 
                -        if(intent==null){
               | 
            |
| 69 | 
                +        if(intent == null){
               | 
            |
| 67 | 70 | 
                return super.onStartCommand(intent,flags,startId);  | 
            
| 68 | 71 | 
                }  | 
            
| 69 | 72 | 
                Bundle bundle= intent.getExtras();  | 
            
                @@ -72,7 +75,7 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 72 | 75 | 
                }  | 
            
| 73 | 76 | 
                         int command = bundle.getInt("command",0);
               | 
            
| 74 | 77 | 
                initLocation();  | 
            
| 75 | 
                - initGatherInfo();  | 
            |
| 78 | 
                + mHandler.sendEmptyMessageDelayed(MSG_FETCH_TOUR_INFO,5000);  | 
            |
| 76 | 79 | 
                         switch (command) {
               | 
            
| 77 | 80 | 
                case COMMAND_START_LOCATION:  | 
            
| 78 | 81 | 
                startLocation();  | 
            
                @@ -100,29 +103,24 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 100 | 103 | 
                locationClient.setLocationListener(locationListener);  | 
            
| 101 | 104 | 
                }  | 
            
| 102 | 105 | 
                 | 
            
| 103 | 
                -    private void initGatherInfo(){
               | 
            |
| 104 | 
                -        if(!Preferences.getInstance(this).isTourMode()&&Preferences.getInstance(this).getTourEndTime()<System.currentTimeMillis()){
               | 
            |
| 105 | 
                - return;  | 
            |
| 106 | 
                - }  | 
            |
| 107 | 
                - long gatherTime = Preferences.getInstance(this).getGatherTime();  | 
            |
| 108 | 
                -        if(gatherTime<System.currentTimeMillis()){
               | 
            |
| 109 | 
                - mHandler.sendEmptyMessageDelayed(MSG_FETCH_TOUR_INFO,60000);  | 
            |
| 110 | 
                - }  | 
            |
| 111 | 
                - }  | 
            |
| 112 | 106 | 
                 | 
            
| 113 | 107 | 
                     private void fetchTourInfo(){
               | 
            
| 108 | 
                + mHandler.removeMessages(MSG_FETCH_TOUR_INFO);  | 
            |
| 114 | 109 | 
                mHandler.sendEmptyMessageDelayed(MSG_FETCH_TOUR_INFO,FETCH_GATHER_INFO_PERIOD);  | 
            
| 115 | 
                -        if(!Preferences.getInstance(this).isTourMode()&&Preferences.getInstance(this).getTourEndTime()<System.currentTimeMillis()){
               | 
            |
| 110 | 
                +        if(!Preferences.getInstance(this).isTourMode()){
               | 
            |
| 111 | 
                + LogHelper.d(TAG,"已经知道不是旅行模式,跳过此次集合信息请求");  | 
            |
| 116 | 112 | 
                return;  | 
            
| 117 | 113 | 
                }  | 
            
| 118 | 114 | 
                long gatherTime = Preferences.getInstance(this).getGatherTime();  | 
            
| 119 | 
                -        if(gatherTime>System.currentTimeMillis()){
               | 
            |
| 115 | 
                +        if(Preferences.getInstance(this).isTourMode() && gatherTime>System.currentTimeMillis()){
               | 
            |
| 116 | 
                + LogHelper.d(TAG,"已经知道是旅行模式,且集合时间已得到,跳过此次集合信息请求");  | 
            |
| 120 | 117 | 
                return;  | 
            
| 121 | 118 | 
                }  | 
            
| 122 | 119 | 
                         if(fetchTourInfoTask!=null && fetchTourInfoTask.getStatus()== AsyncTask.Status.RUNNING){
               | 
            
| 123 | 120 | 
                return;  | 
            
| 124 | 121 | 
                }  | 
            
| 125 | 
                - HashMap<String,String> params = new HashMap<String,String>();  | 
            |
| 122 | 
                + LogHelper.d(TAG,"发起获取集合信息的网络请求");  | 
            |
| 123 | 
                + HashMap<String,String> params = new HashMap<>();  | 
            |
| 126 | 124 | 
                String userId = Preferences.getInstance(this).getUserId();  | 
            
| 127 | 125 | 
                         if(userId.length()==0){
               | 
            
| 128 | 126 | 
                return;  | 
            
                @@ -131,7 +129,6 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 131 | 129 | 
                 | 
            
| 132 | 130 | 
                         fetchTourInfoTask = new HttpPostTask(this,params) {
               | 
            
| 133 | 131 | 
                 | 
            
| 134 | 
                -  | 
            |
| 135 | 132 | 
                @Override  | 
            
| 136 | 133 | 
                             protected boolean parseResponse(Context context, String response) {
               | 
            
| 137 | 134 | 
                                 try{
               | 
            
                @@ -146,7 +143,7 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 146 | 143 | 
                                             String phone = group.getString("phone");
               | 
            
| 147 | 144 | 
                Preferences.getInstance(context).setTourGuidePhone(phone);  | 
            
| 148 | 145 | 
                                             String gatherTimeStr = group.getString("gather_at");
               | 
            
| 149 | 
                - Preferences.getInstance(context).setGatherTime(TimeUtils.getStandardTimeInMiliSec(gatherTimeStr));  | 
            |
| 146 | 
                + Preferences.getInstance(context).setGatherTime(TimeUtils.getStandardTimeInMiliSec(gatherTimeStr)+30*60*1000);  | 
            |
| 150 | 147 | 
                                             String endTimeStr = group.getString("ended_at");
               | 
            
| 151 | 148 | 
                Preferences.getInstance(context).setTourEndTime(TimeUtils.getStandardTimeInMiliSec(endTimeStr));  | 
            
| 152 | 149 | 
                                             if(group.has("gather_location")){
               | 
            
                @@ -202,7 +199,7 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 202 | 199 | 
                }  | 
            
| 203 | 200 | 
                double lat = loc.getLatitude();  | 
            
| 204 | 201 | 
                double lon = loc.getLongitude();  | 
            
| 205 | 
                -            LogHelper.dfile("czy","经纬度 lat = "+lat+"lon="+lon+" 位置 ="+loc.getAddress());
               | 
            |
| 202 | 
                + LogHelper.d(TAG,"上报经纬度 lat = "+lat+"lon="+lon+" 位置 ="+loc.getAddress());  | 
            |
| 206 | 203 | 
                reportLocationWhenTourMode(lat,lon);  | 
            
| 207 | 204 | 
                }  | 
            
| 208 | 205 | 
                };  | 
            
                @@ -211,9 +208,11 @@ public class MyLocationService extends Service implements Handler.Callback{
               | 
            ||
| 211 | 208 | 
                     private void startLocation(){
               | 
            
| 212 | 209 | 
                initLocation();  | 
            
| 213 | 210 | 
                         if(Preferences.getInstance(this).isTourMode()){
               | 
            
| 211 | 
                + LogHelper.d(TAG,"当前是旅行模式,开始定位");  | 
            |
| 214 | 212 | 
                locationClient.setLocationOption(locationOption);  | 
            
| 215 | 213 | 
                locationClient.startLocation();  | 
            
| 216 | 214 | 
                             if(Preferences.getInstance(this).getGatherTime()> System.currentTimeMillis()){
               | 
            
| 215 | 
                + LogHelper.d(TAG,"当前是旅行模式,且存在集合时间,预约下一次定位");  | 
            |
| 217 | 216 | 
                mHandler.sendEmptyMessageDelayed(MSG_START_LOCATION,Preferences.getInstance(this)  | 
            
| 218 | 217 | 
                .getGatherTime()-System.currentTimeMillis()>LOCATION_PERIOD_CHANGE_DEADLINE ? LOCATION_MAX_PERIOD:LOCATION_MIN_PERIOD);  | 
            
| 219 | 218 | 
                }  | 
            
                @@ -235,7 +234,7 @@ private void reportLocationWhenTourMode(double lat, double lon){
               | 
            ||
| 235 | 234 | 
                     if(locationClient!=null){
               | 
            
| 236 | 235 | 
                locationClient.stopLocation();  | 
            
| 237 | 236 | 
                }  | 
            
| 238 | 
                -    if(lat == lastLat && lon ==lastLon && repeatTime<5){
               | 
            |
| 237 | 
                +    if(lat == lastLat && lon ==lastLon && repeatTime<2){
               | 
            |
| 239 | 238 | 
                repeatTime++;  | 
            
| 240 | 239 | 
                return;  | 
            
| 241 | 240 | 
                }  | 
            
                @@ -4,7 +4,7 @@ buildscript {
               | 
            ||
| 4 | 4 | 
                jcenter()  | 
            
| 5 | 5 | 
                }  | 
            
| 6 | 6 | 
                     dependencies {
               | 
            
| 7 | 
                - classpath 'com.android.tools.build:gradle:2.3.0'  | 
            |
| 7 | 
                + classpath 'com.android.tools.build:gradle:2.3.1'  | 
            |
| 8 | 8 | 
                 | 
            
| 9 | 9 | 
                // NOTE: Do not place your application dependencies here; they belong  | 
            
| 10 | 10 | 
                // in the individual module build.gradle files  |