3

私はアンドロイドに不慣れです。ですから、私の質問が単純なものである場合はお詫び申し上げます。

私はGPSサービスのみを使用してユーザーの位置を取得しようとするAndroidアプリを開発しています(インターネットがなくても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のどこかに投稿したことを覚えていますが、現時点では見つかりません。したがって、既知のすべてのAndroidバージョンを使用して機能するWLocate.javaからGPS関連のコードを削除することをお勧めします。または、libwlocateを使用すると、探している機能がカプセル化されます。

于 2013-01-02T11:30:24.037 に答える