Click here to Skip to main content
15,886,518 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have gone through a tutorial which was psoted on androidhive.com.I followed each and every step mentioned over there.I'm getting Latitude and Longitude as 0.0 and 0.0 respectively.. please help me...

I want to read current location of user through gps and want provide other active users locations to the current user.. My project is based on bus tracking via gps system... please help me..
here m posting my code...

Dynamic_Map.java
Java
public class Dynamic_Map extends FragmentActivity {
	
	//Google Map
	
	private GoogleMap googleMap;
	GPSTracker gps;
	
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.dynamic_map);
		
		try{
			
			gps = new GPSTracker(this);
		  	  
	        // check if GPS enabled     
	  if(gps.canGetLocation()){
	             if(gps.isGPSEnabled){
	           double latitudee = gps.getLatitude();
	           double longitudee = gps.getLongitude();
	             
	            // \n is for new line
	           Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitudee + "\nLong: " + longitudee, Toast.LENGTH_LONG).show();
	             }else{
	            	 Toast.makeText(getApplicationContext(), "Your Location is not available bcos gps is "+gps.isGPSEnabled,Toast.LENGTH_LONG).show();
	            	 gps.showSettingsAlert();
	             }
	        }else{
	            // can't get location
	            // GPS or Network is not enabled
	            // Ask user to enable GPS/network in settings
	         gps.showSettingsAlert();
	       }
			//Load map
			initilizeMap();
			
			
		
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
	/**
	 * function to load map.IF map is not created it will create 
	 */
	
	private void initilizeMap(){
		if(googleMap == null){
			googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.dynamic_map)).getMap();
			googleMap.setMyLocationEnabled(true);
			googleMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(gps.getLatitude(), gps.getLongitude())));
			
			
			
			// latitude and longitude
			//double latitude = 17.3850;
			//double longitude = 78.486671;
			//double latitude = gps.getLatitude();
			//double longitude = gps.getLongitude();
			 
			// create marker
			MarkerOptions marker = new MarkerOptions().position(new LatLng(gps.getLatitude(), gps.getLongitude())).title("Hello Maps");
			 
			// Changing marker icon
			marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.my_maker_icon));
			 
			// adding marker
			googleMap.addMarker(marker);
			
			
			//check if  map is created successfully or not
			if(googleMap == null){
				Toast.makeText(getApplicationContext(), "Sorry not able to create maps", Toast.LENGTH_SHORT).show();
			}
			
			//gps  = new GPSTracker(Dynamic_Map.this);
			
		}
		
	
		// @Override
	   //protected void onResume() {
	    // super.onResume();
	     // initilizeMap();
	   //}
		
	}
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
	//	close = false;
		initilizeMap();
	}
	
	
	}

GPSTracker.java
public class GPSTracker extends Service implements LocationListener {

	private final Context mContext;
	private String provider;
	// flag for GPS Status
	boolean isGPSEnabled = false;
	
	//flag for network status
	boolean isNetworkEnabled = false;
	
	boolean canGetLocation = false;
	
	Location location;// location
	double latitude;//latitude
	double longitude;//longitude
	
	//The minimum distance to change updates in meters.
	private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;//10 meters
	
	//The minimum time to change updates in milliseconds
	private static final long MIN_TIME_BW_UPDATES = 1000*60*1; // 1 minute
	
	//Declaring LocationManager 
	protected LocationManager locationManager;
	
	public GPSTracker(Context context){
		this.mContext = context;
		getLocation();
		//onLocationChanged(location);
		
	}
	
	
	public Location getLocation(){
		try{
			locationManager = (LocationManager)mContext.getSystemService(LOCATION_SERVICE);
			locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
			 
			//Criteria criteria = new Criteria();
		    //provider = locationManager.getBestProvider(criteria, true);
		    //Location location = locationManager.getLastKnownLocation(provider);
		    
		    
		   // if (location == null) {
		        // request for a single update, and try again.
		        // Later will request for updates every 10 mins
		    	//locationManager.requestSingleUpdate(criteria, this, null);
		       // location = locationManager
		            //    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
		   // }
		        
			//getting GPS status
			isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
			
			////getting network status
			isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
			
			if(!isGPSEnabled && !isNetworkEnabled){
				//no network provider is enabled
			}else{
				this.canGetLocation = true;
				isGPSEnabled =  locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
				//isGPSEnabled = true;
				//First get location from Network Provider
				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.GPS_PROVIDER);
						if(location !=null){
							System.out.println("Provider " + provider + " has been selected.");
						      onLocationChanged(location);
							//latitude = location.getLatitude();
							//longitude = location.getLongitude();
						}
					}
					
					}
			}
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return location;
	}
	
	@Override
	public void onLocationChanged(Location location){
		
		
		latitude = location.getLatitude();
		longitude = location.getLongitude();
		
	}
	
	@Override
	public void onProviderDisabled(String provider){
		Toast.makeText(this, "Disabled new provider " + provider,
		        Toast.LENGTH_SHORT).show();
	}
	
	@Override
    public void onProviderEnabled(String provider) {
		Toast.makeText(this, "Enabled new provider " + provider,
		        Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
	
   @Override
    public IBinder onBind(Intent arg0){
    	return null;
    }
   
   /**
    * Function to get latitude
    * 
    */
   public double getLatitude(){
	   if(location != null){
		   latitude = location.getLatitude();
		   Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude, Toast.LENGTH_LONG).show();
	   }
	   
	   //return latitude;
	   return latitude;
   }
   
   /**
    * Function to get longitude
    */
   public double getLongitude(){
	   if(location !=null){
		   longitude = location.getLongitude();
		   Toast.makeText(getApplicationContext(), "Your Location is - \nLng: " + longitude, Toast.LENGTH_LONG).show();
	   }
	   
	   //return longitude;
	   return longitude;
	   
   }
   
   /**
    * Function to check if best network provider
    * @return boolean
    */
   public boolean canGetLocation(){
	   return this.canGetLocation;
   }
   
   /**
    * Function to show settings alert dialog
    */
   public void showSettingsAlert(){
	   AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
	   
	   //Setting Dialog Title
	   alertDialog.setTitle("GPS is settings");
	   
	   //Setting Dialog Message
	   alertDialog.setMessage("GPS is not enabled.Do you want to go to settings menu?");
	   
	   //On pressing Settings button 
	   alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
		   public void onClick(DialogInterface dialog,int which){
			   Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
			   mContext.startActivity(intent);
			   
		   }
	   });
	   
	   //On pressing cancel button
	   alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
		   public void onClick(DialogInterface dialog,int which){
			   dialog.cancel();
		   }
				
	   });
	   
	   //Showing Alert Message
	   alertDialog.show();
	     
   }
   
   /**
    * Stop using GPS listener
    * Calling this function will stop using GPS in app
    * 
    */
	
   public void stopUsingGPS(){
	   if(locationManager != null){
		   locationManager.removeUpdates(GPSTracker.this);
		   }
  }
   }



I have included necessary permissions in AndroidManifest file...

XML
<!-- Required to show current location -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
       <uses-permission android:name="android.permission.INTERNET" />

Please help me.... this is my final year project.. please help

thank you :)
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900