Vous êtes sur la page 1sur 6

package com.chorusproapp.

autoterrace;

import android.Manifest;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.chorusproapp.appconfig.AppConfigurations;
import com.chorusproapp.appconfig.ConnectionDetector;
import com.chorusproapp.modal.MapModal;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;

/**
* Created by chirag on 04-07-2017.
*/

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback,


GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
{
GoogleMap map;
private Toolbar toolbar;

double longitude;
double latitude;

GoogleApiClient googleApiClient;

public static final int MY_PERMISSIONS_REQUEST_ACCESS_LOCATION = 130;

ConnectionDetector cd;

ProgressDialog pd;
private SharedPreferences prefs;
private String strAdminId;
private String strAdminType;

Timer timerTask;

private String strName;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);

cd = new ConnectionDetector(this);
pd = new ProgressDialog(MapsActivity.this);
prefs = PreferenceManager.getDefaultSharedPreferences(this);

strAdminId = prefs.getString("UUID", "");


strAdminType = prefs.getString("UUTYPE", "0");

toolbar = (Toolbar) findViewById(R.id.toolbar);


setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

SupportMapFragment mapFragment = (SupportMapFragment)


getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
googleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
try
{

timerTask = new Timer();


timerTask.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
runOnUiThread(new Runnable()
{
@Override
public void run()
{
callAPI(strAdminType, strAdminId);
}
});

}
}, 6000, 6000);

} catch (Exception e)
{
e.printStackTrace();
}

toolbar.setNavigationOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
finish();
}
});
}

@Override
public void onConnected(@Nullable Bundle bundle)
{

@Override
public void onConnectionSuspended(int i)
{

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult)
{

@Override
public void onMapReady(GoogleMap googleMap)
{
map = googleMap;

boolean result = checkPermissionForAccess();

if (result)
{
map.setMyLocationEnabled(true);
}

@Override
protected void onStart()
{
googleApiClient.connect();
super.onStart();
}

@Override
protected void onStop()
{
googleApiClient.disconnect();
super.onStop();
}

public boolean checkPermissionForAccess()


{
int currentVersion = Build.VERSION.SDK_INT;
if (currentVersion >= Build.VERSION_CODES.M)
{
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_COARSE_LOCATION)
||
ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION))
{
AlertDialog.Builder alert = new
AlertDialog.Builder(MapsActivity.this);
alert.setCancelable(true);
alert.setTitle("Permission necessary");
alert.setMessage("Permission is necessary for access for
location");
alert.setPositiveButton(android.R.string.yes, new
DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int i)
{
ActivityCompat.requestPermissions(MapsActivity.this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_LOCATION);
}
});
alert.create();
alert.show();

} else
{
ActivityCompat.requestPermissions(MapsActivity.this, new
String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_LOCATION);
}
return false;
} else
{
return true;
}
} else
{
return true;
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[]
permissions, @NonNull int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case MY_PERMISSIONS_REQUEST_ACCESS_LOCATION:
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED)
{
cd.GetToast(getResources().getString(R.string.msg));
}
break;
}
}

private void addMarker(LatLng latLng)


{
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title(latLng.latitude + "," + latLng.longitude);
Marker marker = map.addMarker(markerOptions);
marker.showInfoWindow();
}

@Override
protected void onDestroy()
{
super.onDestroy();
if (timerTask != null)
{
timerTask.cancel();
}
}

protected void callAPI(final String strType, final String strAid)


{
pd.show();
StringRequest stringRequest = new StringRequest(Request.Method.POST,
AppConfigurations.Location_tracking_list_URL, new Response.Listener<String>()
{
@Override
public void onResponse(String response)
{
pd.dismiss();

try
{
JSONObject jsonObject = new JSONObject(response);
//Log.e("Call", jsonObject.toString());

int success = jsonObject.getInt("success");

if (success == 1)
{
strName = jsonObject.getString("user_name");
JSONArray jmsgArray = jsonObject.getJSONArray("message");

if (jmsgArray.length() > 0 && jmsgArray != null)


{
for (int i = 0; i < jmsgArray.length(); i++)
{
JSONObject jobj = jmsgArray.getJSONObject(i);

MapModal mapModal = new MapModal();


mapModal.setLat(jobj.getString("lat"));
mapModal.setLon(jobj.getString("lon"));

LatLng latLng = new


LatLng(Double.parseDouble(mapModal.getLat()),
Double.parseDouble(mapModal.getLon()));
addMarker(latLng);
}
getSupportActionBar().setTitle(strName);
}
} else
{

} catch (JSONException e)
{
e.printStackTrace();
}

}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
pd.dismiss();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError
{
HashMap<String, String> map = new HashMap<>();
map.put("user_type", strType);
map.put("user_admin_id", strAid);

return map;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

Vous aimerez peut-être aussi