3

我是安卓新手。因此,如果我的问题很简单,请道歉并帮助我。

我正在开发一个 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时,我会收到位置更新。

谁能说出我在上面的代码中做错了什么?我错过了什么吗?

请帮忙。谢谢你。

4

1 回答 1

1

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

于 2013-01-02T11:30:24.037 回答