Note that there are some explanatory texts on larger screens.

plurals
  1. POandroid locationListener not working?
    primarykey
    data
    text
    <p>I am having trouble using the loactionListener in eclipse for android. I have been googling for a while now an I can't seem to see why this shouldn't work. The only thing I can think of is that maybe it is because my testing device has no sim. (the internet is provided via wifi).</p> <p>I have used <a href="https://stackoverflow.com/questions/938719/android-using-locationmanager-does-not-give-a-geo-fix">this</a> as a reference and still, nothing. </p> <p>Could anyone help me with this problem.</p> <p>here is the relevant parts of my activity:</p> <pre><code>public class MainMenu extends Activity implements LocationListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_menu); theMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.the_map)).getMap(); theMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); locMan = (LocationManager)getSystemService(LOCATION_SERVICE); } @Override public void onLocationChanged(Location location) { final Double lat = location.getLatitude(); final Double lng = location.getLongitude(); LatLng lastLatLng = new LatLng(lat, lng); String title = getString(new StringLang().textSet(userLang,"marker_title")); String snippit = getString(new StringLang().textSet(userLang,"marker_snip")); if(userMarker!=null) userMarker.remove(); userMarker = theMap.addMarker(new MarkerOptions() .position(lastLatLng) .title(title) .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)) .snippet(snippit)); reverseGeoCode(lat, lng); } } </code></pre> <p>I was using a different method to display my location on the map, which worked well but it never updated. It always showed my location at the last place I used the GPS, which turns out was 60mile accross the country. I can see this is working but is there a better way of doing this. </p> <p>Old method:</p> <pre><code> @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_menu); if(findViewById(R.id.the_map) != null){ //map has loaded continue theMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.the_map)).getMap(); theMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); android.location.Location lastLoc = locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); LatLng lastLatLng ; if(lastLoc == null){ /* Use the LocationManager class to obtain GPS locations */ double latitude = 0; double longitude = 0; lastLatLng = new LatLng(latitude, longitude); lat = latitude; lng = longitude; String title = getString(new StringLang().textSet(userLang,"marker_title")); String snippit = getString(new StringLang().textSet(userLang,"marker_snip")); if(userMarker!=null) userMarker.remove(); userMarker = theMap.addMarker(new MarkerOptions() .position(lastLatLng) .title(title) .icon(BitmapDescriptorFactory.fromResource(R.drawable.your_loc_icon)) .snippet(snippit)); CameraPosition cameraPosition = new CameraPosition.Builder() .target(lastLatLng) // Sets the center of the map to user position .zoom(0) // Sets the zoom .bearing(90) // Sets the orientation of the camera to east .tilt(20) // Sets the tilt of the camera to 30 degrees .build(); // Creates a CameraPosition from the builder currentLoc = lastLatLng; theMap.animateCamera (CameraUpdateFactory.newCameraPosition(cameraPosition), 3000, null); final TextView geoTagText = (TextView)findViewById(R.id.text_geoTag); geoTagText.setText("We cannot find your current location, please check your settings."); }else{ double latitude = lastLoc.getLatitude(); double longitude = lastLoc.getLongitude(); lastLatLng = new LatLng(latitude, longitude); lat = latitude; lng = longitude; animateMap(lastLatLng); } }else{ theMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.the_map)).getMap(); theMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); android.location.Location lastLoc = locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); LatLng lastLatLng; double latitude = lastLoc.getLatitude(); double longitude = lastLoc.getLongitude(); lastLatLng = new LatLng(latitude, longitude); lat = latitude; lng = longitude; animateMap(lastLatLng); //no map to load } } @Override public void onLocationChanged(Location location) { final Double lat = location.getLatitude(); final Double lng = location.getLongitude(); LatLng lastLatLng = new LatLng(lat, lng); String title = getString(new StringLang().textSet(userLang,"marker_title")); String snippit = getString(new StringLang().textSet(userLang,"marker_snip")); if(userMarker!=null) userMarker.remove(); userMarker = theMap.addMarker(new MarkerOptions() .position(lastLatLng) .title(title) .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)) .snippet(snippit)); } </code></pre> <p>it would also be useful to add that there is button to relocate the user manually if they want.</p> <pre><code>reLocBtn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { if(menuActive == true){ playSound(); LocationManager loc = (LocationManager)getSystemService(Context.LOCATION_SERVICE); android.location.Location gpsLoc = (Location) loc.getLastKnownLocation(LocationManager.GPS_PROVIDER); double lat = gpsLoc.getLatitude(); double lng = gpsLoc.getLongitude(); LatLng lastLatLng = new LatLng(lat, lng); animateMap(lastLatLng); } } }); </code></pre> <p>I'm not to sure why either method doesn't update, but the second method seams to work better on first load.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload