我正在研究一些應該獲取當前位置的應用程序,並且在設備位於某個半徑之後應該顯示應用程序和一些消息。 我有幾個問題。 我試圖獲取位置使用Android:位置;活動和服務
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000*60*5, 50, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000*60*5, 50, locationListener);
addProximityAlert(LAT,LONG);
private void addProximityAlert(double latitude, double longitude)
{
Intent intent = new Intent(this.getApplicationContext(), SOME_CLASS_HERE);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Does this needed even if apllication/activity is alive?
PendingIntent proximityIntent = PendingIntent.getActivity(this.getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK); //and does this needed again?
locationManager.addProximityAlert(latitude, longitude, Radius, 0, proximityIntent);
}
如果我使用requestLocationUpdates然後GPS總是工作。這是浪費電池。例如,也許有一些方法可以暫停幾分鐘?我的意思是每5分鐘使用一次GPS,例如從一個位置到下一個位置。如何實現這一點?
如果SOME_CLASS_HERE - 某些活動類,那麼我怎麼知道這個事件是否確切地調用了它?因爲當ProximityAlert被觸發時,我也需要調用一些活動的功能。我怎麼能這樣做?
UPD:現在我只用活動(我還沒有在服務全部) 我想未來:
Intent intent = new Intent(getString(R.string.intent_message_location_fetched));
PendingIntent proximityIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
locationManager.addProximityAlert(LAT, LONG, RADIUS, 0, proximityIntent);
據我瞭解的意圖與行動R.在位置將在LAT LONG周圍後,應該觸發string.intent_message_location_fetched。
然後我試圖創建BroadcastReciver類:在MyActivity類
public class MyBroadcastReciver extends BroadcastReceiver {
MyActivity mainActivity;
public MyBroadcastReciver(MyActivity activity)
{
mainActivity = activity;
}
@Override
public void onReceive(Context context, Intent intent) {
mainActivity.ShowToast("Recived : " + intent.getAction());
}
}
和註冊reciver:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
myReciver = new MyBroadcastReciver(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(getString(R.string.intent_message_location_fetched));
registerReceiver(myReciver, intentFilter);
...
但是,當我在LAT LONG位置是沒有任何反應。怎麼了? 也許我應該在AndroidManifest.xml註冊reciver?但究竟如何?