私はイベントを追跡するためにジオフェンスを使用するアプリケーションを作成しています。アラームマネージャを作成したいと思います。アラームマネージャは毎日起動し、データベースから取った日常のイベントにジオフェンスを追加します。ジオフェンスを使用するためのアクティビティを作成する必要があり、このアクティビティではBroadcastReceiverを配置しました。それはまったく動かないようです。私はこの洞察から何のログも得ていない。なぜか分かりませんが、マニフェストではsthが間違っていると思います。私は誰かがこれを見ることに感謝します。アラームマネージャが動作しません
クラスMyScheduler:BroadcastReceiverと
public class MyScheduler extends Activity {
protected static final String TAG = "MyScheduler";
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate");
super.onCreate(savedInstanceState);
setRecurringAlarm(this);
}
private void setRecurringAlarm(Context context) {
Log.i(TAG, "setReccuringAlarm");
Calendar updateTime = Calendar.getInstance();
updateTime.setTimeZone(TimeZone.getTimeZone("GMT+1:00"));
updateTime.set(Calendar.HOUR_OF_DAY, 15);
updateTime.set(Calendar.MINUTE, 10);
Intent intent = new Intent(context, Tasks.class);
PendingIntent recurringDownload = PendingIntent.getBroadcast(context,
0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarms = (AlarmManager) this.getSystemService(
Context.ALARM_SERVICE);
alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
updateTime.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, recurringDownload);
}
}
タスク:
public class Tasks extends Activity
implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, ResultCallback<Status> {
Context context;
final public static String ONE_TIME = "onetime";
EventDAO eventDAO;
protected static final String TAG = "MyGeofence";
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String today = dateFormat.format(calendar.getTime());
List<Event> eventsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
mGeofenceList = new ArrayList<Geofence>();
mGeofencePendingIntent = null;
mSharedPreferences = getSharedPreferences(Constants.SHARED_PREFERENCES_NAME,
MODE_PRIVATE);
mGeofencesAdded = mSharedPreferences.getBoolean(Constants.GEOFENCES_ADDED_KEY, false);
buildGoogleApiClient();
}
/// geofences mathods, not needed
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(ONE_TIME, "Executed Tasks.Java File");
//Some task here for every morning
eventDAO = new EventDAO(context);
eventsList = eventDAO.getComingEvents(today, today);
for(Event event : eventsList){
String place = event.getEndLocalisationX();
Log.i(ONE_TIME, place);
Double lat = Double.parseDouble(event.getEndLocalisationY());
Double lng = Double.parseDouble(event.getEndLocalisationX());
MY_PLACES.put(place, new LatLng(lat, lng));
}
populateGeofenceList();
addGeofences();
}
};
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcastReceiver);
}
とマニフェストの一部:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<activity android:name=".MyScheduler"/>
<activity android:name=".Tasks"/>
<receiver android:name=".Tasks" >
</receiver>
私はジオフェンスとすべてがうまく機能することを、追加することができますので、私は上記のジオファンスコードを読んだほうが簡単なので入れなかった。誰かが手伝ってくれることを願っています! :)
感謝回答。これが私が最初に試したことですが、放送受信機での他の活動からのジオフェンシング方法の使い方はわかりませんでした。私はそれが非常にばかげた質問かもしれないことを知っていますが、私はJavaでの経験がありません。だから私はその活動を放送する方法を見つけたのです。 – Natalia
簡単に言えば、それはうまくいかないでしょう。私はあなたが「他の活動からのジオフェンシング方法を使用する」ことを意味するものではありませんが、「活性化された毎日を構成し、(データーベースから取られた)日常の出来事のためのジオフェンスを追加する」機能はすべてスタンドアロンの放送受信機になければなりません。 –
ねえ、私は馬鹿だった、ありがとう。なぜこの問題があったのか分かりません。どうもありがとう ;) – Natalia