I have unsuccessfully attempted to get GPS Location to work for my app under Android. I would like to know what I might be doing wrong. I have so far tried the following methods:
as well as many others, but all in vain.
Considering that all the solutions above worked for some or the other person, I will use this one to debug:
package my.namespace;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class HomeActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
private class mylocationlistener implements LocationListener {
public void onLocationChanged(Location location) {
if (location != null) {
Log.d("LOCATION CHANGED", location.getLatitude() + "");
Log.d("LOCATION CHANGED", location.getLongitude() + "");
Toast.makeText(HomeActivity.this,
location.getLatitude() + "" + location.getLongitude(),
Toast.LENGTH_LONG).show();
}
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
There were @override
annotations for the 3 methods onProviderDisabled
, onProviderEnabled
and onStatusChanged
. I had to remove them because Eclipse gave an error that these methods are not overriding a superclass.
I have added the permissions in the manifest file (ACCESS_FINE_LOCATION
, ACCESS_MOCK_LOCATION
, ACCESS_COARSE_LOCATION
and INTERNET
).
Does anyone have an idea what I might be doing wrong?
Edit: running on Emulator (Android 2.2 API 8)
Select "Emulator Control" Tab. At bottom you will see Location Controls Panel. Select "Manual" Tab. Enter Longitude and Latitude in Textboxs then Click Send Button.
In this case where your location is not working on android, turning on Google Location Accuracy could help. Simply draw down the quick-setting panel. Tap and hold on the 'Location' shortcut to go straight to the location settings. Tap "Google Location Accuracy" and then toggle on the service.
When setting up GPS emulator, you need to go to your Settings > About on your Android device. Then tap on the Build number seven times, which activates the developer mode. Now head back to the main settings, where you should see a new option menu called "Developer Options".
From terminal run telnet localhost 5554 , you are now in emulator shell. Type help ,it will show available commands , like faking a call, sms, battery etc. To know more about a command type help <command name> . Type help geo , it will print available location commands.
Make sure to enable GPS when you test your app. It would also help if you use NETWORK_PROVIDER and GPS_PROVIDER both. So that when GPS is not available you still get the location with NETWORK_PROVIDER.
UPDATE: Also, if you are using emulator to test your app, make sure you emulate the GPS fix either from command line or using Eclipse. here is a link to stackoverflow question about how to do this How to emulate GPS location in the Android Emulator?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With