2017-07-21 5 views
0

バックグラウンドサービスでGPSから頻繁に位置を取得する問題に直面していますが、サービスが継続的に稼働していると確信していて、起動維持モード。身体の助けをお願いします。自動GPSがロケートの取得を停止しました

private void initLocationManager() { 
    Log.e(TAG, "initializeLocationManager"); 
    if (mLocationManager == null) { 
     mLocationManager = (LocationManager) 
getApplicationContext().getSystemService(Context.LOCATION_SERVICE); 
    } 
    if (mLocationListeners == null) { 
     mLocationListeners = new MyLocationListener(); 
     try { 
      mLocationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        Constant.LOCATION_INTERVAL, 
        Constant.LOCATION_DISTANCE, mLocationListeners); 
     } catch (SecurityException ex) { 
      mLocationManager = null; 
      mLocationListeners = null; 
      WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, 
     AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + 
     "20" + "\n"); 
      Log.i(TAG, "fail to request location update, ignore", ex); 
     } catch (IllegalArgumentException ex) { 
      mLocationManager = null; 
      mLocationListeners = null; 
      WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, 
      AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + 
     "21" + "\n"); 
      Log.d(TAG, "gps provider does not exist " + ex.getMessage()); 
     } catch (RuntimeException ex) { 
      mLocationManager = null; 
      mLocationListeners = null; 
      WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, 
     AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "22" 
     + "\n"); 
      Log.d(TAG, "System Exception! Thread has no looper." + 
     ex.getMessage()); 
     } catch (Exception ex) { 
      mLocationManager = null; 
      mLocationListeners = null; 
      WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, 
    AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "23" + 
    "\n"); 
     } catch (Throwable ex) { 
      mLocationManager = null; 
      mLocationListeners = null; 
      WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, 
     AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "24" 
     + "\n"); 
     } 
    } 

} 

private class MyLocationListener implements LocationListener { 
    @Override 
    public void onLocationChanged(Location location) { 
     if (location == null) { 
      //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " NULL" + "\n"); 
      return; 
     } 
     //lastUpdatedTime = Constant.SIMPLE_DATE_FORMAT.format(location.getTime()); 
     if (location.getAccuracy() < 50) { 
      latitude = location.getLatitude(); 
      longitude = location.getLongitude(); 
      // WritingFile.getInstance().writeFile(Constant.COORDINATE, true, lastUpdatedTime + " "+location.getLatitude() + ","+ location.getLongitude() + "AC"+ "\n"); 
     } else { 
      if (latitude == 0.0 || longitude == 0.0) { 
       latitude = location.getLatitude(); 
       longitude = location.getLongitude(); 
      } 
      //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, lastUpdatedTime + " "+location.getLatitude() + ","+ location.getLongitude() + "NON AC"+ "\n"); 
     } 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     switch (status) { 
      case LocationProvider.AVAILABLE: 
       //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " AVAILABLE" + "\n"); 
       //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, "Last Update Time" + lastUpdatedTime + "\n"); 
       break; 
      case LocationProvider.OUT_OF_SERVICE: 
       //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " OUT_OF_SERVICE" + "\n"); 
       // WritingFile.getInstance().writeFile(Constant.COORDINATE, true, "Last Update Time" + lastUpdatedTime + "\n"); 
       removeLocationManager(); 
       mLocationManager = null; 
       mLocationListeners = null; 
       break; 
      case LocationProvider.TEMPORARILY_UNAVAILABLE: 
       //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " TEMPORARILY_UNAVAILABLE" + "\n"); 
       //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, "Last Update Time" + lastUpdatedTime + "\n"); 
       removeLocationManager(); 
       mLocationManager = null; 
       mLocationListeners = null; 
       break; 
     } 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " PROVIDER ENABLEE" + "\n"); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " PROVIDER DISABLE" + "\n"); 
    } 
}   
+0

あなたのコードはどこにありますか? – SripadRaj

+0

ここにコードスニペットを追加してください。それがなければ、問題を理解することは非常に困難です。ありがとう。 – Ishtiaque05

答えて

-1
private void initLocationManager() { 
     Log.e(TAG, "initializeLocationManager"); 
     if (mLocationManager == null) { 
      mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE); 
     } 
     if (mLocationListeners == null) { 
      mLocationListeners = new MyLocationListener(); 
      try { 
       mLocationManager.requestLocationUpdates(
         LocationManager.GPS_PROVIDER, 
         Constant.LOCATION_INTERVAL, 
         Constant.LOCATION_DISTANCE, mLocationListeners); 
      } catch (SecurityException ex) { 
       mLocationManager = null; 
       mLocationListeners = null; 
       WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "20" + "\n"); 
       Log.i(TAG, "fail to request location update, ignore", ex); 
      } catch (IllegalArgumentException ex) { 
       mLocationManager = null; 
       mLocationListeners = null; 
       WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "21" + "\n"); 
       Log.d(TAG, "gps provider does not exist " + ex.getMessage()); 
      } catch (RuntimeException ex) { 
       mLocationManager = null; 
       mLocationListeners = null; 
       WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "22" + "\n"); 
       Log.d(TAG, "System Exception! Thread has no looper." + ex.getMessage()); 
      } catch (Exception ex) { 
       mLocationManager = null; 
       mLocationListeners = null; 
       WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "23" + "\n"); 
      } catch (Throwable ex) { 
       mLocationManager = null; 
       mLocationListeners = null; 
       WritingFile.getInstance().writeFile(Constant.ERROR_LOG, true, AppManager.getInstance().getCurrentDateTime() + ex.getMessage() + "24" + "\n"); 
      } 
     } 

    } 

    private class MyLocationListener implements LocationListener { 
     @Override 
     public void onLocationChanged(Location location) { 
      if (location == null) { 
       //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " NULL" + "\n"); 
       return; 
      } 
      //lastUpdatedTime = Constant.SIMPLE_DATE_FORMAT.format(location.getTime()); 
      if (location.getAccuracy() < 50) { 
       latitude = location.getLatitude(); 
       longitude = location.getLongitude(); 
       // WritingFile.getInstance().writeFile(Constant.COORDINATE, true, lastUpdatedTime + " "+location.getLatitude() + ","+ location.getLongitude() + "AC"+ "\n"); 
      } else { 
       if (latitude == 0.0 || longitude == 0.0) { 
        latitude = location.getLatitude(); 
        longitude = location.getLongitude(); 
       } 
       //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, lastUpdatedTime + " "+location.getLatitude() + ","+ location.getLongitude() + "NON AC"+ "\n"); 
      } 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
      switch (status) { 
       case LocationProvider.AVAILABLE: 
        //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " AVAILABLE" + "\n"); 
        //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, "Last Update Time" + lastUpdatedTime + "\n"); 
        break; 
       case LocationProvider.OUT_OF_SERVICE: 
        //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " OUT_OF_SERVICE" + "\n"); 
        // WritingFile.getInstance().writeFile(Constant.COORDINATE, true, "Last Update Time" + lastUpdatedTime + "\n"); 
        removeLocationManager(); 
        mLocationManager = null; 
        mLocationListeners = null; 
        break; 
       case LocationProvider.TEMPORARILY_UNAVAILABLE: 
        //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " TEMPORARILY_UNAVAILABLE" + "\n"); 
        //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, "Last Update Time" + lastUpdatedTime + "\n"); 
        removeLocationManager(); 
        mLocationManager = null; 
        mLocationListeners = null; 
        break; 
      } 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
      //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " PROVIDER ENABLEE" + "\n"); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      //WritingFile.getInstance().writeFile(Constant.COORDINATE, true, AppManager.getInstance().getCurrentDateTime() + " PROVIDER DISABLE" + "\n"); 
     } 
    } 
+0

これは答えではありません。質問を更新して自分のコードを示すことができます。 – Blackkara

+0

実際に私はstackoverflowで新しくなっているので、何かが欠けているのですが、これは私のコードブロックです –

関連する問題