简体   繁体   中英

Android GPS app not working on Emulator

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)

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?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM