Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.34 KB | None | 0 0
  1. import android.Manifest;
  2. import android.content.DialogInterface;
  3. import android.content.pm.PackageManager;
  4. import android.location.Location;
  5. import android.os.Build;
  6. import android.os.Bundle;
  7. import android.support.v4.app.ActivityCompat;
  8. import android.support.v4.content.ContextCompat;
  9. import android.support.v7.app.AlertDialog;
  10. import android.support.v7.app.AppCompatActivity;
  11. import android.util.Log;
  12. import android.widget.Toast;
  13.  
  14. import com.google.android.gms.common.ConnectionResult;
  15. import com.google.android.gms.common.api.GoogleApiClient;
  16. import com.google.android.gms.location.LocationListener;
  17. import com.google.android.gms.location.LocationRequest;
  18. import com.google.android.gms.location.LocationServices;
  19. import com.google.android.gms.location.places.Places;
  20. import com.google.android.gms.maps.CameraUpdateFactory;
  21. import com.google.android.gms.maps.GoogleMap;
  22. import com.google.android.gms.maps.OnMapReadyCallback;
  23. import com.google.android.gms.maps.SupportMapFragment;
  24. import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  25. import com.google.android.gms.maps.model.LatLng;
  26. import com.google.android.gms.maps.model.Marker;
  27. import com.google.android.gms.maps.model.MarkerOptions;
  28.  
  29. public class MapsActivity extends AppCompatActivity
  30. implements OnMapReadyCallback,
  31. GoogleApiClient.ConnectionCallbacks,
  32. GoogleApiClient.OnConnectionFailedListener, LocationListener {
  33.  
  34. GoogleMap mGoogleMap;
  35. SupportMapFragment mapFrag;
  36. LocationRequest mLocationRequest;
  37. GoogleApiClient mGoogleApiClient;
  38. Location mLastLocation;
  39. Marker mCurrLocationMarker;
  40.  
  41. @Override
  42. protected void onCreate(Bundle savedInstanceState) {
  43. super.onCreate(savedInstanceState);
  44. setContentView(R.layout.activity_maps);
  45.  
  46.  
  47. Toast.makeText(getApplicationContext(), "On Create", Toast.LENGTH_LONG).show();
  48.  
  49. mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  50. mapFrag.getMapAsync(this);
  51. }
  52.  
  53. @Override
  54. public void onPause() {
  55. super.onPause();
  56.  
  57.  
  58. Toast.makeText(getApplicationContext(), "On Pause", Toast.LENGTH_LONG).show();
  59.  
  60. //stop location updates when Activity is no longer active
  61. if (mGoogleApiClient != null) {
  62. LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
  63. }
  64. }
  65.  
  66. @Override
  67. public void onMapReady(GoogleMap googleMap) {
  68.  
  69.  
  70. Toast.makeText(getApplicationContext(), "Map Ready", Toast.LENGTH_LONG).show();
  71. mGoogleMap = googleMap;
  72. mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
  73.  
  74. //Initialize Google Play Services
  75. if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  76. if (ContextCompat.checkSelfPermission(this,
  77. Manifest.permission.ACCESS_FINE_LOCATION)
  78. == PackageManager.PERMISSION_GRANTED) {
  79. //Location Permission already granted
  80. buildGoogleApiClient();
  81. mGoogleMap.setMyLocationEnabled(true);
  82. } else {
  83. //Request Location Permission
  84. checkLocationPermission();
  85. }
  86. } else {
  87. buildGoogleApiClient();
  88. mGoogleMap.setMyLocationEnabled(true);
  89. }
  90. }
  91.  
  92. protected synchronized void buildGoogleApiClient() {
  93. mGoogleApiClient = new GoogleApiClient.Builder(this)
  94. .enableAutoManage(this /* FragmentActivity */,
  95. this /* OnConnectionFailedListener */)
  96. .addConnectionCallbacks(this)
  97. .addApi(LocationServices.API)
  98. .addApi(Places.GEO_DATA_API)
  99. .addApi(Places.PLACE_DETECTION_API)
  100. .build();
  101. mGoogleApiClient.connect();
  102.  
  103.  
  104. }
  105.  
  106. @Override
  107. public void onConnected(Bundle bundle) {
  108.  
  109.  
  110. Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
  111. mLocationRequest = new LocationRequest();
  112. mLocationRequest.setInterval(1000);
  113. mLocationRequest.setFastestInterval(1000);
  114. mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
  115. if (ContextCompat.checkSelfPermission(this,
  116. Manifest.permission.ACCESS_FINE_LOCATION)
  117. == PackageManager.PERMISSION_GRANTED) {
  118. LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
  119. }
  120. }
  121.  
  122. @Override
  123. public void onConnectionSuspended(int i) {
  124. }
  125.  
  126. @Override
  127. public void onConnectionFailed(ConnectionResult connectionResult) {
  128. Log.e("+++CONNECTION FAILED", "CONNECTION FAILED");
  129.  
  130. Toast.makeText(getApplicationContext(), "Connection Failed", Toast.LENGTH_LONG).show();
  131. }
  132.  
  133. @Override
  134. public void onLocationChanged(Location location) {
  135.  
  136.  
  137. Toast.makeText(getApplicationContext(), "Location Change", Toast.LENGTH_LONG).show();
  138.  
  139. mLastLocation = location;
  140. if (mCurrLocationMarker != null) {
  141. mCurrLocationMarker.remove();
  142. }
  143.  
  144. //Place current location marker
  145.  
  146. Log.e("+++LOCATION CHANGE", "LOCATION CHANGE");
  147.  
  148. LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
  149.  
  150. Log.e("+++LATI", location.getLatitude() + "====");
  151. Log.e("+++LONGI", location.getLongitude() + "====");
  152.  
  153. MarkerOptions markerOptions = new MarkerOptions();
  154. markerOptions.position(latLng);
  155. markerOptions.title("Current Position");
  156. markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.person_icon));
  157.  
  158.  
  159. LatLng latLng1 = new LatLng(23.809591, 90.367447);
  160. LatLng latLng2 = new LatLng(23.873751, 90.396454);
  161. LatLng latLng3 = new LatLng(23.746466, 90.376015);
  162.  
  163. MarkerOptions markerOptions1 = new MarkerOptions();
  164. markerOptions1.position(latLng1);
  165. markerOptions1.title("Mirpur");
  166. markerOptions1.icon(BitmapDescriptorFactory.fromResource(R.drawable.car_one));
  167.  
  168.  
  169. MarkerOptions markerOptions2 = new MarkerOptions();
  170. markerOptions2.position(latLng2);
  171. markerOptions2.title("Uttora");
  172. markerOptions2.icon(BitmapDescriptorFactory.fromResource(R.drawable.car_two));
  173.  
  174.  
  175. MarkerOptions markerOptions3 = new MarkerOptions();
  176. markerOptions3.position(latLng3);
  177. markerOptions3.title("Dhanmondi");
  178. markerOptions3.icon(BitmapDescriptorFactory.fromResource(R.drawable.car_three));
  179.  
  180.  
  181. mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
  182. mGoogleMap.addMarker(markerOptions1);
  183. mGoogleMap.addMarker(markerOptions2);
  184. mGoogleMap.addMarker(markerOptions3);
  185.  
  186. //move map camera
  187. mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 11));
  188.  
  189. }
  190.  
  191.  
  192. public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99;
  193.  
  194. private void checkLocationPermission() {
  195. if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
  196. != PackageManager.PERMISSION_GRANTED) {
  197.  
  198. // Should we show an explanation?
  199. if (ActivityCompat.shouldShowRequestPermissionRationale(this,
  200. Manifest.permission.ACCESS_FINE_LOCATION)) {
  201.  
  202. // Show an explanation to the user *asynchronously* -- don't block
  203. // this thread waiting for the user's response! After the user
  204. // sees the explanation, try again to request the permission.
  205. new AlertDialog.Builder(this)
  206. .setTitle("Location Permission Needed")
  207. .setMessage("This app needs the Location permission, please accept to use location functionality")
  208. .setPositiveButton("OK", new DialogInterface.OnClickListener() {
  209. @Override
  210. public void onClick(DialogInterface dialogInterface, int i) {
  211. //Prompt the user once explanation has been shown
  212. ActivityCompat.requestPermissions(MapsActivity.this,
  213. new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
  214. MY_PERMISSIONS_REQUEST_LOCATION);
  215. }
  216. })
  217. .create()
  218. .show();
  219.  
  220.  
  221. } else {
  222. // No explanation needed, we can request the permission.
  223. ActivityCompat.requestPermissions(this,
  224. new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
  225. MY_PERMISSIONS_REQUEST_LOCATION);
  226. }
  227. }
  228. }
  229.  
  230. @Override
  231. public void onRequestPermissionsResult(int requestCode,
  232. String permissions[], int[] grantResults) {
  233. switch (requestCode) {
  234. case MY_PERMISSIONS_REQUEST_LOCATION: {
  235. // If request is cancelled, the result arrays are empty.
  236. if (grantResults.length > 0
  237. && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  238.  
  239. // permission was granted, yay! Do the
  240. // location-related task you need to do.
  241. if (ContextCompat.checkSelfPermission(this,
  242. Manifest.permission.ACCESS_FINE_LOCATION)
  243. == PackageManager.PERMISSION_GRANTED) {
  244.  
  245. if (mGoogleApiClient == null) {
  246. buildGoogleApiClient();
  247. }
  248. mGoogleMap.setMyLocationEnabled(true);
  249. }
  250.  
  251. } else {
  252.  
  253. // permission denied, boo! Disable the
  254. // functionality that depends on this permission.
  255. Toast.makeText(this, "permission denied", Toast.LENGTH_LONG).show();
  256. }
  257. return;
  258. }
  259.  
  260. // other 'case' lines to check for other
  261. // permissions this app might request
  262. }
  263. }
  264.  
  265. }
  266.  
  267. <?xml version="1.0" encoding="utf-8"?>
  268. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  269. >
  270.  
  271. <uses-permission android:name="android.permission.CALL_PHONE" />
  272. <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
  273. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  274. <uses-permission android:name="android.permission.INTERNET" />
  275. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  276. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  277. <uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
  278.  
  279. <uses-feature android:name="android.hardware.location.gps" />
  280.  
  281. <uses-permission-sdk-23 android:name="android.permission.INTERNET" />
  282. <uses-permission-sdk-23 android:name="android.permission.ACCESS_NETWORK_STATE" />
  283. <uses-permission-sdk-23 android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
  284. <uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION" />
  285. <uses-permission-sdk-23 android:name="android.permission.CALL_PHONE" />
  286. <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
  287. <uses-permission-sdk-23 android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"></uses-permission-sdk-23>
  288.  
  289. <application
  290. android:name="android.support.multidex.MultiDexApplication"
  291. android:allowBackup="true"
  292. android:icon="@mipmap/ic_launcher"
  293. android:largeHeap="true"
  294. android:supportsRtl="true"
  295. android:theme="@style/AppTheme">
  296.  
  297.  
  298. <meta-data
  299. android:name="com.google.android.gms.version"
  300. android:value="@integer/google_play_services_version" />
  301. <meta-data
  302. android:name="com.google.android.geo.API_KEY"
  303. android:value="AIzaSyBm43jiOe04Qkb1NpsZAq1ryj_bfYsRXww" />
  304.  
  305.  
  306. <activity android:name=".MapsActivity">
  307. <intent-filter>
  308. <action android:name="android.intent.action.MAIN" />
  309.  
  310. <category android:name="android.intent.category.LAUNCHER" />
  311. </intent-filter>
  312. </activity>
  313. <activity
  314. android:name=".TermsAndCondition"
  315. android:theme="@style/AppCompatAlertDialogStyle" />
  316. <activity android:name=".ForgetPassword"></activity>
  317. </application>
  318.  
  319. </manifest>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement