我被鏈接到您的圖書館(再一次,感謝和出色的工作)。CWAC LocationPoller - 廣播沒有收到
我一直在嘗試過去兩個小時的問題是什麼,但我失敗了。
這裏的AlarmManager在我的登錄屏幕代碼:
Intent i = new Intent(con, LocationPoller.class);
i.putExtra(LocationPoller.EXTRA_INTENT, new Intent(con,
LocationReceiver.class));
i.putExtra(LocationPoller.EXTRA_PROVIDER,
LocationManager.NETWORK_PROVIDER);
gps = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(con, 0, i, PendingIntent.FLAG_NO_CREATE);
gps.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(),
10 * 1000, pi);
Log.d("Service: ",
"GPS Service started and scheduled with AlarmManager");
這裏是我自己創建的類(而不是一個從您的演示,儘管類似):
public class LocationReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
Location loc = (Location) b.get(LocationPoller.EXTRA_LOCATION);
String msg;
if (loc == null)
{
loc = (Location) b.get(LocationPoller.EXTRA_LASTKNOWN);
if (loc == null)
{
msg = intent.getStringExtra(LocationPoller.EXTRA_ERROR);
}
else
{
msg = "TIMEOUT, lastKnown=" + loc.toString();
}
}
else
{
msg = loc.toString();
}
if (msg == null)
{
msg = "Invalid broadcast received!";
}
Log.d("GPS Broadcast: ", "Location: " + msg);
}
}
什麼也沒有發生。我假設這是因爲我沒有在我的logcat中看到任何信息。加上PollerThread(如果這是正確的術語),當我看着調試視圖時,它們一直在堆積,好像它們都在等待某些東西但不發送任何廣播。
我在做什麼錯?通過網絡確定位置不應該花太多時間,如果它?即使這是問題,我應該得到一些反饋..
這裏是我的清單的應用標籤的條目:
<receiver android:name="com.commonsware.cwac.locpoll.LocationPoller" />
<receiver android:name=".LocationReceiver" />
<service android:name="com.commonsware.cwac.locpoll.LocationPollerService" />
我從這裏的另一個人那裏得到了一些幫助,他們基本上從您的庫中直接導入文件到項目中並使用它們。它的工作現在很好。我認爲問題出在我清單中的接收器聲明(與包相關的東西)。 現在談談你的觀點......我得到一個驅動程序的位置(它被髮送到桌面應用程序要在地圖上顯示它的服務器)。我選擇你的代碼/庫是因爲你編寫了優秀的代碼!我是Android開發的新手,所以我並不總是知道要尋找什麼,要避免什麼,要處理什麼等。 我將把時間更改爲40秒。 – Asim
嗯,你能告訴我爲了讓你的服務自動選擇最好的提供者,我需要做些什麼改變?我的應用程序將使用戶啓用GPS,但假設他無法獲得鎖定,我想也可以使用網絡提供商。 – Asim
@Asim:您需要修改'LocationPollerService'上的'requestLocation()'(以允許'EXTRA_PROVIDER'爲'String'或Criteria')和'onPreExecute()'在其''PollerThread'內部類(使用不同的'requestLocationUpdates()'版本,該版本採用'Criteria'而不是提供者名稱)。 – CommonsWare