AlarmManager setRepeating scheint nicht genau zu triggern

  • Antworten:10
Bernd Roth
  • Forum-Beiträge: 98

05.03.2014, 16:36:22 via Website

Hallo Forum!

Ich habe mir eine App geschrieben, wo alle 60 Minuten ein AlarmManager getriggert wird.
Es läuft auch alles soweit, jedoch scheint es ein Problem mit der Methode setRepeating zu geben, denn diese läuft mit der Zeit immer hinterher.

Bsp:

Für 14:32 ist ein Alarmmanager geplant, wird auch so getriggert, in 60 Minuten sollte der Nächste gestartet werden.
Jedoch wird der Nächste erst um 15:35 plötzlich getriggert und der Nächste in 60 Minuten dann erst wieder um 16:38.

Wie kann es zustande kommen, dass es immer wieder ein paar Minuten Verschiebung gibt, obwohl ich intervalMillis auf 60 Minuten gesetzt habe?

Ich weiss, dass mit der API 19 setRepeating == setInexactRepeating ist, deswegen habe ich als maxtargetSDK = 15 genommen.

Weiteres, der AlarmManager scheint halbwegs genau zu laufen, wenn das Handy eingeschalten ist.
Kann es vll. daran liegen und wenn ja, gibt es eine Möglichkeit den Alarmmanager punktgenau zu starten?

Danke für jede Hilfe schon einmal!

lG

Antworten
Bernd Roth
  • Forum-Beiträge: 98

05.03.2014, 23:51:25 via Website

Ich antworte mir einmal selber.
Das Problem liegt angeblich darin, dass ich ja das Handy mittels dem Power Button abschalte, also sozusagen "schlafen" lege.
Natürlich habe ich auch deswegen einen PowerManager in der onReceive Methode implementiert, damit das Handy wieder aufgeweckt wird, aber irgendwie funktioniert das nicht und ich finde auch keine Lösung dazu!

Hier mein ganzer Code dazu:

1package at.parkschein.parkschein;
2
3import java.util.Calendar;
4import java.util.regex.Matcher;
5import java.util.regex.Pattern;
6import android.view.WindowManager;
7import android.app.AlarmManager;
8import android.app.PendingIntent;
9import android.content.BroadcastReceiver;
10import android.content.Context;
11import android.content.Intent;
12import android.content.SharedPreferences;
13import android.content.SharedPreferences.Editor;
14import android.database.Cursor;
15import android.net.Uri;
16import android.os.Bundle;
17import android.os.PowerManager;
18import android.telephony.SmsManager;
19import android.widget.Toast;
20
21public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
22
23 final public String ONE_TIME = "onetime";
24 final public String SECOND = "second";
25 SharedPreferences sp, kennzeichen, telefonnummer, business;
26 Editor e;
27 String eigeneTelefonnummer = "xxx";
28 WindowManager.LayoutParams params;
29
30 @Override
31 public void onReceive(Context context, Intent intent) {
32 params = new WindowManager.LayoutParams(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
33 WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
34 WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
35 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
36 PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
37 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
38 //Acquire the lock
39 wl.acquire();
40
41 //Do the processing
42 Bundle extras = intent.getExtras();
43 int requestCode = intent.getExtras().getInt("requestCode");
44
45 //checkbox business
46 SharedPreferences prefs = context.getSharedPreferences("business", Context.MODE_PRIVATE);
47 boolean checkboxChecked = prefs.getBoolean("business", false);
48 String valueBusiness;
49 if(checkboxChecked == true)
50 valueBusiness = "geticket";
51 else
52 valueBusiness = "";
53
54 //checkbox autoLoad, siehe Fortsetzung fuer SMS
55 SharedPreferences prefsAutoLoad = context.getSharedPreferences("autoLoad", Context.MODE_PRIVATE);
56 boolean checkboxAutoLoadChecked = prefsAutoLoad.getBoolean("autoLoad", false);
57
58 //welche Stadt
59 SharedPreferences wappen = context.getSharedPreferences("stadt", Context.MODE_PRIVATE);
60 String Wappenchosen = wappen.getString("stadt", "");
61 if(Wappenchosen.equals("A Bregenz") || Wappenchosen.equals("AA Bregenz") || Wappenchosen.equals("B Bregenz") || Wappenchosen.equals("BB Bregenz"))
62 Wappenchosen = "Bregenz";
63 else if(Wappenchosen.equals("A Eisenstadt") || Wappenchosen.equals("B Eisenstadt") || Wappenchosen.equals("C Eisenstadt"))
64 Wappenchosen = "Eisenstadt";
65 else if(Wappenchosen.equals("A Klagenfurt") || Wappenchosen.equals("B Klagenfurt"))
66 Wappenchosen = "Klagenfurt";
67
68 /* zeitbuchung */
69 sp = context.getSharedPreferences("a", 0);
70 String value = sp.getString("a", "");
71
72 /* kenzeichen */
73 kennzeichen = context.getSharedPreferences("kennzeichen", 1);
74 String valueKennzeichen = kennzeichen.getString("kennzeichen", "");
75
76 /* Telefonnummer */
77 telefonnummer = context.getSharedPreferences("handyparken", 1);
78 String valueTelefonnummer = telefonnummer.getString("handyparken", "");
79
80 if(valueTelefonnummer.length() == 0)
81 valueTelefonnummer = "082820200";
82
83 SmsManager smsManager = SmsManager.getDefault();
84
85 // Fortsetzung AutoLoad
86 boolean sendSMSForAutoLoad = false;
87 if(checkboxAutoLoadChecked == true){
88 sendSMSForAutoLoad = readSMS(context);
89 if(sendSMSForAutoLoad == true)
90 smsManager.sendTextMessage(valueTelefonnummer, null, "JA", null, null);
91 }
92
93 if (extras != null && requestCode == 0){//wiederholung
94 //Toast.makeText(context, "0", Toast.LENGTH_LONG).show();
95 if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket") && Wappenchosen != null)//kennzeichen + business + stadt
96 smsManager.sendTextMessage(valueTelefonnummer, null, "B15 " + Wappenchosen + "*" + valueKennzeichen, null, null);
97 else if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket"))//kennzeichen + business
98 smsManager.sendTextMessage(valueTelefonnummer, null, "B15" + "*" + valueKennzeichen, null, null);//funkt
99 else if(valueKennzeichen.length() > 0 && Wappenchosen != null)//kennzeichen + stadt
100 smsManager.sendTextMessage(valueTelefonnummer, null, "15 " + Wappenchosen + "*" + valueKennzeichen, null, null);
101 else if(valueKennzeichen.length() > 0)//kennzeichen
102 smsManager.sendTextMessage(valueTelefonnummer, null, "15" + "*" + valueKennzeichen, null, null);//funkt
103 else if(valueBusiness.equals("geticket") && Wappenchosen != null)
104 smsManager.sendTextMessage(valueTelefonnummer, null, "B15 " + Wappenchosen, null, null);//funkt
105 else if(valueKennzeichen.length() == 0 && Wappenchosen != null)//kein Kennzeichen aber Stadt
106 smsManager.sendTextMessage(valueTelefonnummer, null, "15 " + Wappenchosen, null, null);//funkt
107 else if(valueBusiness.equals("geticket"))//business
108 smsManager.sendTextMessage(valueTelefonnummer, null, "B15", null, null);//funkt
109 else if(valueBusiness.equals(""))//business ausgeschalten
110 smsManager.sendTextMessage(valueTelefonnummer, null, "15", null, null);//funkt
111 else if(valueKennzeichen.length() == 0 && valueBusiness != null)//kein kennzeichen und business geticket
112 smsManager.sendTextMessage(valueTelefonnummer, null, "B15", null, null);//funkt
113 else if(valueKennzeichen.length() == 0)//kein kennzeichen
114 smsManager.sendTextMessage(valueTelefonnummer, null, "15", null, null);//funkt
115 }else if(extras != null && requestCode == 1){
116 //Toast.makeText(context, "1", Toast.LENGTH_LONG).show();
117 if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket") && Wappenchosen != null)//kennzeichen + business + stadt
118 smsManager.sendTextMessage(valueTelefonnummer, null, "B30 " + Wappenchosen + "*" + valueKennzeichen, null, null);
119 else if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket"))//kennzeichen + business
120 smsManager.sendTextMessage(valueTelefonnummer, null, "B30" + "*" + valueKennzeichen, null, null);//funkt
121 else if(valueKennzeichen.length() > 0 && Wappenchosen != null)//kennzeichen + stadt
122 smsManager.sendTextMessage(valueTelefonnummer, null, "30 " + Wappenchosen + "*" + valueKennzeichen, null, null);
123 else if(valueKennzeichen.length() > 0)//kennzeichen
124 smsManager.sendTextMessage(valueTelefonnummer, null, "30" + "*" + valueKennzeichen, null, null);//funkt
125 else if(valueBusiness.equals("geticket") && Wappenchosen != null)
126 smsManager.sendTextMessage(valueTelefonnummer, null, "B30 " + Wappenchosen, null, null);//funkt
127 else if(Wappenchosen != null)//Stadt
128 smsManager.sendTextMessage(valueTelefonnummer, null, "30 " + Wappenchosen, null, null);//funkt
129 else if(valueBusiness.equals("geticket"))//business
130 smsManager.sendTextMessage(valueTelefonnummer, null, "B30", null, null);//funkt
131 else if(valueBusiness.equals(""))//business ausgeschalten
132 smsManager.sendTextMessage(valueTelefonnummer, null, "30", null, null);//funkt
133 else if(valueKennzeichen.length() == 0 && valueBusiness != null)//kein kennzeichen und business geticket
134 smsManager.sendTextMessage(valueTelefonnummer, null, "305", null, null);//funkt
135 else if(valueKennzeichen.length() == 0)//kein kennzeichen
136 smsManager.sendTextMessage(valueTelefonnummer, null, "30", null, null);//funkt
137 }else if(extras != null && requestCode == 2){
138 //Toast.makeText(context, "2", Toast.LENGTH_LONG).show();
139 String parkschein = extras.getString("IsRepeatFreiWaehlbar2");
140 if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket") && Wappenchosen != null)//kennzeichen + business + stadt
141 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
142 else if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket"))//kennzeichen + business
143 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + "*" + valueKennzeichen, null, null);//funkt
144 else if(valueKennzeichen.length() > 0 && Wappenchosen != null)//kennzeichen + stadt
145 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
146 else if(valueKennzeichen.length() > 0)//kennzeichen
147 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + "*" + valueKennzeichen, null, null);//funkt
148 else if(valueBusiness.equals("geticket") && Wappenchosen != null)
149 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen, null, null);//funkt
150 else if(Wappenchosen != null)//Stadt
151 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + " " + Wappenchosen, null, null);//funkt
152 else if(valueBusiness.equals("geticket"))//business
153 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);//funkt
154 else if(valueBusiness.equals(""))//business ausgeschalten
155 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);//funkt
156 else if(valueKennzeichen.length() == 0 && valueBusiness != null)//kein kennzeichen und business geticket
157 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);//funkt
158 else if(valueKennzeichen.length() == 0)//kein kennzeichen
159 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);//funkt
160 }else if(extras != null && requestCode == 3){
161 //Toast.makeText(context, "3", Toast.LENGTH_LONG).show();
162 String parkschein = extras.getString("IsRepeatFreiWaehlbar3");
163 if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket") && Wappenchosen != null)//kennzeichen + business + stadt
164 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
165 else if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket"))//kennzeichen + business
166 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + "*" + valueKennzeichen, null, null);//funkt
167 else if(valueKennzeichen.length() > 0 && Wappenchosen != null)//kennzeichen + stadt
168 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
169 else if(valueKennzeichen.length() > 0)//kennzeichen
170 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + "*" + valueKennzeichen, null, null);//funkt
171 else if(valueBusiness.equals("geticket") && Wappenchosen != null)
172 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen, null, null);//funkt
173 else if(Wappenchosen != null)//Stadt
174 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + " " + Wappenchosen, null, null);//funkt
175 else if(valueBusiness.equals("geticket"))//business
176 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);//funkt
177 else if(valueBusiness.equals(""))//business ausgeschalten
178 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);//funkt
179 else if(valueKennzeichen.length() == 0 && valueBusiness != null)//kein kennzeichen und business geticket
180 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);//funkt
181 else if(valueKennzeichen.length() == 0)//kein kennzeichen
182 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);//funkt
183 }else if(extras != null && requestCode == 4){
184 //Toast.makeText(context, "4", Toast.LENGTH_LONG).show();
185 String parkschein = extras.getString("IsRepeatFreiWaehlbar4");
186 if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket") && Wappenchosen != null)//kennzeichen + business + stadt
187 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
188 else if(valueKennzeichen.length() > 0 && valueBusiness.equals("geticket"))//kennzeichen + business
189 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + "*" + valueKennzeichen, null, null);//funkt
190 else if(valueKennzeichen.length() > 0 && Wappenchosen != null)//kennzeichen + stadt
191 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
192 else if(valueKennzeichen.length() > 0)//kennzeichen
193 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + "*" + valueKennzeichen, null, null);//funkt
194 else if(valueBusiness.equals("geticket") && Wappenchosen != null)
195 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen, null, null);//funkt
196 else if(Wappenchosen != null)//Stadt
197 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + " " + Wappenchosen, null, null);//funkt
198 else if(valueBusiness.equals("geticket"))//business
199 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);//funkt
200 else if(valueBusiness.equals(""))//business ausgeschalten
201 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);//funkt
202 else if(valueKennzeichen.length() == 0 && valueBusiness != null)//kein kennzeichen und business geticket
203 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);//funkt
204 else if(valueKennzeichen.length() == 0)//kein kennzeichen
205 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);//funkt
206 }
207
208
209
210
211
212
213
214
215 /*
216
217 }else if(extras != null && requestCode == 2)
218 if(valueKennzeichen.length() > 0)
219 if(valueBusiness.equals("geticket")){
220 if(Wappenchosen != null){
221 String parkschein = extras.getString("IsRepeatFreiWaehlbar2");
222 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
223 }else{
224 String parkschein = extras.getString("IsRepeatFreiWaehlbar2");
225 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + "*" + valueKennzeichen, null, null);
226 }
227 }else{
228 String parkschein = extras.getString("IsRepeatFreiWaehlbar2");
229 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + "*" + valueKennzeichen, null, null);
230 }
231 else
232 if(valueBusiness.equals("geticket")){
233 if(Wappenchosen != null){
234 String parkschein = extras.getString("IsRepeatFreiWaehlbar2");
235 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen, null, null);
236 }else{
237 String parkschein = extras.getString("IsRepeatFreiWaehlbar2");
238 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);
239 }
240 }
241 else{
242 String parkschein = extras.getString("IsRepeatFreiWaehlbar2");
243 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);
244 }
245 else if(extras != null && requestCode == 3)
246 if(valueKennzeichen.length() > 0)
247 if(valueBusiness.equals("geticket")){
248 if(Wappenchosen != null){
249 String parkschein = extras.getString("IsRepeatFreiWaehlbar3");
250 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
251 }else{
252 String parkschein = extras.getString("IsRepeatFreiWaehlbar3");
253 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + "*" + valueKennzeichen, null, null);
254 }
255 }else{
256 String parkschein = extras.getString("IsRepeatFreiWaehlbar3");
257 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + "*" + valueKennzeichen, null, null);
258 }
259 else
260 if(valueBusiness.equals("geticket")){
261 if(Wappenchosen != null){
262 String parkschein = extras.getString("IsRepeatFreiWaehlbar3");
263 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen, null, null);
264 }else{
265 String parkschein = extras.getString("IsRepeatFreiWaehlbar3");
266 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);
267 }
268 }
269 else{
270 String parkschein = extras.getString("IsRepeatFreiWaehlbar3");
271 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);
272 }
273 else if(extras != null && requestCode == 4)
274 if(valueKennzeichen.length() > 0)
275 if(valueBusiness.equals("geticket")){
276 if(Wappenchosen != null){
277 String parkschein = extras.getString("IsRepeatFreiWaehlbar4");
278 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen + "*" + valueKennzeichen, null, null);
279 }else{
280 String parkschein = extras.getString("IsRepeatFreiWaehlbar4");
281 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + "*" + valueKennzeichen, null, null);
282 }
283 }else{
284 String parkschein = extras.getString("IsRepeatFreiWaehlbar4");
285 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein + "*" + valueKennzeichen, null, null);
286 }
287 else
288 if(valueBusiness.equals("geticket")){
289 if(Wappenchosen != null){
290 String parkschein = extras.getString("IsRepeatFreiWaehlbar4");
291 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein + " " + Wappenchosen, null, null);
292 }else{
293 String parkschein = extras.getString("IsRepeatFreiWaehlbar4");
294 smsManager.sendTextMessage(valueTelefonnummer, null, "B" + parkschein, null, null);
295 }
296 }
297 else{
298 String parkschein = extras.getString("IsRepeatFreiWaehlbar4");
299 smsManager.sendTextMessage(valueTelefonnummer, null, parkschein, null, null);
300 }*/
301
302 //Release the lock
303 wl.release();
304 }
305 private boolean readSMS(Context context) {
306 Uri uriSMSURI = Uri.parse("content://sms/inbox");
307 Cursor cur = context.getContentResolver().query(uriSMSURI, null, null, null,null);
308 String sms = "";
309 /* Regex */
310 if (cur.moveToFirst()) {
311 sms = cur.getString(cur.getColumnIndexOrThrow("body"));
312 }
313 Matcher m = Pattern.compile("^Ihr Parkzeitkonto").matcher(sms);
314 while (m.find()) {
315 Toast.makeText(context, "" + m.group(), Toast.LENGTH_LONG).show();
316 return true;
317 }
318 return false;
319 }
320 public void SetAlarm(Context context, String parkschein, long timer, int hour, int minute){
321 if(timer != 0 && parkschein == "15"){//set repeating timer
322 int second = 0;
323 AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
324 Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
325 intent.putExtra("requestCode", 0);
326 Bundle extras = new Bundle();
327 extras.putBoolean("IsRepeat15", true);
328 intent.putExtras(extras);
329 intent.setAction("RepeatAction");
330 PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
331 //when to start
332 Calendar timeOff9 = Calendar.getInstance();
333 timeOff9.set(Calendar.HOUR_OF_DAY, hour);
334 timeOff9.set(Calendar.MINUTE, minute);
335 timeOff9.set(Calendar.SECOND, second);
336 //when to start
337 //am.setRepeating(AlarmManager.RTC_WAKEUP, timeOff9.getTimeInMillis(), timer*60000, pi);
338 am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, timeOff9.getTimeInMillis(), timer*60000, pi);
339 }else if(timer != 0 && parkschein == "30"){
340 int second = 0;
341 AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
342 Intent intent1 = new Intent(context, AlarmManagerBroadcastReceiver.class);
343 intent1.putExtra("requestCode", 1);
344 Bundle extras = new Bundle();
345 extras.putBoolean("IsRepeat30", true);
346 intent1.putExtras(extras);
347 intent1.setAction("RepeatAction");
348 PendingIntent pi1 = PendingIntent.getBroadcast(context, 1, intent1, Intent.FLAG_ACTIVITY_NEW_TASK);
349 //when to start
350 Calendar timeOff9 = Calendar.getInstance();
351 timeOff9.set(Calendar.HOUR_OF_DAY, hour);
352 timeOff9.set(Calendar.MINUTE, minute);
353 timeOff9.set(Calendar.SECOND, second);
354 //when to start
355 //am.setRepeating(AlarmManager.RTC_WAKEUP, timeOff9.getTimeInMillis(), timer*60000, pi1);
356 am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, timeOff9.getTimeInMillis(), timer*60000, pi1);
357 }else if(timer != 0){
358 //frei waehlbare wiederholung
359 AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
360 Intent intent2 = new Intent(context, AlarmManagerBroadcastReceiver.class);
361 intent2.putExtra("requestCode", 2);
362 Bundle extras = new Bundle();
363 extras.putBoolean("IsRepeatFreiWaehlbar2", true);
364 extras.putString("IsRepeatFreiWaehlbar2", parkschein);
365 intent2.putExtras(extras);
366 intent2.setAction("RepeatAction");
367 PendingIntent pi2 = PendingIntent.getBroadcast(context, 2, intent2, Intent.FLAG_ACTIVITY_NEW_TASK);
368 //when to start
369 Calendar timeOff9 = Calendar.getInstance();
370 timeOff9.set(Calendar.HOUR_OF_DAY, hour);
371 timeOff9.set(Calendar.MINUTE, minute);
372 //when to start
373 am.setRepeating(AlarmManager.RTC_WAKEUP, timeOff9.getTimeInMillis(), timer*60000, pi2);
374 }else if(timer == 0){//keine wiederholung, frei waehlbar
375 Intent intent3 = new Intent(context, AlarmManagerBroadcastReceiver.class);
376 intent3.putExtra("requestCode", 3);
377 AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
378 Bundle extras = new Bundle();
379 extras.putBoolean("IsRepeatFreiWaehlbar3", true);
380 extras.putString("IsRepeatFreiWaehlbar3", parkschein);
381 intent3.putExtras(extras);
382 intent3.setAction("RepeatAction");
383 PendingIntent pi3 = PendingIntent.getBroadcast(context, 3, intent3, Intent.FLAG_ACTIVITY_NEW_TASK);
384 am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi3);
385 }
386 }
387 public void CancelAlarm(Context context)
388 {
389 Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
390 Bundle extras = new Bundle();
391 extras.putBoolean("IsRepeat15", true);
392 intent.putExtras(extras);
393 intent.setAction("RepeatAction");
394 PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
395 PendingIntent sender1 = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
396 PendingIntent sender2 = PendingIntent.getBroadcast(context, 2, intent, PendingIntent.FLAG_UPDATE_CURRENT);
397 AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
398 sender.cancel();
399 sender1.cancel();
400 sender2.cancel();
401 alarmManager.cancel(sender);
402 alarmManager.cancel(sender1);
403 alarmManager.cancel(sender2);
404 }
405}
406}

Vll. weiss jemand mir zu helfen?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.03.2014, 00:01:49 via App

Machst du das handy ganz aus oder nur den bildschrim aus und sperren?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Bernd Roth
  • Forum-Beiträge: 98

06.03.2014, 00:10:39 via Website

ich sperre nur den bildschirm und schalte ihn auch aus, aber das handy wird nie ganz ausgeschalten, weil ansonsten auch der alarmmanager im ganzen gelöscht werden würde!

— geändert am 06.03.2014, 00:11:08

Antworten
Bernd Roth
  • Forum-Beiträge: 98

06.03.2014, 07:40:58 via Website

Ich antworte mir wieder selber :)
Ich glaube das Problem gefunden zu haben.
Anscheinend darf der PowerManager nicht in die onReceive Methode des BroadcastReceivers sondern in die Activity Klasse, dann scheint es zu funktionieren!

Antworten
Bernd Roth
  • Forum-Beiträge: 98

06.03.2014, 09:37:22 via Website

Ich habe mich doch geirrt.
Den PowerManager in dieActivity Klasse zu verlegen hat das Problem auch nicht gelöst.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.03.2014, 10:04:12 via Website

Sollte der Alarm Manager nicht auch im Standby zustand funktionieren?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Bernd Roth
  • Forum-Beiträge: 98

06.03.2014, 10:10:23 via Website

Sollte er ja, aber er funktioniert bei mir seltsamerweise nur, wenn ich das Handy nicht schlafen lege, sprich Power Button darf ich nicht drücken!
Sobald der Screen on ist, geht es ohne Probleme.

Antworten
Bernd Roth
  • Forum-Beiträge: 98

06.03.2014, 10:26:39 via Website

Danke Dir.

Dann muss ich meinen Code umschreiben, weil den AlarmManager habe ich ja in der BroadcastReceiver Klasse untergebracht, dann muss ich ihn jetzt wieder in die MainActivity Klasse zurückgeben.
Ich werde mich dessen einmal annehmen und hoffe, dass es damit klappen wird!

Danke Dir!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.03.2014, 10:29:38 via Website

Das war auch nur in 5 min gegooglt, hättest du auch gefunden.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten