2011-12-07 4 views
1

GPSを使用してプログラムを作成しました。緯度と経度は約8マイルです。GPSを使用している私のAndroidプログラムは非常に間違っています

私はそれが私の中にいると思われるかもしれませんが、私は私の電話でGoogleマップを使用すると、私の家に私を示しています。

これはどういう考えですか?

以下のコード:

public class Clue extends Activity { 

public static double latitude; 
public static double longitude; 
LocationManager lm; 
LocationListener ll; 
Location location; 

     /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.blah); 

    Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 

    lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    ll = new MyLocationListener()} 

private boolean getLoc() { 
location = getLocation(); 

    longitude = location.getLongitude(); 
    latitude = location.getLatitude(); 
return inCorrectPlace(params); 
} 


    private Location getLocation() { 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 
    return lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
} 
} 

私はすべてのヘルプは理解されるであろう、無関係なコードを取り除かれています。

+0

を参照してください?時間をチェックできますか? – chiuki

答えて

3

あなたが作っている間違いは、あなたが瞬時に正確な場所の修正をリクエストできると考えていることです。 getLastKnownLocation()を呼び出すと、かなり古い場所になる可能性があります。最初に電話に位置情報を取得しようとするように指示する必要があります。これには時間がかかりますので、非同期に位置更新を受信します。

あなたがしなければならないことはrequestLocationUpdates()に電話してからLocationListenerクラスのonLocationChanged()ハンドラのアップデートを受信して​​ください。位置の更新が必ずしもすぐに受信されるとは限りません。数秒から数分かかることがあります。

はたぶん最後の既知の場所は非常に古いですアンドロイドのdevのガイドhttp://developer.android.com/guide/topics/location/obtaining-user-location.html

2

getLastKnownLocationを信頼できるものに本当に頼ることはできません。期限切れ、不正確、またはnullの可能性があります。

あなたがすべきことは、積極的に修正を得るためにrequestLocationUpdatesを使用することです。

Googleマップで現在地が固定されているのは、最後のGPS修正をチェックしているだけで、ネットワークプロバイダを使用している可能性があります。

関連する問題