|
|
Android-Neuling sucht Hilfe
verfasst am 08.04.2012 20:51:35
Hallo liebe Forum-User, ich bin neu hier und habe vor kurzem begonnen meine erste App für meinen Modellbau-Verein zu schreiben. Da ich eigentlich keinerlei Java-Kenntnisse besitze, habe ich mir alles mit Hilfe von Tuts und How-To´s sowie Learning-by-Doing "ercodet". Bei meiner App handelt es sich um eine Art "Status-Abfrage". Wir haben einen Server, auf dem eine Textdatei liegt die zwischen zwei Texten hin- und herschaltet. Meine bisherige App ruft diesen Text auf Knopfdruck online ab und gibt mir dann je nach Text den Status "ON" oder "OFF" aus. Die nächste Version der App soll nun einen Überwachungsmodus haben, der alle x-Minuten im Hintergrund den Status abruft und bei Änderung eine Meldung ausgibt. Das habe ich soweit auch alles einigermaßen hinbekommen. Leider funktioniert die Überwachung noch nicht so ganz. Ich stehe quasi kurz vor der Vollendung. Nun hoffe ich auf eure Hilfe.  Lg Patrick
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 08.04.2012 20:56:55
— geändert am 09.04.2012 15:06:11
Hier mal mein erstes Problem: Ich habe die Zeitauswahl mit einer RadioGroup gemacht und möchte nun aber, dass meine App erkennt, wenn einer der RadioButtons ausgewählt wurde und falls dies nicht der Fall ist, soll er mir ne Fehlermeldung geben. Ich hoffe das ich euch jetzt nicht überrumpel. Mein Code-Fehler liegt defintiv in Code-Zeile "5" ! Aber ich komm einfach nicht auf den richtigen Zweig. Die Möglichkeit mit ".getCheckedRadioButtonId" , da weis ich leider nicht, wie ich dann meinen riesigen Befehl da mit einbauen kann, wenn ihr wisst was ich meine. Hier mal mein ein Teil meines bisherigen Codeversuches: 1public void okButton (View view) { 2 3 4 RadioGroup groupi = (RadioGroup) findViewById(R.id.radioGroup1); 5 if (groupi.isSelected()){ 6 android.app.AlertDialog.Builder builder2 = new AlertDialog.Builder(this); 7 builder2.setMessage("Die App schaltet nun in den Überwachungsmodus"); 8 builder2.setCancelable(true); 9 10 11 RadioButton test1 = (RadioButton) findViewById(R.id.radioButton0); 12 RadioButton test2 = (RadioButton) findViewById(R.id.radioButton1); 13 RadioButton test3 = (RadioButton) findViewById(R.id.radioButton2); 14 RadioButton test4 = (RadioButton) findViewById(R.id.radioButton3); 15 16 // get a Calendar object with current time 17 final Calendar cal = Calendar.getInstance(); 18 // add minutes to the calendar object 19 if (test1.isChecked() ){ 20 cal.add(Calendar.MINUTE, 1); 21 22 }else if (test2.isChecked()){ 23 cal.add(Calendar.MINUTE, 20); 24 } 25 else if (test3.isChecked()){ 26 cal.add(Calendar.MINUTE,30); 27 } 28 else if (test4.isChecked()){ 29 cal.add(Calendar.MINUTE,60); 30 31 }else{} 32 33 Intent intent = new Intent(this, AlarmReceiver.class); 34 final PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT); 35 36 37 builder2.setPositiveButton("OK", new DialogInterface.OnClickListener() { 38 public void onClick(DialogInterface dialog, int which) { 39 40 initNotification(); 41 AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 42 am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 43 44 } 45 }); 46 47 48 49 builder2.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { 50 public void onClick(DialogInterface dialog, int which) { 51 Toast.makeText(getApplicationContext(), "Aktion abgebrochen", Toast.LENGTH_LONG).show(); 52 } 53 }); 54 AlertDialog dialog2 = builder2.create(); 55 dialog2.show(); 56 }else{Toast.makeText(getApplicationContext(), "Bitte Zeit wählen!", Toast.LENGTH_LONG).show();}}
Ich würde mich wirklich sehr über ein wenig Hilfe freuen  Lg Patrick
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 10.04.2012 16:15:02
— geändert am 10.04.2012 16:15:16
*push* Ich hoffe dass pushen erlaubt ist. Ich würde mich nämlich sehr über ein paar Tipps von euch freuen. Komme hier nämlich echt nicht weiter
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 10.04.2012 16:27:58
— geändert am 10.04.2012 16:28:52
Patrick *push* Ich hoffe dass pushen erlaubt ist.  nicht wirklich  aber trotzdem:
-----
L.G. Erwin --- P.S.: wer einen Rechtschreibfehler findet darf ihn behalten --- SGS2, SGS+, Motorola Xoom, Apfel 4S
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 10.04.2012 18:03:57
Die Möglichkeit mit ".getCheckedRadioButtonId" ...wäre zielführend. Alternativ könntest du auch direkt den Zustand des für die Bedingung relevanten Buttons abfragen. da weis ich leider nicht, wie ich dann meinen riesigen Befehl da mit einbauen kann, wenn ihr wisst was ich meine. Nö, weiß ich nicht - was wäre denn beim Einsatz der "neuen" Funktion anders als bei der "alten"?
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 10.04.2012 20:52:54
— geändert am 10.04.2012 21:16:02
Ok, sorry hierfür; kommt nicht wieder vor. Ansonsten erstmal vielen Dank an "and dev" für deine Antwort. Hab das jetzt mit ".getCheckedRadioButtonId" hinbekommen. Der Code ist zwar etwas länger geworden, aber das macht ja nichts  Nun aber zum nächsten Problem. Wenn meine App in den Überwachungsmodus geschaltet hat, habe ich immer noch die App aufm Schirm und muss auf den Home-Button drücken um diese zu "minimieren", damit sie nach der Meldung wieder aufgerufen werden kann. Gibts ne Möglichkeit dies ohne drücken des Home-Buttons zu realisieren?
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 10.04.2012 22:27:49 (über AndroidPIT-App)
Hi Patrick, Patrick Der Code ist zwar etwas länger geworden, aber das macht ja nichts
Das ist meistens der Sinn vom entwickeln  Nun aber zum nächsten Problem. Wenn meine App in den Überwachungsmodus geschaltet hat, habe ich immer noch die App aufm Schirm und muss auf den Home-Button drücken um diese zu "minimieren", damit sie nach der Meldung wieder aufgerufen werden kann. Gibts ne Möglichkeit dies ohne drücken des Home-Buttons zu realisieren?
Du kannst entweder ein Intent an den Homescreen schicken, oder mit finish() deine derzeitige Activity beenden. Liebe Grüße Maximilian
-----
Vergesse nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Website
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 11.04.2012 14:59:30
Hallo Maximilian, danke für deine Hilfe. Habe deinen Tip befolgt, und das Problem mit "Intent an Homescreen senden" gelöst.
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 12.04.2012 14:46:00
Ok, auch wenns vielleicht nervig klingt; aber ich glaube, ich bräuchte ein letztes Mal eure kompetente Hilfe. Und zwar folgendes: Ich starte in meiner ersten Activity per Button einen AlarmManager mit eingestellter Zeit. Dieser startet nach der angegebenen Zeit eine zweite Activity für mich, die im Hintergrund läuft. Diese Activity durchläuft eine If-Abfrage. Nun zu meinem Problem: 1If (write.equalsIgnoreCase(data)) { 2// Code-Teil 1 3}else{ 4Intent intent = getIntent(); 5finish(); 6startActivity(intent);}
Im "else-Teil" soll die Activity neu gestartet werden, jedoch mit der Zeit die ich auch zuvor für den AlarmManager genutzt hatte. Ist dies zu realisieren?
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 12.04.2012 22:17:13 (über AndroidPIT-App)
Hi Patrick, ich verstehe den letzten Teil von deiner Frage nicht so ganz. Mit welcher Zeit willst du die Activity starten? Und warum überhaupt mit einer Zeit? Bitte etwas mehr Erklärung Liebe Grüße Maximilian
-----
Vergesse nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Website
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 13.04.2012 11:51:40
Hi Maximilian, meine App soll alle x-Minuten online einen Text abrufen und überprüfen, ob dieser sich geändert hat. Dafür nutze ich in meiner ersten Activity den AlarmManager, der mit meiner zuvor, aus einer RadioButtonGroup gewählten Zeit, dann meine zweite Activity startet. Diese schaut nach ob sich etwas am Onlinetext geändert hat.
Nun zum Problem:
Wenn sich nichts geändert hat, soll sie erneut nachschauen, jedoch mit dem selben Zeitabstand, den ich vorher auch für den AlarmManager definiert hatte. Im Moment schaut sie dann aber jede Sekunde nach.
Lg Patrick
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 13.04.2012 12:16:35
naja der user wird die app nicht immer offen haben. schreib dir dafür einen service und wenn es einen neuen text gibt, zeig eine notification an. oder die bessere variante push nachrichten. spart viel akku => c2dm
-----
swordiApps Blog - Website
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 13.04.2012 16:32:25
Danke für den Tip Markus, das mit dem c2dm-Service, der das für mich übernimmt werd ich mir mal näher anschauen  Ich meld mich  Lg
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 13.04.2012 19:34:55
Hallo Patrick, es AlarmManager hat doch die Methode "alarmManager.setRepeating(...)". Damit kannst du einfach einen wiederholenden AlarmManager registrieren. Liebe Grüße Maximilian
-----
Vergesse nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Website
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 13.04.2012 20:55:30
— geändert am 13.04.2012 20:56:18
Hi Maximilian, vielen Dank für deine erneute, sehr hilfreiche Antwort. Ich bekomm das mit dem "AlarmManager.setRepeating(...)" aber nich so ganz hin. Er nimmt da immer noch ne Falsche Zeit. Wäre nett wenn mich jemand mal mit der Nase auf meinen Code Fehler stupsen könnte. Hier mal der Code-Schnipsel für 1-Minute als Zeit: 1if (groupi.getCheckedRadioButtonId() == test1.getId()){ 2 cal.add(Calendar.MINUTE, 1); 3 Intent intent = new Intent(this, AlarmReceiver.class); 4 final PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT); 5 6 7 builder2.setPositiveButton("OK", new DialogInterface.OnClickListener() { 8 public void onClick(DialogInterface dialog, int which) { 9 10 initNotification(); 11 AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 12 am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), SystemClock.elapsedRealtime(), sender); 13 14 15 Intent startMain = new Intent(Intent.ACTION_MAIN); 16 startMain.addCategory(Intent.CATEGORY_HOME); 17 startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 18 startActivity(startMain);
Mein Fehler liegt denke ich mal in Zeile 12 am Long Interval ?! @ Markus, habe mir das mit dem c2dm-Service mal angeschaut. Ist ja schon ne feine Sache aber so wie ich gelesen habe, benötigt man dafür einen Google-Acc und ob jeder Nutzer meiner App bereit ist sich einen einzurichten weiß ich nicht. Lg
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 14.04.2012 10:37:47
Patrick Mein Fehler liegt denke ich mal in Zeile 12 am Long Interval ?!
Jup, war auch so. Habs jetzt hinbekommen. Statt "SystemClock.elapsedRealtime()" musste ich für 1 Minute einfach 60000 angeben  Ich werd meine App heute testen und hoffe, dass endlich alles ohne Probleme funktioniert. Bis dahin vielen vielen Dank für eure Unterstützung; hätte das alleine glaube ich nie geschafft. Lg
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 14.04.2012 15:23:19
Schon wieder ich. So schnell wie die Freude heute aufkam, dass es wohl funktioniert, so schnell verschwand diese auch wieder. Habe die App jetzt über knapp 5 Stunden getestet und versucht die Fehler zu beheben. Jedoch habe ich nach wie vor 3 Fehler, die ich einfach nicht beheben kann: Fehler 1: Wenn meine App in den "Überwachungsmodus" schaltet, startet sie eine Notification. Wenn ich nun in der Status-Bar auf die Notification klicke, soll sich die App, die ich vorher "minimiert" habe an der selben Stelle wieder auftun. Irgendwie will das aber nicht. Minimiert wird mit: 1Intent startMain = new Intent(Intent.ACTION_MAIN); 2 startMain.addCategory(Intent.CATEGORY_HOME); 3 startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 4 startActivity(startMain);
Fehler 2: Gibt es eine Möglichkeit den "AlarmManager.setRepeating(...)" wieder zu stoppen? Klar mit "am.cancel(...);" aber mein AlarmManager ist in einem Button definiert und ich möchte diesen nun mit einem zweiten stoppen können. Fehler 3: Wenn ich den "AlarmManager.setRepeating(...)" gestartet habe und dieser meine Activity nach der eingestellten Zeit das 2,3,4 .... mal startet, bekomm ich einen schwarzen Bildschirm. Ich möchte aber, dass der User davon nichts mitbekommt und sein Telefon weiter ungestört nutzen kann. Eigentlich trau ich mich ja schon gar nicht mehr diese Fehler hier zu posten, weil ihr bestimmt denkt: "Soll er doch endlich mal Java lernen". Und ja, ihr habt Recht! Ich werde mir deshalb wahrscheinlich demnächst mal ein Buch zum lernen besorgen, damit ich euch nicht dauernd nervende Fragen stellen muss. Lg
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 14.04.2012 18:53:11
lern doch endlich mal java
-----
swordiApps Blog - Website
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 15.04.2012 10:52:10
Ja, sag ich ja  Wie gesagt, werd mir jetzt demnächst mal nen Büchlein besorgen. Bis dahin hoffe ich einfach mal weiter auf kompetente Hilfe
|
|
|
RE: Android-Neuling sucht Hilfe
verfasst am 15.04.2012 15:34:36
Hi Patrick, nur mal eine kleine Hilfe zu deinem 2. Fehler. So legst du ja ein PendingIntent an: 1PendingIntent sender = PendingIntent.getBroadcast(context, BIRTHDAY_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Der BIRTHDAY_REQUEST_CODE ist dabei die Unique Id. Mittels dieser kannst du einfach über alarmManager.cancel(PendingIntent sender) wieder schließen. Also du legst einfach an einer anderen Stelle das selbe PendingIntent an mit derselben Id. Diese übergibst du dann der Methode cancel(). Das hätte dir aber auch alles Google gesagt  So, an den anderenen Fehlern probierst du dich jetzt erst einmal selber  Liebe Grüße Maximilian
-----
Vergesse nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Website
|