私はあなたのライブラリにリンクされていました(もう一度、ありがとう、そして素晴らしい仕事です)。
過去 2 時間、何が問題なのかを試してみましたが、失敗しました。
ログイン画面コードの 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" />