我打算在單擊時啓動服務的活動中有一個按鈕。但是,需要啓用GPS才能完成其工作,因此如果禁用了GPS,我想禁用該按鈕。有沒有辦法讓GPS在啓用/禁用GPS時通知我的活動,以便我可以相應地啓用/禁用按鈕?在活動中捕獲系統事件
回答
此鏈接介紹如何創建一個位置監聽器: http://blog.doityourselfandroid.com/2010/12/25/understanding-locationlistener-android/
我的情況下,複製的重要組成部分向下跌破該網站宕機的未來。第一步是創建一個LocationListener:
private final class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location locFromGps) {
// called when the listener is notified with a location update from the GPS
}
@Override
public void onProviderDisabled(String provider) {
// called when the GPS provider is turned off (user turning off the GPS on the phone)
// Dim the button here!
}
@Override
public void onProviderEnabled(String provider) {
// called when the GPS provider is turned on (user turning on the GPS on the phone)
// Brighten the button here!
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// called when the status of the GPS provider changes
}
}
然後,您需要註冊該偵聽器。這也許應該走在你的onCreate()
LocationListener locationListener = new MyLocationListener();
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, this.locationListener);
在requestlocationupdates第二個和第三個參數你應該讓巨大的,所以你沒有得到locationupdates,因爲你真的不關心這些,唯一提供商啓用/禁用的變化。
請使用此代碼獲取GPS狀態。使用此代碼中的onResume活動
private LocationManager mLocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
boolean GPSprovider = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
,並根據GPSProvider您可以啓用和禁用按鈕。
這就是我的想法,但是當你拉下通知欄時(某些電話在通知欄上有GPS快捷方式並且可以通過這種方式啓用/禁用GPS),似乎'onResume'不會被解僱。 – zoran119
試試這個
final String GpsProvider = Settings.Secure.getString(
getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (GpsProvider.equals(""){
//No GPS
}else{
//GPS available
}
我知道如何檢測GPS是否打開...我希望我的活動通知GPS狀態變化 – zoran119
- 1. 捕獲系統事件
- 2. Joomla - 如何捕獲系統事件
- 3. 使用python捕獲系統事件
- 4. 如何在Python中捕獲系統暫停事件?
- 5. 如何在minko中捕獲和處理系統事件?
- 6. 捕獲系統默認編輯器關閉事件在Java中
- 7. 在Clojure捕獲系統/出
- 8. 在Linux平臺上捕獲文件系統系統調用
- 9. 在gtk中捕獲滾動事件#
- 10. 系統托盤是否有可以捕獲的事件?
- 11. 如何捕獲Windows操作系統事件? (C#)
- 12. 捕獲活動窗口更改事件中的問題
- 13. 如何在非活動選項卡上捕獲按鍵事件
- 14. 在ngTable中捕獲事件
- 15. 捕獲系統信息
- 16. 捕獲的Perl系統()
- 17. 捕獲和到C系統()
- 18. 如何在win7上捕獲文件打開事件操作系統
- 19. 活動窗口上是否有Windows系統事件更改?
- 20. pharo中的事件系統
- 21. 在webView中捕獲響應活動
- 22. 如何在多用戶系統中獲取UserHandle的活動
- 23. Boost事件系統
- 24. 跟蹤系統活動
- 25. 淨LuaInterface鉤系統/活動
- 26. 同步系統活動
- 27. 如何捕捉系統中出現的事件(android)?
- 28. 從操作系統獲取事件
- 29. 從系統獲取註銷事件
- 30. 如何捕獲每次操作系統或活動窗口繁忙
只是一個小小的(無關)問題...我如何從MyLocationListener中獲取對按鈕的引用來增亮/昏暗嗎? – zoran119
最簡單的方法是讓MyLocationListener成爲你活動中的一個內部類,這樣它就可以訪問你所有的活動方法和字段。要使其成爲內部類,只需將類代碼放入活動代碼中即可。 [本網站](http://viralpatel.net/blogs/inner-classes-in-java/)爲內部課程提供了一個體面的介紹,但如果您有任何問題,請告訴我。 –
謝謝你。我確實嘗試了內部課程,這很好。只是出於興趣,如果我想讓位置偵聽器成爲一個獨立的類(因爲它也可以從服務內部使用),那麼獲取對按鈕的引用的方法是什麼?共享監聽器還是隻爲服務創建內部類是一個好主意? – zoran119