我正在開發一個原型示例應用程序。 我有GPS.java文件中實現LocationListener的GPS類。 我有一個MainActivity.java文件,我有一個GPS實例,我想將位置更新到文本字段中。我已經看到很多例子,其中活動本身實現了OnLocationChanged,使得它能夠訪問TextView字段。但是,我想要將文件外部化。我怎樣才能做到這一點?我是Java的新手。在javascript/AS3中,我會廣播一個事件並讓偵聽器識別並獲取值。我不完全確定我能做到這一點。如何在MainActivity.java中偵聽GPS更新並接收值?
回答
將參考傳遞給您的GPS類中的上下文(或更好的實現它在Service
)。接下來,註冊在一些自定義操作您的MainActivity類別的廣播接收器,例如com.mypackage.ACTION_RECEIVE_LOCATION.
在您的GPS類的onLocationChanged(Location location)
方法,當您收到適合您的目的,意圖作爲一個額外的廣播它的位置。
Intent toBroadcast = new Intent(com.mypackage.ACTION_RECEIVE_LOCATION);
toBroadcast.putExtra(MainActivity.EXTRA_LOCATION,location);
context.sendBroadcast(toBroadcast);
在您的MainActivity的註冊接收器中,接收廣播並處理該位置。
public class MainActivity extends Activity {
public static final String EXTRA_LOCATION = "EXTRA_LOCATION";
private class LocationUpdateReceiver extends BroadcastReceiver {
/**
* Receives broadcast from GPS class/service.
*/
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
Location location = (Location) extras.get(MainActivity.EXTRA_LOCATION);
//DO SOMETHING
...
}
}
在您的GPS類中創建一個interface
,然後在您的主要活動中設置偵聽器以偵聽回調。那麼當您的位置更改觸發與新位置的回調。
它會是這個樣子
GPS gps = new GPS();
gps.setLocationListener(new OnMyGpsLocationChanged(){
@Override
public void myLocationChanged(Location location){
//use the new location here
}
)};
的GPS類將有這樣的事情
public interface OnMyGpsLocationChanged{
public void myLocationChanged(Location location);
}
那麼當你的位置改變了你只想做
listener.myLocationChanged(location);
在onLocationChanged爲您的LocationManager
這很適合爲好。 – jagzviruz
在活動中使用具有偵聽器的位置管理器。其在此活動中的自動更新。
requestLocationUpdates(String,long,float,LocationListener);
http://developer.android.com/reference/android/location/LocationListener.html
我希望它會工作。
您可以爲前做同樣這裏還有:
在您的活動創建一個廣播接收器如下:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
<YourTextView>.setText(intent.getStringExtra("lat"));
}
}
中的onCreate一些自定義的意向登記活動的這個接收器過濾器:
MyReceiver mr=new MyReceiver();
this.registerReceiver(mr,new IntentFilter("my-event"));
in onPause:
this.unregisterReceiver(mr);
現在在onLocationChanged回調您的GPS類只需發送一個廣播:
public void onLocationChanged(Location location) {
Intent intent = new Intent();
intent.putExtra("lat",location.getLatitude());
intent.setAction("my-event");
sendBroadcast(intent);
}
- 1. Android - GPS偵聽器
- 2. esper和更新偵聽器併發
- 3. 如何使用rxandroid來收聽GPS位置更新
- 4. 設置超時GPS偵聽
- 5. 每5秒更新一次GPS偵聽器
- 6. 如何讓偵聽器偵聽TreeMap中的更改?
- 7. 如何開始接收GPS更快?
- 8. HTTP偵聽器接收文件
- 9. 如何在CoreData中偵聽特定的實體保存/更新
- 10. 如何使用CMMotionActivityManager並接收更新?
- 11. Lua Corona - 如何在滑動過程中偵聽widget.newScrollView偵聽器
- 12. 如何創建一個Bash偵聽器來接收PHP請求?
- 13. 如何使用串行事件偵聽器接收JSON對象?
- 14. 收聽GPS狀態變化
- 15. Hiberate保存更新偵聽程序並確定現場更改
- 16. C++/Tk:如何創建滑塊並接收其值更新?
- 17. 在偵聽阻止例程中使用「mediator」作爲接收器
- 18. Esper。無法在偵聽器中接收刪除事件
- 19. 如何更新chrome擴展中的onBeforeRequest事件偵聽器?
- 20. 如何在Android中收聽新短信
- 21. 如何更改preUpdate事件偵聽器中字段的值?
- 22. 偵聽DNS更改
- 23. 範圍值接收更新
- 24. 我做了gps位置偵聽器,但我的位置更新需要權限?
- 25. 在偵聽套接字上的Listening套接字上接受連接(並且不再偵聽)?
- 26. JQuery表單更新偵聽器
- 27. Apache Cassandra如何偵聽多個接口?
- 28. 如何驗證套接字偵聽器?
- 29. 如何在Oracle ADF中使用值更改偵聽器獲取SelectOneRadio值
- 30. 如何更改websphere偵聽器端口
這看起來像最簡單的實現,它的工作..感謝很多人。 – jagzviruz