2012-04-17 26 views
0

現在の場所を検索するコードですが、検索ボタンを押しても画面に何も表示されません。
私はadbをリセットし、エミュレータコントロールから手動でデータを送信しようとしました。しかし、エミュレーターコントロールを使用してデータを送信すると、エミュレーターは再起動しますが、ホーム画面は表示されません。
助けてください。前もって感謝します。あなたのコードでエミュレータ画面にメッセージが表示されない

public class LbsGeocodingActivity extends Activity { 

    private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters 

    private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds 

    protected LocationManager locationManager; 

    protected Button retrieveLocationButton; 

    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     retrieveLocationButton = (Button) findViewById(R.id.retrieve_location_button); 

     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     locationManager.requestLocationUpdates(
       LocationManager.GPS_PROVIDER, 
       MINIMUM_TIME_BETWEEN_UPDATES, 
       MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
       new MyLocationListener() 

     ); 
    retrieveLocationButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       showCurrentLocation(); 
      } 
    });  

    } 

    protected void showCurrentLocation() { 
     Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     if (location != null) { 
      String message = String.format(
        "Current Location \n Longitude: %1$s \n Latitude: %2$s", 
        location.getLongitude(), location.getLatitude() 
      ); 
      Toast.makeText(LbsGeocodingActivity.this, message, 
        Toast.LENGTH_LONG).show(); 
     } 
    } 

    private class MyLocationListener implements LocationListener { 
     public void onLocationChanged(Location location) { 
      String message = String.format(
        "New Location \n Longitude: %1$s \n Latitude: %2$s", 
        location.getLongitude(), location.getLatitude() 
      ); 

      Toast.makeText(LbsGeocodingActivity.this, message, Toast.LENGTH_LONG).show(); 
     } 

     public void onStatusChanged(String s, int i, Bundle b) { 
      Toast.makeText(LbsGeocodingActivity.this, "Provider status changed", 
        Toast.LENGTH_LONG).show(); 
     } 

     public void onProviderDisabled(String s) { 
      Toast.makeText(LbsGeocodingActivity.this, 
        "Provider disabled by the user. GPS turned off", 
        Toast.LENGTH_LONG).show(); 
     } 

     public void onProviderEnabled(String s) { 
      Toast.makeText(LbsGeocodingActivity.this, 
        "Provider enabled by the user. GPS turned on", 
        Toast.LENGTH_LONG).show(); 
     } 

    } 
} 

答えて

1

あなたは現在の場所を(これはあなたがemulator controlから手動であなたの場所をプッシュする必要があるためである)を受信されない場合があります。

showCurrentLocation()にもほかのケースがあり、以下のようにロケーションオブジェクトがnullかどうかをチェックしてください。

protected void showCurrentLocation() { 
    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    if (location != null) { 
     String message = String.format(
       "Current Location \n Longitude: %1$s \n Latitude: %2$s", 
       location.getLongitude(), location.getLatitude() 
     ); 

    Toast.makeText(LbsGeocodingActivity.this, message, 
       Toast.LENGTH_LONG).show(); 
    }else{ 
     Toast.makeText(LbsGeocodingActivity.this, "location is null", 
       Toast.LENGTH_LONG).show(); 
    } 
} 
+0

あなたは、それは「場所がnullである」ここで、その後probmは、GPSは、私はエミュレータ上 –

+0

は文句を言わない仕事のGPS考えて動作していない、ですが、あなたはエミュレータ制御を持っている権利を見せていますあなたのラットを長時間手動でテストするために手動でプッシュすることができます –

+0

エミュレータコントロールのリンクを追加 –

0

私たちは最初に位置センサーを使用しようとしたときに、同様の問題を抱えていました。 GPSから最良の結果を得るためには、2つのことが最も役立ちます。

エミュレータでは、Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);は、強制的に強制終了します。

そして最も重要です。 telnet経由でgpsデータを入力する方がはるかに安定しています。 telnet localhost 5554)ポートはエミュレータウィンドウのタイトルにあります。新しいGPSの修正のためのコマンドは次のとおりです。geo fix lat lng

関連する問題