こんにちは私はこれを試したメニュー項目をクリックして位置更新の頻度を変更する方法を知りたいと思っていましたが、位置更新を取得していないため、ここで行っていることはうまくいかないようです(以下にコードを追加)選択した周波数。頻度を変更できるかどうか、そして実装するための最良の方法を知りたいだけです。サブメニュー項目をクリックして、場所を更新できるようにしたい:1回だけ、1秒ごと、または2分ごと。アイテムの選択は最後です
私がしていることが正しいかどうか、そして私がそれをどのように行うことができるかを私に知らせないかどうか、誰かが私にplzを教えてもらえますか?前もって感謝します
コードは次のとおりです。
import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import android.content.Intent;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class MapLocator extends MapActivity implements LocationListener {
/** Called when the activity is first created. */
private LocationManager lm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
mapView = (MapView) this.findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
mc = mapView.getController();
mc.setZoom(14);
int FIVE_MINUTES = 5 /*Minutes*/ * 60 /*sec per min*/ * 1000 /*ms per sec*/;
lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, FIVE_MINUTES, 0, this);
Drawable drawable= this.getResources().getDrawable(R.drawable.loc_seven);
ListItimizedOverlay itemizedoverlay = new ListItimizedOverlay(drawable);
GeoPoint p = new GeoPoint(33000000,84000000);
OverlayItem overlayitem = new OverlayItem(p, "Hello from", "Tahiti");
itemizedoverlay.addOverlayItem(overlayitem);
mapView.getOverlays().add(itemizedoverlay);
}
@Override
protected boolean isRouteDisplayed()
{
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_S)
{
mapView.setSatellite(!mapView.isSatellite());
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onLocationChanged(Location location)
{
Log.d("msg","1");
lat = location.getLatitude();
lng = location.getLongitude();
Toast.makeText(
getBaseContext(),
"Location change to : Latitude = " + lat + " Longitude = "
+ lng, Toast.LENGTH_SHORT).show();
GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
mc.animateTo(p);
mc.setCenter(p);
mc.setZoom(14);
Drawable drawable= this.getResources().getDrawable(R.drawable.loc_seven);
ListItimizedOverlay itemizedoverlay = new ListItimizedOverlay(drawable);
OverlayItem overlayitem = new OverlayItem(p, "", "");
itemizedoverlay= (ListItimizedOverlay ) mapView.getOverlays().get(0);
itemizedoverlay.clear();
itemizedoverlay.addOverlayItem(overlayitem);
mapView.getOverlays().add(itemizedoverlay);
}
@Override
public void onProviderDisabled(String provider)
{
if(provider.equals("LocationManager.GPS_PROVIDER")){
Toast.makeText(MapLocator.this, "GPS is off", Toast.LENGTH_LONG).show();
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
}
@Override
public void onProviderEnabled(String provider)
{
Log.v("main", "Enabled");
Toast.makeText(MapLocator.this, "GPS Enabled", Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
@Override
public void onPause() {
super.onPause();
lm.removeUpdates(this);
}
//Méthode qui se déclenchera lorsque vous appuierez sur le bouton menu du téléphone
public boolean onCreateOptionsMenu(Menu menu2) {
//Création d'un MenuInflater qui va permettre d'instancier un Menu XML en un objet Menu
MenuInflater inflater = getMenuInflater();
//Instanciation du menu XML spécifier en un objet Menu
inflater.inflate(R.layout.menumap, menu2);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
//On regarde quel item a été cliqué grâce à son id et on déclenche une action
switch (item.getItemId()) {
case R.id.refresh:
return true;
case R.id.refreshonce:
this.lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, this, null);
Toast.makeText(MapLocator.this, "refreshnow", Toast.LENGTH_LONG).show();
return true;
case R.id.refresheachsec:
this.lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Toast.makeText(MapLocator.this, "refresh2", Toast.LENGTH_LONG).show();
return true;
case R.id.refresheach2min:
this.lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2*60*1000, 0, this);
Toast.makeText(MapLocator.this, "refresh2", Toast.LENGTH_LONG).show();
return true;
case R.id.refresheach5min:
this.lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5*60*1000, 0, this);
Toast.makeText(MapLocator.this, "refresh5", Toast.LENGTH_LONG).show();
return true;
case R.id.quitter:
finish();
return true;
}