안드로이드 개발 질문/답변
(글 수 45,052)
거리를 재서 일정 거리 이하가 되면 Toast 실행되게 하고 싶은데 왜 안되는지 모르겠습니다.
오류는 없구요.
제가 한 코딩으로는 거리가 멀든 가깝든 메시지가 계속 나와야 하는거 아닌가요?
아님 그 거리 안에 들어가야만 메시지가 나오나요?
왜 안되는지 아시는분 제발 좀 가르쳐 주세요
mapp.java
import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView;
public class mapp extends MapActivity implements LocationListener { MapController mapControl; MapView map; LocationManager locationMgr = null; PendingIntent mPending; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); map = (MapView) findViewById(R.id.map_view); mapControl = map.getController(); locationMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.NO_REQUIREMENT); criteria.setPowerRequirement(Criteria.NO_REQUIREMENT); locationMgr.requestLocationUpdates("gps", 1000, 0, mapp.this); Intent intent = new Intent(this, message.class); mPending = PendingIntent.getBroadcast(this, 0, intent, 0); } @Override public void onLocationChanged(Location location) { double lat = location.getLatitude(); double lon = location.getLongitude(); GeoPoint newPoint = new GeoPoint((int)(lat * 1E6), (int)(lon*1E6)); mapControl.animateTo(newPoint); mapControl.setZoom(18); MapView.LayoutParams mapMarkerParams = new MapView.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, newPoint, MapView.LayoutParams.TOP_LEFT); ImageView mapMarker = new ImageView(getApplicationContext()); mapMarker.setImageResource(R.drawable.gmarker); map.addView(mapMarker, mapMarkerParams); }
@Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } @Override public void onProviderEnabled(String provider) { super.onResume(); locationMgr.addProximityAlert(35178456, 126909299, 500, -1, mPending); } @Override public void onProviderDisabled(String provider) { super.onPause(); locationMgr.removeProximityAlert(mPending); }
@Override public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
message.class
package test.mapp;
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.location.LocationManager; import android.widget.Toast;
public class message extends BroadcastReceiver { public void onReceive(Context context, Intent intent){ boolean bEnter = intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, true); Toast.makeText(context, bEnter ? "거리 가까움" : "거리 멈", Toast.LENGTH_LONG).show(); } }