Android - 仅使用GPS提供商获取位置坐标的麻烦

时间:2013-01-02 11:24:50

标签: android locationmanager android-location locationlistener

我是android新手。如果我的问题很简单并且帮助我,请道歉。

我正在开发一个Android应用程序,我试图让用户位置仅使用GPS服务(因为我正在开发一个需要在Android设备上运行的应用程序,即使没有互联网< /强>)。

我的代码如下:

我的活动:

public class MyView extends Activity implements OnClickListener, Runnable
    {
       LocationManager itsLocationManager;
       LocationListener itsLocationListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
      itsLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
      itsLocationListener = new MyLocationListener(this, itsLocationManager);

      getLocationAndSendMessage();
    }

    private void getLocationAndSendMessage() 
    {
      try 
      {
        itsLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, itsLocationListener);
      } 
      catch (Exception theException) 
      {
        theException.printStackTrace();
        ToastMsgUtil.showErrorMessage("Problem in retrieving your current location! Please try again.", this);  
       }
     }

MyLocationListener.java:

public class MyLocationListener implements LocationListener
{
    Context itsContext;
    LocationManager itsLocationManager;

    public MyLocationListener(Context theContext, LocationManager theLocationManager) 
    {
        itsContext = theContext;
        itsLocationManager = theLocationManager;
    }

        @Override
    public void onLocationChanged(final Location theLocation) 
    {
                //My Location processing code
                itsLocationManager.removeUpdates(SafemateLocationListener.this);
         }
}

的AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

正如我上面所说,我需要通过GPS获取位置(因为移动用户没有互联网)。

  • 在调试时,我发现当我使用 LocationManager.GPS_PROVIDER 时,我 onLocationChanged 方法没有收到任何位置更新
  • 但是,当我尝试使用 LocationManager.NETWORK_PROVIDER 时,我会收到位置更新。

任何人都可以在上面的代码中说出我做错了什么吗?我错过了什么吗?

请帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

以稳定,可操作和兼容的方式使用GPS获得正确的坐标是一团糟。我记得在stackoverflow.com上发布的某个帖子但目前无法找到它。所以我建议使用WLocate.java中的GPS相关代码,该代码使用所有已知的Android版本。或者使用libwlocate,它封装了您正在寻找的功能。