Java Android Program to Consume GPS Broad-Cast using BroadCast Receiver
Here is source code of the Program to Consume GPS Broad-Cast using BroadCast Receiver in Android. The program is successfully compiled and run on a Windows system using Eclipse Ide. The program output is also shown below.
GetLocation
Here the GetLocation class broadcast an intent(intent1) to the project , and the corresponding broadcast is received for the user’s current location in the Tracker class.
Tracker
package com.example.mc_project; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.widget.Toast; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapFragment; 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 com.google.android.gms.maps.model.Polyline; import com.google.android.gms.maps.model.PolylineOptions; public class Tracker extends Activity { double latitude; double longi; private static final LatLng JLNStadium = new LatLng(28.590401000000000000, 77.233255999999980000); LatLng JLNS = new LatLng(28.55, 77.54); private double pLati, plongi, dLati, dlongi;// previous latitude and // longitude private GoogleMap map; private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Log.i("Here", "onreceived"); if (bundle != null) { latitude = bundle.getDouble("lati"); Log.i("Tag", ""); longi = bundle.getDouble("longi"); Log.i("tag", ""); drawmap(latitude, longi); } } }; public void drawmap(double latid, double longid) { Log.i("Tag", "map"); LatLng prev = new LatLng(pLati, plongi); LatLng my = new LatLng(latid, longid); Polyline line = map.addPolyline(new PolylineOptions().add(prev, my) .width(5).color(Color.BLUE)); pLati = latid; plongi = longid; } @Override protected void onResume() { super.onResume(); registerReceiver(receiver, new IntentFilter("com.example.mc_project")); } @Override protected void onPause() { super.onPause(); unregisterReceiver(receiver); this.onStop(); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tracker); final double src_lati = getIntent().getDoubleExtra("src_lati", 0.0); Log.i("Tracker_Src_lati", src_lati + ""); final double src_longi = getIntent().getDoubleExtra("src_longi", 0.0); final double dest_lati = getIntent().getDoubleExtra("dest_lati", 0.0); final double dest_longi = getIntent().getDoubleExtra("dest_longi", 0.0); pLati = src_lati; plongi = src_longi; dLati = dest_lati; dlongi = dest_longi; try { initilizeMap(); } catch (Exception e) { e.printStackTrace(); } Intent loc_intent; loc_intent = new Intent(getBaseContext(), Getlocation.class); loc_intent.putExtra("lat", dLati); loc_intent.putExtra("lon", dlongi); startService(loc_intent); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.tracker, menu); return true; } private void initilizeMap() { if (map == null) { map = ((MapFragment) getFragmentManager() .findFragmentById(R.id.map)).getMap(); Log.i("Tag", "map"); // draw line b/w intial and final location. LatLng strt = new LatLng(pLati, plongi); LatLng end = new LatLng(dLati, dlongi); Marker start_m = map.addMarker(new MarkerOptions().position(strt) .title("START")); Marker end_m = map.addMarker(new MarkerOptions().position(end) .title("JLN")); map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); Polyline line = map.addPolyline(new PolylineOptions() .add(strt, end).width(5).color(Color.RED)); if (map == null) { Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT) .show(); } } } }
package com.example.mc_project; 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.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.os.Message; import android.os.Vibrator; import android.provider.Settings; import android.util.Log; import android.widget.Toast; public class Getlocation extends AbstractService implements LocationListener { private Context Context; boolean isGPSEnabled = false; boolean isNetworkEnabled = false; boolean canGetLocation = false; int flag = 0; Location location; Notification notification; Location mylocation = new Location(""); Location dest_location = new Location(""); float distance; NotificationManager notifier; public double latitude; double longitude; private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 40;// 40 meters private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 2; // update location within a time period of 2 minutes @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.i("Tag", "on create"); } @Override public void onDestroy() { // TODO Auto-generated method stub Log.i("Indestroy", "destroyed"); flag = 0; stopSelf(); stopUsingGPS(); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startid) { // TODO Auto-generated method stub Context = this; Log.i("tag", "on start"); mylocation = getLocation(Context); Double msg = mylocation.getLatitude(); Log.i("my long", msg.toString()); Double dest_lat = intent.getDoubleExtra("lat", 0.0); Double dest_lon = intent.getDoubleExtra("lon", 0.0); Log.i("get lat", dest_lat.toString()); Log.i("get lon", dest_lon.toString()); this.dest_location.setLatitude(dest_lat); this.dest_location.setLongitude(dest_lon); Log.i("get lon", dest_lon.toString()); return START_NOT_STICKY; } protected LocationManager locationManager; public Location getLocation(Context Context) { try { locationManager = (LocationManager) Context .getSystemService(LOCATION_SERVICE); isGPSEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { Log.i("No gps and No Network ", "No gps and No Network is enabled enable either one of them"); Toast.makeText(this, "Enable either Network or GPS", Toast.LENGTH_LONG).show(); } else { this.canGetLocation = true; if (isNetworkEnabled) { locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("Network", "Network"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } if (isGPSEnabled) { if (location == null) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("GPS Enabled", "GPS Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } } } } catch (Exception e) { e.printStackTrace(); } return location; } public void stopUsingGPS() { if (locationManager != null) { locationManager.removeUpdates(Getlocation.this); } } public double getLatitude() { if (location != null) { latitude = location.getLatitude(); } return latitude; } public double getLongitude() { if (location != null) { longitude = location.getLongitude(); } return longitude; } public boolean canGetLocation() { return this.canGetLocation; } @Override public void onLocationChanged(Location location) { mylocation = getLocation(Context); Log.i("Tag", "location changed"); distance = mylocation.distanceTo(dest_location); Log.i("Tag", "" + distance); if (flag == 0) { Intent intent1 = new Intent("com.example.mc_project"); intent1.putExtra("lati", mylocation.getLatitude()); intent1.putExtra("longi", mylocation.getLongitude()); sendBroadcast(intent1); if ((distance) < 600) { Log.i("Distance", "dist. b/w < 1km"); Log.d("location", "" + distance); NotificationManager notificationManager = (NotificationManager) Context .getSystemService(Context.NOTIFICATION_SERVICE); PendingIntent pendingIntent = PendingIntent.getActivity( Context, 1, new Intent(Context, MainActivity.class), 0); Notification notification = new Notification( R.drawable.ic_launcher, "You areached ur destination!!", System.currentTimeMillis()); notification.defaults |= Notification.DEFAULT_SOUND; notification.setLatestEventInfo(Context, "You areached ur destination!!", "You areached ur destination!!", pendingIntent); notificationManager.notify(11, notification); Vibrator vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vi.vibrate(1000); flag = 1; onDestroy(); } } } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onStartService() { // TODO Auto-generated method stub } @Override public void onStopService() { // TODO Auto-generated method stub } @Override public void onReceiveMessage(Message msg) { // TODO Auto-generated method stub } }
Java Android Program to Consume GPS Broad-Cast using BroadCast Receiver
Reviewed by Unknown
on
2:08 AM
Rating:
Slotyro Casino - Mapyro
ReplyDeleteSlotyro 용인 출장안마 Casino is 영주 출장샵 located in the 진주 출장샵 centre of Casino Terbaik, with 715 Slotyro Slots available for purchase. Play free, 경산 출장안마 read and 광주광역 출장마사지