0

このコードは GPS に対して完全に機能します。

public class GetLocation extends Activity implements LocationListener {

    LocationManager lm;
    TextView tv;  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_get_mission);


     // Acquire a reference to the system Location Manager
        tv= (TextView)findViewById(R.id.locationOutput);

        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this);



    }
    public void onLocationChanged(Location arg0) {
        String lat = String.valueOf(arg0.getLatitude());
        String lon = String.valueOf(arg0.getLongitude());
        Log.e("GPS", "location changed: lat="+lat+", lon="+lon);
        tv.setText("lat="+lat+", lon="+lon);
    }
    public void onProviderDisabled(String arg0) {
        Log.e("GPS", "provider disabled " + arg0);
    }
    public void onProviderEnabled(String arg0) {
        Log.e("GPS", "provider enabled " + arg0);
    }
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
        Log.e("GPS", "status changed to " + arg0 + " [" + arg1 + "]");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_get_mission, menu);
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

ただし、GPSではなくネットワークから位置を取得したい。だから私は変更します:

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this);

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

それから私は何も得ません。これはコードのエラーによるものですか、それとも GPS の場合ほど頻繁に場所が変更されないため、onLocationChange が呼び出されないためですか? この時点で場所を変更せずに表示したい.getLastKnownLocation場合は、アプリの起動時に更新されるように、どこでこれを呼び出すことができますか?

4

2 に答える 2

1

原因は、GPS モードよりも多く移動する必要があることです。数キロ移動してみて、それでも位置情報が更新されないかどうかを確認してください。

minTime を 6000 ミリ秒に設定してみてください。メートルは 10 以上に設定します。
ネットワーク サービスを有効にする必要があるかどうかを確認します。

于 2013-02-27T17:03:43.450 に答える
0

LocationManager.isProviderEnabled() を使用して、ネットワーク プロバイダーが有効/無効になっているかどうかを確認しましたか。

network_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

無効になっている場合:

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
于 2013-02-27T17:23:24.830 に答える