0

Androidアプリで、GPSまたはネットワークを介して地理データを取得するコードを作成しました。どちらを使用してデータを取得できますか。ここに私のコードがあります、

public boolean getLocation(Context context, LocationResult result)
{
    boolean gps_enabled=false;
    LocationManager lm;
    boolean network_enabled=false; 
    this.context = context;
    locationResult=result;
    Toast.makeText( context,"getLocation()",Toast.LENGTH_SHORT).show();
    if(lm == null)
        lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    try
    {
        gps_enabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    }
    catch(Exception ex){}

    try
    {
        network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }
    catch(Exception ex){}


    if(!gps_enabled && !network_enabled)
    {
        Toast.makeText(context, "GPS & Network disabled", Toast.LENGTH_SHORT).show();
        return false;
    }
}

LocationManagerGPS とネットワークがオンになっているかどうかを確認します。

GPS がオンの場合、ブール値 gps_enabled に「true」が割り当てられます。

しかし、ネットワークでは、HTC Desire Android デバイスで 2G インターネット アクセスを有効にし、モバイル ネットワークでスイッチをオンにしました。

network_enabledオン状態のネットワークでも「false」に割り当てられるブール変数。

デバイスの設定を変更したいですか?または私のコードに間違いはありますか?

4

1 に答える 1

1

それは可用性に依存します:

Location net_loc=null, gps_loc=null;
if(gps_enabled)
gps_loc=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(network_enabled)
net_loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

NETWORK_PROVIDER:ネットワーク ロケーション プロバイダーの名前。このプロバイダーは、セル タワーと WiFi アクセス ポイントの可用性に基づいて場所を決定します。結果は、ネットワーク ルックアップによって取得されます。アクセス許可 android.permission.ACCESS_COARSE_LOCATION または android.permission.ACCESS_FINE_LOCATION のいずれかが必要です。

GPS_PROVIDER : GPS ロケーション プロバイダーの名前。このプロバイダーは、衛星を使用して位置を特定します。条件によっては、このプロバイダーが場所の修正を返すまでに時間がかかる場合があります。アクセス許可 android.permission.ACCESS_FINE_LOCATION が必要です。

このリンクを参照してください: http://developer.android.com/reference/android/location/LocationManager.html#getBestProvider%28android.location.Criteria,%20boolean%29

于 2012-10-12T11:39:55.140 に答える