4

利用可能かどうかを確認する方法LocationManager.NETWORK_PROVIDERは?

を有効にしましAndroidManifest.xmlたが、コードでそれを確認する必要があり、使用できない場合はGPS_PROVIDER。誰かが私を助けることができますか?

4

3 に答える 3

30

LocationManager.NETWORK_PROVIDERが使用可能かどうかを確認するにはどうすればよいですか?

このパートを使用して、ネットワークプロバイダーが有効になっているかどうかを確認します。

network_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

これはブール値を返します:

true-有効になっている場合。

false-有効になっていません。

さらに、GPSプロバイダーが有効になっているかどうかを確認します。

gps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

これはブール値を返します:

true-有効になっている場合。

false-有効になっていません。

ユーザーにネットワークまたはGPSプロバイダーを有効にする場合は、次のコードを使用してユーザーを設定ページにリダイレクトします。

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
于 2011-10-06T11:03:51.803 に答える
3

ここではいつも少し奇妙なので;=)

ネットワークプロバイダーの可用性を確認するために、独自のコードを作成しました。

これをonCreate()メソッドに入れます。

checkIfNetworkLocationAvailable(mContext_);

そしてこれはあなたのコードのどこかで;=)

/**
 * checks if NETWORK LOCATION PROVIDER is available
 */
private void checkIfNetworkLocationAvailable(Context context) {

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    boolean networkLocationEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

    if(!networkLocationEnabled){
        //show dialog to allow user to enable location settings
        AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        dialog.setTitle(mContext_.getString(R.string.txtTip));
        dialog.setMessage(R.string.msgLocationServicesDisabled);

        dialog.setPositiveButton(mContext_.getString(R.string.txtYes), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
            }
        });

        dialog.setNegativeButton(mContext_.getString(R.string.txtNo), new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                //nothing to do
            }
        });

        dialog.show();
    }

}

楽しんでください、これが誰かに役立つことを願っています:)まさにそのコードを検索していました:=)

乾杯 :)

于 2012-02-17T08:41:43.023 に答える
3

ネットワークプロバイダーやGPSプロバイダーを使用して位置情報を取得するためのコードは次のとおりです

private Location getLocation() {            
        Location gpslocation = null;
        Location networkLocation = null;

        if(locMan==null){
          locMan = (LocationManager) getApplicationContext() .getSystemService(Context.LOCATION_SERVICE);
        }
        try {
            if(locMan.isProviderEnabled(LocationManager.GPS_PROVIDER)){
                locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000, 1, gpsListener);
                gpslocation = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);

            }
            if(locMan.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
                locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 1, gpsListener);
                networkLocation = locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
            }
        } catch (IllegalArgumentException e) {
            //Log.e(ErrorCode.ILLEGALARGUMENTERROR, e.toString());
            Log.e("error", e.toString());
        }
        if(gpslocation==null && networkLocation==null)
            return null;

        if(gpslocation!=null && networkLocation!=null){
            if(gpslocation.getTime() < networkLocation.getTime()){
                gpslocation = null;
                return networkLocation;
            }else{
                networkLocation = null;
                return gpslocation;
            }
        }
        if (gpslocation == null) {
            return networkLocation;
        }
        if (networkLocation == null) {
            return gpslocation;
        }
        return null;
    }

ここでは、GPSプロバイダーが有効になっているかどうかを確認し、gpsLocationに場所を取得します。ネットワークプロバイダーを使用して場所を取得している場合は、場所オブジェクトが返す速度を確認します。

プロバイダーの1つが有効になっている場合、そのロケーションオブジェクトが返されます

于 2011-10-06T10:41:57.330 に答える