Hallo,
habe jetzt verschiedene Versuche unternommen, aber leider immer ohne positivem Ergebnis.
1) 2 Klassen mit BroadcastReceiver führte dazu, dass nur ein BroadcastReceiver funktionierte
2) Habe deinen Vorschlag hoffentlich richtig umgesetzt:
Dabei hat es sich ergeben, dass der erste AlarmManager überschrieben wurde.
Ich schicke hier einmal meine ganzen Code, da ich jetzt ehrlich nicht mehr weiter weiss:
In der MainActivity werden Button1 u Button2 die Ergebnisse mittels SharedPreferences gesetzt, die ich dann im BroadcastReceiver auffange.
MainActivity:
1package at.parken.parken;
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.content.Context;
6import android.content.Intent;
7import android.content.SharedPreferences;
8import android.view.Menu;
9import android.view.MenuInflater;
10import android.view.MenuItem;
11import android.view.View;
12import android.view.View.OnClickListener;
13import android.widget.Button;
14import android.widget.NumberPicker;
15import android.widget.TimePicker;
16import android.widget.Toast;
17import at.parken.parken.R;
18
19public class AlarmManagerActivity extends Activity {
20
21 private AlarmManagerBroadcastReceiver alarm;
22 Button button1, button2, button3, button4, button5;
23 NumberPicker np;
24 TimePicker tp;
25 int hour, minute;
26 int counter;
27
28 @Override
29 public void onCreate(Bundle savedInstanceState) {
30 super.onCreate(savedInstanceState);
31 setContentView(R.layout.activity_alarm_manager);
32 alarm = new AlarmManagerBroadcastReceiver();
33 tp = new TimePicker(getBaseContext());
34 addListenerOnButton();
35 tp = (TimePicker)findViewById(R.id.timePicker1);
36 tp.clearFocus();
37 np = (NumberPicker) findViewById(R.id.numberPicker1);
38 np.setMinValue(0);
39 np.setMaxValue(1440);
40 np.setWrapSelectorWheel(true);
41 np.setValue(1);
42 }
43
44 public void addListenerOnButton() {
45 button1 = (Button) findViewById(R.id.button1);
46 button2 = (Button) findViewById(R.id.button2);
47 button3 = (Button) findViewById(R.id.button3);
48 button4 = (Button) findViewById(R.id.button4);
49 button5 = (Button) findViewById(R.id.button5);
50
51 button1.setOnClickListener(new OnClickListener() {
52 public void onClick(View arg0) {
53 np.clearFocus();
54 SharedPreferences prefs = getSharedPreferences("a", MODE_PRIVATE);
55 SharedPreferences.Editor editor = prefs.edit();
56 editor.putString("a", Integer.toString(15));
57 editor.commit();
58 if ( np.getValue() == 1)
59 Toast.makeText(getBaseContext(), "15 Minuten mit " + np.getValue() + "ner Minute Intervall sind gebucht", Toast.LENGTH_SHORT).show();
60 else if (np.getValue() == 0)
61 Toast.makeText(getBaseContext(), "15 Minuten sind gebucht", Toast.LENGTH_SHORT).show();
62 else
63 Toast.makeText(getBaseContext(), "15 Minuten mit " + np.getValue() + " Minuten Intervall sind gebucht", Toast.LENGTH_SHORT).show();
64 alarm.SetAlarm(getApplicationContext(), np.getValue(), tp.getCurrentHour(), tp.getCurrentMinute());
65 counter+=1;
66 if(counter == 2){
67 button1.setEnabled(false);
68 button2.setEnabled(false);
69 button3.setEnabled(false);
70 button4.setEnabled(false);
71 button5.setEnabled(false);
72 }
73 }
74 });
75
76 button2.setOnClickListener(new OnClickListener() {
77 public void onClick(View arg0) {
78 np.clearFocus();
79 SharedPreferences prefs = getSharedPreferences("a", MODE_PRIVATE);
80 SharedPreferences.Editor editor = prefs.edit();
81 editor.putString("a", Integer.toString(30));
82 editor.commit();
83 if ( np.getValue() == 1)
84 Toast.makeText(getBaseContext(), "30 Minuten mit " + np.getValue() + "ner Minute Intervall sind gebucht", Toast.LENGTH_SHORT).show();
85 else if (np.getValue() == 0)
86 Toast.makeText(getBaseContext(), "30 Minuten sind gebucht", Toast.LENGTH_SHORT).show();
87 else
88 Toast.makeText(getBaseContext(), "30 Minuten mit " + np.getValue() + " Minuten Intervall sind gebucht", Toast.LENGTH_SHORT).show();
89 alarm.SetAlarm1(getApplicationContext(), np.getValue(), tp.getCurrentHour(), tp.getCurrentMinute());
90 counter+=1;
91 if(counter == 2){
92 button1.setEnabled(false);
93 button2.setEnabled(false);
94 button3.setEnabled(false);
95 button4.setEnabled(false);
96 button5.setEnabled(false);
97 }
98 }
99 });
100
101 button3.setOnClickListener(new OnClickListener() {
102 public void onClick(View arg0) {
103 np.clearFocus();
104 SharedPreferences prefs = getSharedPreferences("a", MODE_PRIVATE);
105 SharedPreferences.Editor editor = prefs.edit();
106 editor.putString("a", Integer.toString(60));
107 editor.commit();
108 if ( np.getValue() == 1)
109 Toast.makeText(getBaseContext(), "60 Minuten mit " + np.getValue() + "ner Minute Intervall sind gebucht", Toast.LENGTH_SHORT).show();
110 else if (np.getValue() == 0)
111 Toast.makeText(getBaseContext(), "60 Minuten sind gebucht", Toast.LENGTH_SHORT).show();
112 else
113 Toast.makeText(getBaseContext(), "60 Minuten mit " + np.getValue() + " Minuten Intervall sind gebucht", Toast.LENGTH_SHORT).show();
114 alarm.SetAlarm(getApplicationContext(), np.getValue(), tp.getCurrentHour(), tp.getCurrentMinute());
115 button1.setEnabled(false);
116 button2.setEnabled(false);
117 button3.setEnabled(false);
118 button4.setEnabled(false);
119 button5.setEnabled(false);
120 }
121 });
122
123 button4.setOnClickListener(new OnClickListener() {
124 public void onClick(View arg0) {
125 np.clearFocus();
126 SharedPreferences prefs = getSharedPreferences("a", MODE_PRIVATE);
127 SharedPreferences.Editor editor = prefs.edit();
128 editor.putString("a", Integer.toString(90));
129 editor.commit();
130 if ( np.getValue() == 1)
131 Toast.makeText(getBaseContext(), "120 Minuten mit " + np.getValue() + "ner Minute Intervall sind gebucht", Toast.LENGTH_SHORT).show();
132 else if (np.getValue() == 0)
133 Toast.makeText(getBaseContext(), "120 Minuten sind gebucht", Toast.LENGTH_SHORT).show();
134 else
135 Toast.makeText(getBaseContext(), "120 Minuten mit " + np.getValue() + " Minuten Intervall sind gebucht", Toast.LENGTH_SHORT).show();
136 alarm.SetAlarm(getApplicationContext(), np.getValue(), tp.getCurrentHour(), tp.getCurrentMinute());
137 button1.setEnabled(false);
138 button2.setEnabled(false);
139 button3.setEnabled(false);
140 button4.setEnabled(false);
141 button5.setEnabled(false);
142 }
143 });
144
145 button5.setOnClickListener(new OnClickListener() {
146 public void onClick(View arg0) {
147 np.clearFocus();
148 SharedPreferences prefs = getSharedPreferences("a", MODE_PRIVATE);
149 SharedPreferences.Editor editor = prefs.edit();
150 editor.putString("a", Integer.toString(120));
151 editor.commit();
152 if ( np.getValue() == 1)
153 Toast.makeText(getBaseContext(), "180 Minuten mit " + np.getValue() + "ner Minute Intervall sind gebucht", Toast.LENGTH_SHORT).show();
154 else if (np.getValue() == 0)
155 Toast.makeText(getBaseContext(), "180 Minuten sind gebucht", Toast.LENGTH_SHORT).show();
156 else
157 Toast.makeText(getBaseContext(), "180 Minuten mit " + np.getValue() + " Minuten Intervall sind gebucht", Toast.LENGTH_SHORT).show();
158 alarm.SetAlarm(getApplicationContext(), np.getValue(), tp.getCurrentHour(), tp.getCurrentMinute());
159 button1.setEnabled(false);
160 button2.setEnabled(false);
161 button3.setEnabled(false);
162 button4.setEnabled(false);
163 button5.setEnabled(false);
164 }
165 });
166 }
167
168 @Override
169 protected void onStart() {
170 super.onStart();
171 }
172
173 public void startRepeatingTimer(View view) {
174 Context context = this.getApplicationContext();
175 if(alarm != null){
176 alarm.CancelAlarm(context);
177 button1.setEnabled(true);
178 button2.setEnabled(true);
179 button3.setEnabled(true);
180 button4.setEnabled(true);
181 button5.setEnabled(true);
182 Toast.makeText(context, "Wiederholung wurde gestoppt!", Toast.LENGTH_SHORT).show();
183 }else{
184 Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
185 }
186 }
187/*
188 public void cancelRepeatingTimer(View view){
189 Context context = this.getApplicationContext();
190 if(alarm != null){
191 alarm.CancelAlarm(context);
192 }else{
193 Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
194 }
195 }
196 */
197/*
198 public void onetimeTimer(View view){
199 Context context = this.getApplicationContext();
200 if(alarm != null){
201 alarm.setOnetimeTimer(context);
202 }else{
203 Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
204 }
205 }
206*/
207 @Override
208 public boolean onCreateOptionsMenu(Menu menu){
209 super.onCreateOptionsMenu(menu);
210 MenuInflater inflater = getMenuInflater();
211 inflater.inflate(R.menu.activity_main_actions, menu);
212 return super.onCreateOptionsMenu(menu);
213 }
214
215 @Override
216 public boolean onOptionsItemSelected(MenuItem item){
217 switch (item.getItemId())
218 {
219 case R.id.osm:
220 Toast.makeText(AlarmManagerActivity.this, "OpenStreetMap fuer Parkzonen wird geoeffnet; bitte Internetverbindung einschalten", Toast.LENGTH_LONG).show();
221 Intent myIntent = new Intent(AlarmManagerActivity.this, WebViewActivity.class);
222 startActivity(myIntent);
223 return true;
224 case R.id.parkguthaben:
225 Toast.makeText(AlarmManagerActivity.this, "Parkguthaben wird geoeffnet", Toast.LENGTH_LONG).show();
226 Intent myIntent1 = new Intent(AlarmManagerActivity.this, Parkkonto.class);
227 startActivity(myIntent1);
228 return true;
229 default:
230 return super.onOptionsItemSelected(item);
231 }
232 }
233}
BroadcastReceiver
1package at.parken.parken;
2
3import java.util.Calendar;
4import android.app.AlarmManager;
5import android.app.PendingIntent;
6import android.content.BroadcastReceiver;
7import android.content.Context;
8import android.content.Intent;
9import android.content.SharedPreferences;
10import android.content.SharedPreferences.Editor;
11import android.os.PowerManager;
12import android.telephony.SmsManager;
13import android.widget.Toast;
14
15public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
16
17 final public String ONE_TIME = "onetime";
18 final public String SECOND_TIME = "secondtime";
19 final public String SECOND = "second";
20 SharedPreferences sp, sp1, kennzeichen, telefonnummer;
21 Editor e;
22 int counter = 0;
23
24 @Override
25 public void onReceive(Context context, Intent intent) {
26 PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
27 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
28 //Acquire the lock
29 wl.acquire();
30
31 /* zeitbuchung */
32 sp = context.getSharedPreferences("a", 0);
33 String value = sp.getString("a", "");
34
35 sp1 = context.getSharedPreferences("b", 0);
36 String value1 = sp.getString("b", "");
37
38 /* kenzeichen */
39 kennzeichen = context.getSharedPreferences("kennzeichen", 1);
40 String valueKennzeichen = kennzeichen.getString("kennzeichen", "");
41
42 /* Telefonnummer */
43 telefonnummer = context.getSharedPreferences("handyparken", 1);
44
45 String valueTelefonnummer = telefonnummer.getString("handyparken", "");
46 SmsManager smsManager = SmsManager.getDefault();
47 //smsManager.sendTextMessage(valueTelefonnummer, null, value1 + " Wien*" + valueKennzeichen, null, null);
48 smsManager.sendTextMessage("xxx", null, value + value1, null, null);
49 //Release the lock
50 wl.release();
51 }
52 public void SetAlarm(Context context, long timer, int hour, int minute){
53 if(timer != 0){//set repeating timer
54 AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
55 Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
56 intent.putExtra(ONE_TIME, Boolean.FALSE);
57 intent.setAction("SetAlarm");
58 PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
59 //when to start
60 Calendar timeOff9 = Calendar.getInstance();
61 timeOff9.set(Calendar.HOUR_OF_DAY, hour);
62 timeOff9.set(Calendar.MINUTE, minute);
63 //when to start
64 am.setRepeating(AlarmManager.RTC_WAKEUP, timeOff9.getTimeInMillis(), 1*6000, pi);
65 }else{//one timer
66 Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
67 intent.putExtra(ONE_TIME, Boolean.FALSE);
68 intent.setAction("SetAlarm");
69 AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
70 PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
71 am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi);
72 }
73 }
74 public void SetAlarm1(Context context, long timer, int hour, int minute){
75 if(timer != 0){//set repeating timer
76 AlarmManager am1=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
77 Intent intent1 = new Intent(context, AlarmManagerBroadcastReceiver.class);
78 intent1.putExtra(SECOND_TIME, Boolean.FALSE);
79 intent1.setAction("SetAlarm1");
80 PendingIntent pi1 = PendingIntent.getBroadcast(context, 1, intent1, 0);
81 //when to start
82 Calendar timeOff9 = Calendar.getInstance();
83 timeOff9.set(Calendar.HOUR_OF_DAY, hour);
84 timeOff9.set(Calendar.MINUTE, minute);
85 //when to start
86 am1.setRepeating(AlarmManager.RTC_WAKEUP, timeOff9.getTimeInMillis(), 2*6000, pi1);
87 }else{//one timer
88 Intent intent1 = new Intent(context, AlarmManagerBroadcastReceiver.class);
89 intent1.putExtra(SECOND_TIME, Boolean.FALSE);
90 intent1.setAction("SetAlarm1");
91 AlarmManager am1=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
92 PendingIntent pi1 = PendingIntent.getBroadcast(context, 1, intent1, 0);
93 am1.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi1);
94 }
95 }
96 public void CancelAlarm(Context context)
97 {
98 // first alarm
99 Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
100 intent.setAction("SetAlarm");
101 Toast.makeText(context, "Erster Alarm wird gestoppt", Toast.LENGTH_LONG).show();
102 PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
103 AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
104 alarmManager.cancel(sender);
105
106 // second alarm
107 Intent intent1 = new Intent(context, AlarmManagerBroadcastReceiver.class);
108 intent1.setAction("SetAlarm1");
109 Toast.makeText(context, "Zweiter Alarm wird gestoppt", Toast.LENGTH_LONG).show();
110 PendingIntent sender1 = PendingIntent.getBroadcast(context, 1, intent1, 0);
111 AlarmManager alarmManager1 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
112 alarmManager1.cancel(sender1);
113 }
114}
Vll. hat ja jemand noch eine Idee.
Danke vielmals!
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.