开发者

Unable to toast latitude and longitude

Am working on an app, which toasts the latitude and longitude using LocationManager and LocationListener. On running the app, an error shows up saying "Sorry, Process system is not responding.". This happens when I supply the lat and long either manually from emulator control under DDMS or from command prompt using telnet.

Java Code:

public class LocationFinder extends Activity {

private LocationManager locManager;
private LocationListener locListener;

/** Called when the activity is first created. */
@Override
public void onCreate(Bund开发者_运维问答le savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    locListener = new MyLocationListener();

    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
}

private class MyLocationListener implements LocationListener{

    @Override
    public void onLocationChanged(Location loc) {
        // TODO Auto-generated method stub

        if(loc != null){
            Toast.makeText(getBaseContext(), "Latitude: " +   loc.getLatitude() + "Longitude: " + loc.getLongitude(), Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
    }

}

}

And I have set the following permissions in manifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />

The emulator is also hw.gps enabled.

I would like to know if there is anything wrong with my code. Thanks


Check by using Log that you are getting Values for Latitude and longitude..

Then in Toast put this

 Toast.makeText(LocationFinder.this, "Latitude: " +   loc.getLatitude() + "Longitude: " + loc.getLongitude(), Toast.LENGTH_SHORT).show();

instead of

 Toast.makeText(getBaseContext(), "Latitude: " +   loc.getLatitude() + "Longitude: " + loc.getLongitude(), Toast.LENGTH_SHORT).show();


  //  Des: Start Device's GPS and get current latitude and longitude
     public void GPS() throws IOException {

 //  Des: This is a background service and called after every 10 minutes and fetch                    latitude-longitude values
     background = new Thread(new Runnable() {
     @Override
     public void run() {             
     for (int i = 0; i < j; i++) {
        if (ProjectStaticVariable.GPSExit == true ) {
        try {
            Thread.sleep(600000);   //10 minutes
            mainhandler.sendMessage(mainhandler.obtainMessage());
            j++;
        }
        catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
         }
       }
    }
  }
});

background.start();
mainhandler = new Handler() {
public void handleMessage(Message msg) {

//   Check Internet status
    isInternetPresent = cd.isConnectingToInternet();
    if (isInternetPresent) {

        lat_long_Service_flag = true;                   
        mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        mlocListener = new MyLocationListener(getApplicationContext());
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0,  mlocListener);

        mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    }
  }
 };
}

 //   Des: Location Listener through which we get current latitude and longitude
     public class MyLocationListener implements LocationListener {

     public MyLocationListener(Context mContext) {}

     public MyLocationListener(Runnable runnable) {}

     @Override
     public void onLocationChanged(Location loc) {

     longitude = loc.getLongitude();
     latitude = loc.getLatitude();
     final_latitude = Double.toString(latitude);
     final_longitude = Double.toString(longitude);

    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
   }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜