Wecker App als Abschlussprojekt

  • Antworten:9
leo schoberwalter
  • Forum-Beiträge: 6

06.02.2012, 16:13:46 via Website

Hallo zusammen,
mein Name ist Leo (17) und ich bin schüler. Als lezte "Aufgabe" in meinem Bildungsgang müssen alle schüller ein Abschlussprojekt machen.
Ich habe mich entschlossen eine App für Android zu programmieren.
Zu beginn der Projektphase dachte ich: " joo... 5 wochen... das langt eh" , wie das als schüler halt so is. Aber jetz is schon die 3. Woche um und ich hab noch fast nichts in der hand. Natürlich geb ich mir mühe und versuche auch das projekt gut abzuschliesen, da es ein großteil meiner Abschlussnote ausmacht.
Allerdings habe ich nur kenntnisse in java jedoch von Android programmierung "null Plan" >.< deshalb komm ich nur extrem langsam vorran.
Ich habe mich hier angemeldet weil ich hoffe dass ihr mir vielleicht über die kommenden 2 wochen einige auftretenden fragen beantworten könnt, und ich doch noch rechtzeitig fertig werde.

kurz zu meiner idee:
Ich Möchte einen extrem simplen Wecker mit "Anti weiterschlaf funktion" machen

was habe ich bis jezt:
Ich hab das ganze in 2 layouts aufgebaut. Als erstes das hauptfenster wo man eine anloge uhr und 3 felder für "weckzeiten" sieht. Auf jedem dieser felder steht der name für diesen wecker, die uhrzeit, symbole für die ausgewählte "weckfunktion" und ein button zum editieren dieser einstellungen.
Wenn man diesen Button drückt wechselt das layout zu meinem edit-layout.
im editlayout hat man dann die möglichkeit Zeit, Name und die Weckfunktion zu ändern.

die Weckfunktionen:
-Kopfrechnen -> man löst ein paar rechenaufgaben und der wecker geht erst aus wenn eine bestimmte Punktzahl erreicht ist.
- Move it! -> der Wecker geht erst aus, wenn man das Smartphone eine bestimmte zeit lang bewegt.
- Light on! -> der wecker geht erst aus, wenn licht angemacht wird.

Meine Erste Frage ist jetzt:
wie übergibt man werte z.B. eine weckzeit von einer Activity an eine andere?
weil ich bis jetz zwei activities habe: die standart-activity und eine die startet, wenn man den edit Button drückt.
Ist das überhaupt notwendig? kann man das iergendwie in eine Activity packen? wenn ja.... wie?
und: Wie speichert ,an a, besten die uhrzeit? hab da iergend was von nem calendar gelesen... kan man den time picker dierecckt verbinden?

Wäre euch echt super dankbar wenn ihr mir hier ein bisschen unter die Arme greifen könntet.
Freue mich auf jede Antwort.

Gruß Leo


PS: Sorry wegen meiner Rechtschreibung >.<

Antworten
Thomas Seeling
  • Forum-Beiträge: 32

06.02.2012, 16:55:01 via Website

Du übergibst Daten von einer Activity zur nächsten mit einem "Bundle", das an den Intent angehängt wird.
Statt HashMap<...> musst Du natürlich Deinen eigenen Datentyp verwenden.
Der Aufruf von setClass legt fest, wer Absender und Empfänger sind. Hier musst Du Deine Klassennamen eintragen.

Im Sender machst Du sowas:
1... lv.setOnItemClickListener(new OnItemClickListener() {
2public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
3 HashMap<String, String> user = eintrag.get(position);
4Intent intent = new Intent();
5Bundle bundle = new Bundle();
6bundle.putString("name", user.get("name"));
7bundle.putString("ort", user.get("ort"));
8intent.putExtras(bundle);
9intent.setClass(Tiernotdienst.this, Details.class);
10startActivityForResult(intent, 1);

und im Empfänger holst Du die Daten so wieder raus:
1public void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 Bundle bundle = this.getIntent().getExtras();
4 if (bundle!=null) {
5 ort=bundle.getString("ort");
6 name=bundle.getString("name");
7 }

Antworten
leo schoberwalter
  • Forum-Beiträge: 6

07.02.2012, 12:06:20 via Website

Hey cool... funktioniert super. Vielen Dank dafür :)
aber jetzt...

ich übergebe jetz die gewählte stunde und minute an meine eigentliche activity und veruch die irgendwie in den alarmmaneger einzubauen.
Was allerdings nicht so funktioniert wie ich mir das wünsche.
Hat jemand erfahrungen mit dem alarmmanager?
hab hier http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmService.html
nachgeschaut, allerdings stellt sich mir nun die frage:
was ist ein PendingIntent?

Antworten
Maximilian O
  • Forum-Beiträge: 990

07.02.2012, 12:11:19 via Website

Den AlarmManager legst du einfach so an:

1Intent intent = new Intent(context, TimeAlarm.class);
2
3 GregorianCalendar weckzeit = ....;
4 // BIRTHDAY_REQUEST_CODE 121212
5 PendingIntent sender = PendingIntent.getBroadcast(context, BIRTHDAY_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
6
7 // Get the AlarmManager service
8 AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
9 alarmManager.set(AlarmManager.RTC_WAKEUP, weckzeit.getTimeMillis, sender);

Ins Manifast kommt dann noch
1<receiver android:name=".TimeAlarm" />

TimeAlarm ist einfach eine Klasse welche BroadcastReceiver extended. In der onReceive spielst du dann deinen Weckton ab.

Liebe Grüße Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
leo schoberwalter
  • Forum-Beiträge: 6

07.02.2012, 14:03:21 via Website

hey... Danke.
Allerdings weis ich jetz net genau was "context" bedeuted

Antworten
Haakon T.
  • Forum-Beiträge: 375

07.02.2012, 14:57:27 via Website

Allerdings weis ich jetz net genau was "context" bedeuted
Schau einfach in die Dokumentation zu PendingIntent.

Antworten
Maximilian O
  • Forum-Beiträge: 990

07.02.2012, 20:00:58 via App

leo schoberwalter
hey... Danke.
Allerdings weis ich jetz net genau was "context" bedeuted
Da du ja direkt aus der activity startest kannst Du das mit getApplicationContext() ersetzen oder einfach this nehmen.

— geändert am 08.02.2012, 19:47:41

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Felix
  • Forum-Beiträge: 259

08.02.2012, 11:31:33 via Website

Tach!

Da du ja direkt aus der activity startest kannst Du das mit getApplicationContext() ersetzen

Die Activity selbst ist bereits ein Context.


Felix.

Antworten
Maximilian O
  • Forum-Beiträge: 990

08.02.2012, 19:48:18 via Website

Felix
Tach!
Die Activity selbst ist bereits ein Context.

Felix.
Danke, habs oben noch ergänzt.

Liebe Grüße
Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten