funktionsweise alarmmanager (?)

  • Antworten:53
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 62

05.11.2012 22:58:31 via Website

aso sorry ich hatte in einem bsp angeguckt und da hatte der als name receiverclass reingeschrieben folglich habe ich gedacht ....

Antworten
  • Forum-Beiträge: 62

06.11.2012 15:56:36 via Website

ps: hier wurde als receiver class die reciever class angegeben

http://de.wikibooks.org/wiki/Googles_Android/_BroadcastReceiver;

in deinem beispiel wird eine Aktivity aufgerufen (d.h der user sieht etwas):

ich hätte es gerne so,dass der Alarm eine bestimmte Methode in der mainklass aufruft bzw im Hintergrund etwas tut.
ich habe diesbezüglich schon mal im Internet gesucht aber noch nichts Brauchbares gefunden und suche deshalb gerade weiter.Es wäre toll wenn mir jemand einen Link schicken würde, wenn er so was schon mal gemacht hat (muss ich einen Service erstellen ???)

— geändert am 06.11.2012 15:57:39

Antworten
  • Forum-Beiträge: 62

06.11.2012 17:21:22 via Website

So Ich hab jetzt nochmal ein paar quellen durchgelesen fast alle verwenden als Receiver die Recieverclass
"Ein BroadcastsReceiver muss im Manifest deklariert werden. Die minimal Deklaration sieht
wie folgt aus:
<receiver android:name="MyBroadcastReceiver"></receiver>"

-> wofür brauchte ich sonst ne receiver class da sie sonst ja eigentlich nie gebraucht wird

Irgendwie ist das problem,dass egal ob ich ne neue Aktivity oder den Receiver da reinschreibe einfach nichts passiert.
Denn ich bekomme keinen Toast und ich bekomme keinen System.out.println();
Das heißt der Receiver erhält nichts !!!
In anderen beispielen ist es möglich einen Toast in genau dieser Receive Methode zu erzeugen.

Ich hätte es gerne so,dass der Broadcast alert erkannt wird und im Hintergrund (des Handys ,App nicht mehr gestartet) eine Notifikation mit einem bestimmten Text erzeugt wird (den ich am liebsten mit dem Broadcaster übergeben würde)

Mir gehen so langsam die Suchwörter für Google aus es schein dass kein Mensch so was schon mal gemacht hat, was ich nicht glaube
Es wäre wenn jemand der die Lösung weiß sie kurz reinschreiben würde -ich suche in der Zeit mal weiter-

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

06.11.2012 17:21:45 via Website

NewAndroidGuy
in deinem beispiel wird eine Aktivity aufgerufen (d.h der user sieht etwas)

Wovon redest Du? Mein Beispiel in diesem Thread zeigt lediglich einen Manifest-Eintrag für einen Receiver - mehr nicht.

NewAndroidGuy
ich hätte es gerne so,dass der Alarm eine bestimmte Methode in der mainklass aufruft bzw im Hintergrund etwas tut.

Was immer getan werden muss programmierst Du in den onReceive() - sofern es nicht zu lange dauert. Wenn es länger dauert wirst Du im onReceive() einen Thread (Stichwort AsyncTask) anwerfen müssen.

Ich weiß immer noch nicht wo genau Dein Problem ist. Läuft denn Dein BroadcastReceiver mittlerweile? Wird denn onReceive() bei Dir mittlerweile aufgerufen? Wenn ja, programmier Deine Anforderung einfach da rein.

Mein Vermutung ist Du kopierst einfach alles zusammen. Das wird nicht funktionieren da Beispiele von mir oder anderen schon alleine in den verwendeten Namen abweichen.

— geändert am 06.11.2012 17:23:47

Antworten
  • Forum-Beiträge: 62

06.11.2012 17:26:15 via Website

das problem ist genau gerade das,dass der Receiver nichts empfängt:

Also der Abschickcode ist gleich geblieben im Manifest hab ich (denn dummen fehler beseitigt) den Namen auf die Receiverclass geändert.

Das Abschicken funktioniert auf jedenfall, dass hab ich überprüft und es funkt. .

Wenn er jedoch nach 10 sek. den Broadcast erhalten müsste kommt nichts kein (hab ich reingeschrieben) Toast und KEIN System.out,also Log Eintrag,


ACH PS ICH MEINTE BEISPIELE IM INTERNET (hab logischerweise erst mal geguckt)

— geändert am 06.11.2012 17:43:19

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

06.11.2012 17:43:46 via Website

Ich denke mal der Fehler liegt in Zeile 11.

Ich mag nicht raten. Du müsstest zeigen:

* Den Start des BroadcastReceivers und wann Du den ausführst
* Den Manifest Eintrag
* Die Klasse für den BroadcastReceiver

P.S.: Die 10 Sekunden hast Du falsch verstanden. Das ist nicht die Dauer bis der Broadcast eintrifft sondern die Zeit in der Du spätestens den onReceive bearbeitet haben musst bevor der ANR zuschlägt.

— geändert am 06.11.2012 17:44:35

Antworten
  • Forum-Beiträge: 62

06.11.2012 17:45:47 via Website

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="|||||||||||||||||||||||||||<"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".GridstundenplanActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustPan" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<receiver
android:name="TimeAlarmReceiver"
android:exported="false"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>

</manifest>

Antworten
  • Forum-Beiträge: 62

06.11.2012 17:53:30 via Website

public class GridstundenplanActivity extends Activity {

:
:
:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

PS HIER KOMMEN UNTERSCHIEDLICHE LAYOUTS FÜR UNTERSCHIEDLICHE HALTEPOSITION DES HANDYS

int orientation = getResources().getConfiguration().orientation;

if (allowlandview==false){
orientation=Configuration.ORIENTATION_PORTRAIT;
}
if (allowportraitview==false){
orientation=Configuration.ORIENTATION_LANDSCAPE;
}
if (orientation == Configuration.ORIENTATION_PORTRAIT) {

PortraitLayout();
HaControllUnit();

}

else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {

Landscapelayout();
HaControllUnit();

} ^^ HIER WERDEN DIE METHODEN DAFÜR AUFGERUFEN


Landscape Landout:

public void Landscapelayout() {


gridView = (GridView) findViewById(R.id.gridView1); // initialiesierung
adapter = new WeekAdapter(this,ArrayManager.mainTableInformations);
gridView.setAdapter(adapter);
Broadcaster(); METHODE DIE DEN BROADCAST AUFRUFT
gridView.setOnItemClickListener(new OnItemClickListener() {

:
.
.
.

public void Broadcaster(){

Calendar time = new GregorianCalendar();
Calendar.getInstance();
//time.add(Calendar.DAY_OF_WEEK_IN_MONTH, +1);
//time.set(Calendar.HOUR_OF_DAY, 19);
//time.set(Calendar.MINUTE,50);
time.add(Calendar.SECOND, 10); NACH 10 SEK MACHE ETWAS
System.out.println(time);

AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent AlarmIndent2 = new Intent(getApplicationContext(), GridstundenplanActivity.class);
PendingIntent AlarmPendIndent2 = PendingIntent.getBroadcast(getApplicationContext(), 192837, AlarmIndent2, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), AlarmPendIndent2);

if (am==null){System.out.println("nicht verschickt");}

}

DIE RECEIVER CLASS

package net.cojobo.j_bruehl;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.Toast;




class TimerAlarmReceiver extends BroadcastReceiver {


public void onReceive(Context context, Intent arg1) {
System.out.println("RECIEVED");
Toast.makeText(context,("ERLÖSUNG"),Toast.LENGTH_LONG).show();

}}

ICH HOFFE ES IST EIN DUMMER FEHLER,DER MIR ENTGANGEN IST:

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

06.11.2012 17:57:10 via Website

Und in Teil 2 folgt der nächste Fehler. Wie schon mal von mir angemerkt startest Du eine Activity statt einen Broadcast in dem Intent.

1Intent AlarmIndent2 = new Intent(getApplicationContext(), GridstundenplanActivity.class);

Das wird eine ganz lange Reise mit uns beiden ;-)

— geändert am 06.11.2012 17:57:52

Antworten
  • Forum-Beiträge: 62

06.11.2012 17:57:29 via Website

Nein, ich habe keinen Permissionerror.

Die Logcat zeigt mir das Datum an,was ich "gebaut habe" -> danach kommt der Broadcaster

darauf ist ende in der Logcat

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

06.11.2012 17:58:21 via Website

NewAndroidGuy
Nein, ich habe keinen Permissionerror.

Die Logcat zeigt mir das Datum an,was ich "gebaut habe" -> danach kommt der Broadcaster

darauf ist ende in der Logcat

Permission ist trotzdem an falscher Stelle.

1<uses-permission
2 android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

— geändert am 06.11.2012 17:59:20

Antworten
  • Forum-Beiträge: 62

06.11.2012 18:01:26 via Website

Du redest von der Manifest nicht wahr.

Wie gesagt,bei vielen beispielen im Internet wird die Broadcastreciever(class) dort eingetragen.

ich habe dennnoch deinen Rat befolgt und eine aktivity gebaut,diese wollte sich auch starten.... ->daher weiß ich der broadcaster funkt.
das OnRecieve meldete dennoch nichts.


PS USER PERMISSION AUF RICHTIGE STELLE GESETZT

— geändert am 06.11.2012 18:05:00

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

06.11.2012 18:08:23 via Website

Ja, sie gehört auch ins Manifest nur an anderer Stelle.

1<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2... >
3
4 <uses-permission
5 android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
6
7 <application
8... >
9 <activity
10...
11 android:name=".DeineActivity" >
12 <intent-filter>
13 <action
14 android:name="android.intent.action.MAIN" />
15
16 <category
17 android:name="android.intent.category.LAUNCHER" />
18 </intent-filter>
19 </activity>
20
21 <receiver
22 android:exported="false"
23 android:name=".DeinBroadcastReceiver" >
24 <intent-filter>
25 <action
26 android:name="android.intent.action.BOOT_COMPLETED" />
27 </intent-filter>
28 </receiver>
29 </application>
30
31</manifest>

— geändert am 06.11.2012 18:09:20

Antworten
  • Forum-Beiträge: 62

06.11.2012 18:15:41 via Website

Okay danke dennoch für all dein Bemühungen
ich glaube ich werde einen neuen Thread posten und nochmals explizit das problem äußern

— geändert am 06.11.2012 18:16:28

Antworten
  • Forum-Beiträge: 62

06.11.2012 18:27:20 via Website

aso :D okay gefixt....

was muss jetzt eigentlich wirklich in der manifest bei reciever stehen ....
es ist doch die Recieverclass


Leider immer noch keine Antwort des recieves

Antworten

Empfohlene Artikel