Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sti_car.com.sticar.Service;
- import android.Manifest;
- import android.app.AlertDialog;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.app.Service;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.content.pm.PackageManager;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.location.LocationProvider;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.IBinder;
- import android.preference.PreferenceManager;
- import android.provider.Settings;
- import android.support.annotation.Nullable;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.content.LocalBroadcastManager;
- import android.support.v4.view.accessibility.AccessibilityManagerCompat;
- import android.util.Log;
- import android.view.View;
- import android.widget.Toast;
- import com.android.volley.Request;
- import com.android.volley.RequestQueue;
- import com.android.volley.VolleyError;
- import com.android.volley.toolbox.StringRequest;
- import com.android.volley.toolbox.Volley;
- import com.google.android.gms.nearby.messages.Distance;
- import com.google.gson.Gson;
- import com.here.android.mpa.common.GeoCoordinate;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.List;
- import java.util.UUID;
- import io.realm.Realm;
- import io.realm.RealmList;
- import io.realm.RealmResults;
- import rx.Observer;
- import rx.android.schedulers.AndroidSchedulers;
- import rx.schedulers.Schedulers;
- import rx.subscriptions.CompositeSubscription;
- import sti_car.com.sticar.Model.ContractUUIDBody;
- import sti_car.com.sticar.Model.DistanceRouteModel;
- import sti_car.com.sticar.Model.LatLongModel;
- import sti_car.com.sticar.Model.ReportModelV2;
- import sti_car.com.sticar.Model.ResponsTrackFeed;
- import sti_car.com.sticar.Model.Response;
- import sti_car.com.sticar.Model.SendDataTracker;
- import sti_car.com.sticar.Model.SendTrackModel;
- import sti_car.com.sticar.Model.Start;
- import sti_car.com.sticar.Model.Stop;
- import sti_car.com.sticar.Model.TrackModel;
- import sti_car.com.sticar.Model.TripUUIDBody;
- import sti_car.com.sticar.Model.Trips;
- import sti_car.com.sticar.Model.UserAccountModel;
- import sti_car.com.sticar.ModelDatabase.DataTrackModel;
- import sti_car.com.sticar.ModelDatabase.HomeModel;
- import sti_car.com.sticar.ModelDatabase.TrackTodayModel;
- import sti_car.com.sticar.ModelDatabase.UserModel;
- import sti_car.com.sticar.ModelDatabase.WrappingModel;
- import sti_car.com.sticar.R;
- import sti_car.com.sticar.Response.ResponseStart;
- import sti_car.com.sticar.Response.ResponseStop;
- import sti_car.com.sticar.UI.MainActivity;
- import sti_car.com.sticar.Util.AppController;
- import sti_car.com.sticar.Util.Util;
- /**
- * Created by Admin on 25/04/2017.
- */
- public class TrackerService extends Service implements LocationListener {
- private LocationManager mLocService;
- private Location mLastLocation;
- private Boolean isGPSEnabled;
- private Boolean isNetworkEnabled;
- private String isStatusDailyLimit = null;
- Service m_service;
- int delay = 10000; //milliseconds
- boolean mGpsIsStarted = false;
- LocationProvider mLocProvider;
- String creditFactory,creditXbalance;
- //double distance;
- private double latStartArray = 0.0;
- private double lngStartArray= 0.0;
- private double latEndArray = 0.0;
- private double lngEndArray= 0.0;
- Realm realm;
- int priceAds;
- private double latitude = 0.0;
- private double longitude = 0.0;
- private double altitude = 0.0;
- private double speed;
- private double latSTART = 0.0;
- private double lngSTART= 0.0;
- private String tripUUID,kmToday,balanceToday,dailyKmDefault;
- private float mAzimuth = 0;
- private Boolean isRunning = false;
- private Start start = new Start();
- private Stop stop = new Stop();
- boolean ismock = false;
- String contactUUID;
- CompositeSubscription mSubscriptions;
- private static final String LOGSERVICE = "#######";
- private Handler mHandler;
- private Runnable runnable;
- Boolean isConnect = false;
- double DistanceTodayInDouble = 0.0;
- int CreditTodayInInteger = 0;
- double CreditTodayInDouble = 0.0;
- int DistanceToday = 0;
- int lastTotalCredit = 0;
- int totalCreditAcc = 0;
- int totalAll=0;
- //double Total = 0.0;
- int tt_credit;
- double DailyToday;
- double CreditToday;
- double GrandTotalCredit;
- double GrandTotalDistance;
- double TotalDistance;
- double TotalCredit;
- int DailyKilometer;
- int DistanceInMeters;
- double CurentTripDistance;
- double CurentTripCredit;
- String sDistances, sDailyKmMax;
- private NotificationManager mNM;
- RealmResults<DataTrackModel> realmResultsDataTracker;
- RealmResults<HomeModel> realmResultsHome;
- RealmResults<WrappingModel> realmResultsWrapping;
- RealmResults<TrackTodayModel> realmResulTrackToday;
- List<TrackModel> arrayTrack = new ArrayList<>();
- List<TrackModel> arraySingleTrack = new ArrayList<>();
- List<List<TrackModel>> arrayMultiTrack = new ArrayList<List<TrackModel>>();
- ContractUUIDBody contactUUIDBody = new ContractUUIDBody() ;
- TripUUIDBody tripUUIDBody = new TripUUIDBody();
- SendDataTracker sendDataTracker = new SendDataTracker();
- SendTrackModel sendTrackModel = new SendTrackModel();
- ArrayList<SendTrackModel> sendArrayTotal = new ArrayList<SendTrackModel>();
- UserAccountModel userAccountModel;
- int dMeter;
- final Handler handler = new Handler();
- @Override
- public void onCreate() {
- super.onCreate();
- mSubscriptions = new CompositeSubscription();
- mHandler = new Handler();
- //getReportTrack();
- //getDataHome();
- gpsInit();
- // checkGPS();
- mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- showNotification();
- }
- private void gpsInit() {
- try {
- mLocService = (LocationManager) getSystemService(LOCATION_SERVICE);
- // getting GPS status
- isGPSEnabled = mLocService.isProviderEnabled(LocationManager.GPS_PROVIDER);
- // getting network status
- isNetworkEnabled = mLocService.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
- if (!isGPSEnabled && !isNetworkEnabled) {
- // no network provider is enabled
- Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- startActivity(myIntent);
- } else {
- if (isGPSEnabled) {
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- return;
- }
- mLocService.requestLocationUpdates(LocationManager.GPS_PROVIDER,
- Util.getPeriod(),
- Util.getDistancePeriod(), this);
- if (mLocService != null) {
- mLastLocation = mLocService
- .getLastKnownLocation(LocationManager.GPS_PROVIDER);
- if (mLastLocation != null) {
- latitude = mLastLocation.getLatitude();
- longitude = mLastLocation.getLongitude();
- altitude = mLastLocation.getAltitude();
- }
- }
- }
- // if GPS Enabled get lat/long using GPS Services
- if (isNetworkEnabled) {
- if (mLastLocation == null) {
- mLocService.requestLocationUpdates(
- LocationManager.NETWORK_PROVIDER,
- Util.getPeriod(),
- Util.getDistancePeriod(), this);
- if (mLocService != null) {
- mLastLocation = mLocService
- .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
- if (mLastLocation != null) {
- latitude = mLastLocation.getLatitude();
- longitude = mLastLocation.getLongitude();
- altitude = mLastLocation.getAltitude();
- }
- }
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- Log.i(LOGSERVICE, "onStartCommand");
- if (AppController.start != null) {
- start = AppController.start;
- }
- //mToastHandler = new Handler();
- //getReportTrack();
- getDataHome();
- startData();
- doCreateLocalTracker();
- doCalculate();
- return START_NOT_STICKY;
- }
- private void getDataHome() {
- if (AppController.getInstance() != null && AppController.getInstance().getSessionManager() != null && AppController.getInstance().getSessionManager().getUserAccount() !=null)
- userAccountModel = AppController.getInstance().getSessionManager().getUserAccount();
- if (userAccountModel.getData().getStatusCampaign() != null){
- contactUUID = userAccountModel.getData().getStatusCampaign().getContractUUID();
- tripUUID = userAccountModel.getData().getHome().getParams().getContractUUID();
- contactUUIDBody.setContractUUID(contactUUID);
- tripUUIDBody.setTripUUID(tripUUID);
- Toast.makeText(TrackerService.this,contactUUID,Toast.LENGTH_SHORT).show();
- }
- if (userAccountModel.getData().getHome() != null) {
- if (userAccountModel.getData().getHome().getParams() != null) {
- sDailyKmMax = userAccountModel.getData().getHome().getParams().getDailyKM();
- }
- }
- }
- @Override
- public void onDestroy() {
- mNM.cancel(999);
- mHandler.removeCallbacksAndMessages(null);
- stopData();
- gpsStop();
- stopDataLocal();
- stopSelf();
- saveArray();
- super.onDestroy();
- }
- private void saveArray() {
- SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
- SharedPreferences.Editor editor = sharedPrefs.edit();
- Gson gson = new Gson();
- String json = gson.toJson(arrayMultiTrack);
- editor.putString("TripArray", json);
- editor.commit();
- //Toast.makeText(TrackerService.this,"Save Array",Toast.LENGTH_SHORT).show();
- }
- private void stopDataLocal() {
- }
- @Nullable
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public void onLocationChanged(Location location) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
- ismock = location.isFromMockProvider();
- } else {
- ismock = !Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0");
- }
- if (ismock) {
- Log.i(LOGSERVICE, "ismock location");
- } else {
- if (mLastLocation != null) {
- if (location.getTime() - mLastLocation.getTime() == 0) {
- speed = 0;
- } else {
- speed = Math.floor(mLastLocation.distanceTo(location) / ((location.getTime() - mLastLocation.getTime()) / 1000) * 3.6);
- }
- mAzimuth = mLastLocation.bearingTo(location);
- }
- this.mLastLocation = location;
- latitude = mLastLocation.getLatitude();
- longitude = mLastLocation.getLongitude();
- altitude = mLastLocation.getAltitude();
- doCalculate();
- }
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- }
- @Override
- public void onProviderEnabled(String provider) {
- }
- @Override
- public void onProviderDisabled(String provider) {
- }
- public void startData() {
- if (AppController.start != null) {
- start = AppController.start;
- }
- isConnect = true;
- if (!arrayMultiTrack.isEmpty()){
- }else {
- mSubscriptions.add(NetworkUtil.getRetrofitV2().startTrip(contactUUIDBody)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeOn(Schedulers.io())
- .subscribe(new Observer<ResponseStart>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- }
- @Override
- public void onNext(ResponseStart responseStart) {
- Toast.makeText(TrackerService.this,"Trip Start",Toast.LENGTH_SHORT).show();
- tripUUID = responseStart.getData().getTripUUID();
- userAccountModel.getData().getHome().getParams().setContractUUID(tripUUID);
- tripUUIDBody.setTripUUID(tripUUID);
- Log.e("startData","startData");
- }
- }));
- }
- }
- private void getReportTrack() {
- mSubscriptions.add(NetworkUtil.getRetrofitV2().getReportData()
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeOn(Schedulers.io())
- .subscribe(new Observer<Response<ReportModelV2>>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- }
- @Override
- public void onNext(Response<ReportModelV2> response) {
- if (response.getData() != null) {
- Double credit =0.0;
- Double d = new Double(response.getData().getTodayReport().getDistance());
- int inx = d.intValue();
- Log.e("inx",String.valueOf(inx) +" and "+String.valueOf(d));
- DistanceTodayInDouble = (d *1000) ;
- CreditTodayInInteger = Integer.valueOf(response.getData().getTodayReport().getCredit().intValue());
- CreditTodayInDouble = response.getData().getTodayReport().getCredit();
- Log.e("wer",String.valueOf(DistanceTodayInDouble));
- // if (sDailyKM != null){
- if (inx >= Integer.valueOf(3)){
- //tvDailyLimitNotif.setVisibility(View.VISIBLE);
- Toast.makeText(TrackerService.this,"Anda melampaui batas bos trip di limit!",Toast.LENGTH_SHORT).show();
- }
- // }
- } else {
- }
- }
- }));
- }
- public void stopData() {
- isConnect = false;
- if (!arrayMultiTrack.isEmpty()){
- mSubscriptions.add(NetworkUtil.getRetrofitV2().stopTrip(tripUUIDBody)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeOn(Schedulers.io())
- .subscribe(new Observer<ResponseStop>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- }
- @Override
- public void onNext(ResponseStop responseStop) {
- Toast.makeText(TrackerService.this,"Trip Stop",Toast.LENGTH_SHORT).show();
- }
- }));
- }else {
- mSubscriptions.add(NetworkUtil.getRetrofitV2().stopTrip(tripUUIDBody)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeOn(Schedulers.io())
- .subscribe(new Observer<ResponseStop>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- }
- @Override
- public void onNext(ResponseStop responseStop) {
- Toast.makeText(TrackerService.this,"Trip Stop",Toast.LENGTH_SHORT).show();
- }
- }));
- }
- }
- private void doCreateLocalTracker() {
- final Realm realm = Realm.getDefaultInstance();
- int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
- if (arrayTrack.isEmpty()){
- TrackModel trackModel = new TrackModel();
- trackModel.setmLng(latitude);
- trackModel.setmLng(longitude);
- trackModel.setmLastTotalCredit(0);
- trackModel.setmLastTotalDistance(0.0);
- arrayTrack.add(trackModel);
- }
- //if (realmResultsDataTracker.isEmpty()){
- realm.beginTransaction();
- // Toast.makeText(TrackerService.this,"Trip has create",Toast.LENGTH_SHORT).show();
- DataTrackModel dataTrackModel = realm.createObject(DataTrackModel.class);
- dataTrackModel.setmId(tripUUID);
- dataTrackModel.setmLastTotalDistance("0");
- dataTrackModel.setmLastTotalCredit("0");
- dataTrackModel.setmLat(String.valueOf(latitude));
- dataTrackModel.setmLng(String.valueOf(longitude));
- dataTrackModel.setmStatus("onGoing");
- realm.commitTransaction();
- realm.close();
- isConnect = true;
- }
- private void doCalculate(){
- if (AppController.getInstance() != null && AppController.getInstance().getSessionManager() != null && AppController.getInstance().getSessionManager().getUserAccount() !=null)
- userAccountModel = AppController.getInstance().getSessionManager().getUserAccount();
- //--------------------------------//
- //do something
- //Set Data to local
- if (arraySingleTrack.isEmpty()){
- //First
- TrackModel trackModel = new TrackModel();
- trackModel.setmLat(latitude);
- trackModel.setmLng(longitude);
- trackModel.setmLastTotalDistance(0.0);
- trackModel.setmLastTotalCredit(0);
- arraySingleTrack.add(trackModel);
- //Toast.makeText(TrackerService.this,"First Data Added:",Toast.LENGTH_SHORT).show();
- }else {
- //Second
- //Calculation from previous data compare with realtime data
- if (userAccountModel.getData().getStatusCampaign()!= null){
- if (userAccountModel.getData().getStatusCampaign().getWraping()!= null){
- String creditValString ;
- creditValString = userAccountModel.getData().getStatusCampaign().getWraping().getCredit();
- String y = creditValString.replace(".", ",");
- // int value1 = Integer.parseInt(y);
- DecimalFormat decimalFormat = new DecimalFormat("#,##0");
- String numberAsString = decimalFormat.format(Double.valueOf(creditValString));
- String ys = numberAsString.replace(",", "");
- //
- priceAds = Integer.parseInt(ys);
- }
- }
- //start claluate distance
- //Iniz data from previous
- Double latPrevious = arraySingleTrack.get(arraySingleTrack.size()-1).getmLat();
- Double lngPrevious = arraySingleTrack.get(arraySingleTrack.size()-1).getmLng();
- Double multiDist = arraySingleTrack.get(arraySingleTrack.size()-1).getmLastTotalDistance();
- Location location1 = new Location("locationA");
- location1.setLatitude(latPrevious);
- location1.setLongitude(lngPrevious);
- Location location2 = new Location("locationA");
- location2.setLatitude(latitude);
- location2.setLongitude(longitude);
- //------------------- //
- TotalDistance = multiDist + location1.distanceTo(location2);
- CurentTripDistance = location1.distanceTo(location2);
- Log.e("shut"," Curent in distance: "+String.valueOf(CurentTripDistance));
- //-------- Cal in Meters -------/
- Double Dmeter = TotalDistance;
- dMeter = Integer.valueOf(Dmeter.intValue());
- Double D = TotalDistance;
- int iX = Integer.valueOf(D.intValue());
- // ---------- Call in KM ---------//
- double distanceKM = TotalDistance /1000;
- sDistances = Util.formatDistance(distanceKM);
- Double in_meter_double = TotalDistance;
- DistanceInMeters = Integer.valueOf(in_meter_double.intValue());
- double priceAdsInDouble = Integer.valueOf(priceAds);
- TotalCredit = (priceAdsInDouble/1000) * iX;
- Log.e("wer2",String.valueOf(DistanceTodayInDouble));
- Log.e("shut","IX : "+iX + " Total : "+TotalCredit);
- Log.e("shut","current : "+String.valueOf(CurentTripDistance));
- Log.e("shut",String.valueOf(TotalDistance));
- Log.e("shut","DX : "+String.valueOf(TotalDistance+CurentTripDistance));
- Log.e("shut","BX : "+String.valueOf(DistanceTodayInDouble+CurentTripDistance));
- Log.e("shut","MX : "+String.valueOf(TotalDistance+DistanceTodayInDouble));
- //----------------- Cal Limit ------------------//
- double LimitTodayInMeters = Double.parseDouble(sDailyKmMax)*1000;
- double LimitTodayCredit = Double.parseDouble(sDailyKmMax)*priceAdsInDouble;
- double DistancePlus = DistanceTodayInDouble + CurentTripDistance;
- double DistanceMinus = DistanceTodayInDouble - TotalDistance;
- double DistancePlusTotal = DistanceTodayInDouble+TotalDistance;
- //Log.e("check","Total credit : "+TotalCredit);
- Log.e("check","minus sebelum :"+DistanceMinus +" plus sebelum :"+DistancePlus);
- Log.e("check","minus :"+DistanceMinus +" plus :"+DistancePlus+"Dis in bobel : "+String.valueOf(DistanceTodayInDouble));
- Log.e("check","Totalgrand : "+DistancePlusTotal);
- if (DistancePlusTotal > LimitTodayInMeters){
- Log.e("check","Masuk Limit Distnace");
- if (arrayMultiTrack.size() > 0){
- Double totalD = Double.valueOf(arrayMultiTrack.get(arrayMultiTrack.size()-1).get(arrayMultiTrack.size()-1).getmLastTotalDistance());
- tt_credit = totalD.intValue();
- }
- tt_credit = 0;
- //------------- Call Credit -----------//
- if(DistancePlusTotal <= LimitTodayInMeters){
- Log.e("check","Masuk Limit Credit");
- TotalCredit = Double.parseDouble(sDailyKmMax)*priceAdsInDouble;
- // Log.e("check","Total credit : "+TotalCredit);
- // Log.e("check","minus :"+DistanceMinus +" plus :"+DistancePlus+"Dis in bobel : "+String.valueOf(DistanceTodayInDouble));
- if (tt_credit > TotalCredit){
- TotalCredit = TotalCredit - tt_credit ;
- Log.e("check","Kurang : "+TotalCredit);
- }else {
- TotalCredit = TotalCredit - CreditTodayInDouble;
- Log.e("check","Habis : "+TotalCredit);
- }
- }else {
- TotalCredit = 0;
- }
- if (TotalCredit < 0){
- TotalCredit = 0;
- }
- }
- //----------------------- Add to List -----------------//
- TrackModel trackModel = new TrackModel();
- trackModel.setmLat(latitude);
- trackModel.setmLng(longitude);
- trackModel.setmLastTotalDistance(TotalDistance);
- trackModel.setmLastTotalCredit(Double.valueOf(TotalCredit).intValue());
- arraySingleTrack.add(trackModel);
- arrayMultiTrack.add(arraySingleTrack);
- }
- double sum = 0 ;
- if (arrayMultiTrack.size() > 0){
- sum += arrayMultiTrack.get(arrayMultiTrack.size()-1).get(arrayMultiTrack.size()-1).getmLastTotalDistance();
- }
- Log.e("qwer",String.valueOf(sum)+"distan :"+DistanceToday);
- sendMessage("distance",sDistances);
- sendMessage("credit",String.valueOf(Util.formatCurrency(Double.valueOf(TotalCredit))));
- sendMessage("updateTotal","update");
- //------------------- Push Data every gps location move -----------------///
- if (sendDataTracker != null){
- //do save to array data
- sendTrackModel.setmLat(latitude);
- sendTrackModel.setmLng(longitude);
- sendTrackModel.setmLastTotalCredit(Double.valueOf(TotalCredit).intValue());
- sendTrackModel.setmLastTotalDistance(DistanceInMeters);
- sendArrayTotal.add(sendTrackModel);
- sendDataTracker.setTripUUID(tripUUID);
- sendDataTracker.setTrips(sendArrayTotal);
- SendDataToServer(sendDataTracker);
- Log.e("limitt","limit");
- //sendArrayTotal.clear();
- Toast.makeText(TrackerService.this,"Send to server",Toast.LENGTH_SHORT).show();
- }
- //-----------------------------------------------------------------------------//
- getReportTrack();
- }
- private void SendDataToServer(SendDataTracker sendDataTracker){
- mSubscriptions.add(NetworkUtil.getRetrofitV2().sendTrackerFeed(sendDataTracker)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeOn(Schedulers.io())
- .subscribe(new Observer<ResponsTrackFeed>() {
- @Override
- public void onCompleted() {
- //sendMessage("hideDialog", "");
- }
- @Override
- public void onError(Throwable e) {
- // sendMessage("hideDialog", "");
- }
- @Override
- public void onNext(ResponsTrackFeed responsTrackFeed) {
- //Toast.makeText(TrackerService.this,"Response Send data :",Toast.LENGTH_SHORT).show();
- }
- }));
- }
- private synchronized void gpsStart() {
- if (!mGpsIsStarted && mLocProvider != null && mLocService != null && (mLocService.isProviderEnabled(LocationManager.GPS_PROVIDER) || mLocService.isProviderEnabled(LocationManager.NETWORK_PROVIDER))) {
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- // ActivityCompat#requestPermissions
- // here to request the missing permissions, and then overriding
- // public void onRequestPermissionsResult(int requestCode, String[] permissions,
- // int[] grantResults)
- // to handle the case where the user grants the permission. See the documentation
- // for ActivityCompat#requestPermissions for more details.
- return;
- }
- mGpsIsStarted = true;
- } else {
- }
- }
- private synchronized void gpsStop() {
- if (mGpsIsStarted) {
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- // ActivityCompat#requestPermissions
- // here to request the missing permissions, and then overriding
- // public void onRequestPermissionsResult(int requestCode, String[] permissions,
- // int[] grantResults)
- // to handle the case where the user grants the permission. See the documentation
- // for ActivityCompat#requestPermissions for more details.
- return;
- }
- mLocService.removeUpdates(this);
- mGpsIsStarted = false;
- }
- }
- private void showNotification() {
- CharSequence text = "Running";
- PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
- new Intent(this, MainActivity.class), 0);
- Notification notification = new Notification.Builder(this)
- .setSmallIcon(R.drawable.ic_logo_sticar_bw)
- .setTicker(text)
- .setWhen(System.currentTimeMillis())
- .setContentTitle(getText(R.string.app_name))
- .setContentText(text)
- .setContentIntent(contentIntent)
- .setOngoing(true)
- .build();
- mNM.notify(999, notification);
- }
- private void sendMessage(String type, String value) {
- //Log.d("sender", "Broadcasting message");
- Intent intent = new Intent("service-gps-event");
- // You can also include some extra data.
- intent.putExtra("type", type);
- intent.putExtra("value", value);
- LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement