0

gps service.bt を使用して位置情報を取得するためのサンプル コードを試しています。以下は私のコードです.-

   public class MainActivity extends Activity implements LocationListener{

    Location mLocation;
    LocationManager mManager;
    LocationListener mlistener;
    Geocoder mcoder;
    Context context;
    TextView txtLat;
    String lat;
    String provider;
    protected String latitude,longitude; 
    protected boolean gps_enabled,network_enabled;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    mManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    txtLat = (TextView) findViewById(R.id.tv);
    }

    public void getMyLocation(){

            String addressString = "";

        final Geocoder gc = new Geocoder(this, Locale.getDefault());

        try
        {
            final List<Address> addresses = gc.getFromLocation(18.5203, 73.8567, 4);
            final StringBuilder sb = new StringBuilder();
            System.out.println("location..."+sb);
            if ( addresses.size() > 0 )
            {
                final Address address = addresses.get(0);
                for ( int i = 0; i < address.getMaxAddressLineIndex(); i++ )
                {
                    sb.append(address.getAddressLine(i)).append("\n");
                }
                sb.append(address.getLocality()).append("\n");
                sb.append(address.getPostalCode()).append("\n");
                sb.append(address.getCountryName());
            }
            addressString = sb.toString();
        }
        catch ( final IOException e )
        {
        }

    txtLat.setText("Your Current Position is:\n" +
             "\n" + addressString);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public void onLocationChanged(Location location) {
    getMyLocation();
}

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

 }
4

2 に答える 2

0

コードに若干の変更が必要なだけです。

  • リスナーのすべてのメソッドを実装して、プロバイダーが利用可能かどうか、デバイスに組み込まれているかどうか、とにかく位置情報の更新を期待できるかどうかを理解する必要があります。
  • ハードコーディングされた緯度と経度でをgetMyLocation()呼び出します。Geocoder.getFromLocation()これはデバッグ目的ですか?
  • 次にSystem.println()、新しく作成された空の StringBuilder があります。何かを印刷したい場合は、 を使用することをお勧めしますLog.d()
  • 最後に、他のすべてが機能するが、テキストビューにアドレスが表示されない場合は、アドレスを試してくださいToast。失敗する可能性は低くなりますが、メッセージが 1 秒後に消えるので、画面を見つめる必要があります。

私の推測では、エミュレーターに GPS が設定されていないか、更新が取得されていない可能性があります。

于 2013-09-10T05:55:02.490 に答える