Also am Quellcode wirds nicht liegen, du kannst einfach ein neues Android Projekt erstellen und dann ohne Änderungen im Eclipse auf "Run" (oder "Debug") gehen und das läuft. Schau mal im "Console" Fenster von Eclipse, was da steht, wenn du die App so gestartet hast. Da müssten mehrere Meldungen kommen so wie "Uploading to device...", "Installing...", "Starting Activity..." oder auch ne Fehlermeldung, wenn etwas nicht geht.
Beiträge von Thrakbad
-
-
Hmm also ich würde da jetzt im onStartCommand des Service zwei AsyncTasks starten. Einen, der die Verbindung herstellt und einen, der auf Antwort lauscht, der dann wieder die Activity benachrichtigen kann.
Ein Service ist übrigens kein eigener Prozess oder Thread, sondern vereinfacht gesagt nur der Teil der Anwendung, der nicht vom OS abgeschossen wird, wenn er mal gestartet wurde. Wenns um die das Beeinflussen von Resourcen geht musst du das über irgendne Threading-Lösung nochmal selber einbauen. -
Also ich kenn keine Liste...das musst du für die einzelnen Sensoren einzeln googlen.
-
Gern geschehen, als Entwickler weiß man halt, dass so nen Stacktrace evtl. deutlich mehr hilft als ein "Da geht aber was nicht..."
Naja, ob man jetzt ein Icon zuordnen oder ein zwei Worte lesen muss, darauf kommt es wohl nicht so sehr drauf an^^
Joa, ist jetz kein so enorm wichtiger Punkt, aber ist halt auch nichtmal eine Zeile Code. Die Icons sind ja eh schon auf jedem device vorhanden. Bsp. für das klassische Settings icon:
-
Also ein Service ist eig. dafür da, dass andere Apps mit deiner kommunizieren können bzw. Dinge selbstständig im Hintergrund laufen können, die dann wiederum irgendwie deine Activity auslösen. Die Call-Hierarchie ist also normalerweise andersrum als du das beschreibst. Wenn du irgendwas Konkretes im Service aus deiner Activity aufrufen willst, kannst dus in der Regel auch über AsyncTasks oder sowas direkt da lösen.
Was soll dein Service denn tun? -
So, ich brauchs eig. auch nicht mehr, aber mir is grad langweilig. Getestet aufm Galaxy Tab mit 2.2 Stock Firmware (hab auch gleich ddms angeschmissen dabei, machts einfacher die Fehler zu beschreiben ). Layout sieht Alles gut aus.
Fehler beim eingeben der Endzeit für ne neue Stunde, konkret beim antippen des Textfelds:
Code
Alles anzeigen02-21 23:03:37.069: ERROR/AndroidRuntime(6452): FATAL EXCEPTION: main 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): java.lang.IllegalArgumentException: current should be >= start and <= end 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.widget.NumberPicker.setCurrent(NumberPicker.java:408) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.widget.TimePicker.updateHourDisplay(TimePicker.java:382) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.widget.TimePicker.setIs24HourView(TimePicker.java:341) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.app.TimePickerDialog.<init>(TimePickerDialog.java:141) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.app.TimePickerDialog.<init>(TimePickerDialog.java:102) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at com.onedroid.schoolhelper.addStunde.onCreateDialog(addStunde.java:352) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.app.Activity.onCreateDialog(Activity.java:2472) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.app.Activity.createDialog(Activity.java:881) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.app.Activity.showDialog(Activity.java:2547) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.app.Activity.showDialog(Activity.java:2514) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at com.onedroid.schoolhelper.addStunde$4.onClick(addStunde.java:116) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.view.View.performClick(View.java:2408) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.view.View$PerformClick.run(View.java:8818) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.os.Handler.handleCallback(Handler.java:587) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.os.Handler.dispatchMessage(Handler.java:92) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.os.Looper.loop(Looper.java:123) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at android.app.ActivityThread.main(ActivityThread.java:4627) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at java.lang.reflect.Method.invokeNative(Native Method) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at java.lang.reflect.Method.invoke(Method.java:521) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 02-21 23:03:37.069: ERROR/AndroidRuntime(6452): at dalvik.system.NativeStart.main(Native Method)
Beim Noten eingeben die Exception abfangen, wenn keine Zahl eingegeben wird:
Code
Alles anzeigen02-21 23:07:08.131: ERROR/AndroidRuntime(6604): FATAL EXCEPTION: main 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): java.lang.NumberFormatException: 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at org.apache.harmony.luni.util.FloatingPointParser.parseDblImpl(Native Method) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:283) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at java.lang.Double.parseDouble(Double.java:287) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at com.onedroid.schoolhelper.Noten$4.onClick(Noten.java:216) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at android.view.View.performClick(View.java:2408) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at android.view.View$PerformClick.run(View.java:8818) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at android.os.Handler.handleCallback(Handler.java:587) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at android.os.Handler.dispatchMessage(Handler.java:92) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at android.os.Looper.loop(Looper.java:123) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at android.app.ActivityThread.main(ActivityThread.java:4627) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at java.lang.reflect.Method.invokeNative(Native Method) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at java.lang.reflect.Method.invoke(Method.java:521) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 02-21 23:07:08.131: ERROR/AndroidRuntime(6604): at dalvik.system.NativeStart.main(Native Method)
Generelle Verbesserungsvorschläge:
Bereits bestehende Fächer beim Anlegen neuer Stunden zur Auswahl anbieten. Evtl. auch schon ne Liste der üblichen Schulfächer von vornerein mitgeben. Selbes könnte man für Lehrer oder auch Räume machen- Bei Noten das Eingabefeld standardmäßig auf numerisch stellen (kann auch sein, dass das mein Keyboard einfach nicht macht)
- Beim "Note hinzufügen" Dialog is die Schrift auf den Buttons schwarz und nicht wie sonst weiß -> man denkt, die sind deaktiviert
- Im Hauptmenü sollte man auf die angezeigten Notizen und Prüfungen tappen können, um sie wie gewohnt zu bearbeiten
- Evtl. sollte man im Stundenplan bei den Aktionen für das Fach, das man angeklickt hat, auch "Prüfung eintragen", "Hausaufgaben eintragen", "Notiz eintragen" haben, die dann automatisch das entsprechende Datum und Fach haben
- Ich fänd es sinnvoll, wenn man die Notenverwaltung mit der Prüfungsverwaltung kombiniert und bei den Prüfungen dann später einfach die Note eintragen kann und nicht extra ne neue Einzelnote eintragen muss
- Evtl. drüber nachdenken im Menü die standardicons für Info, Settings usw verwenden oder gleich eigene Icons. Dass man erst lesen muss macht den Umgang komplizierter
-
Is ne .pls Datei nicht einfach ne Playlist? Was is, wenn du die URLs, die darin angegeben sind, nimmst?
-
Da is bitmap wohl aus irgendnem Grund null...schau am besten mal mitm Debugger durch, ob überhaupt was in deinem data[] drin ist. Dann musst du ja eher den Grund suchen, warum das nicht funktioniert.
-
Hmm bei mir sind die Koordinaten die lokalen vom ImageView...aber das is ja auch nicht so schlimm, du kannst ja die aktuelle Position des ImageViews auch einfach abziehen
-
Ja, die Koordinaten sind auf den ImageView bezogen
-
Grade getestet...das is eig. total einfach. Du musst mit setOnTouchListener(..); nen OnTouchListener für den ImageView festlegen und dann kannste in dessen onTouch(..) Methode einfach mit event.getX() und event.getY() die lokalen Koordinaten abfragen.
Kleines Beispiel:
Java
Alles anzeigenpublic class BlaTest extends Activity implements OnTouchListener { TextView txt = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); txt = (TextView)findViewById(R.id.TextView01); ImageView im = (ImageView)findViewById(R.id.ImageView01); im.setOnTouchListener(this); } public boolean onTouch(View view, MotionEvent e) { String result = "You clicked on Point "; result += e.getX() + ", " + e.getY(); txt.setText(result); return false; } }
-
Die Karte kann verschoben und per Pinch to Zoom vergrößert und verkleinert werden.
Meinst du damit, dass der ImageView im Layout verschoben werden kann oder einfach das Bild, das angezeigt wird scrolled? -
Ich benutz FrameLayouts auch so gut wie nie...aber schwer isses sicher nicht
-
ja, ich würd mal sagen, dass bei nem Klick auf die Fläche, wo der Button gezeichnet wird die onClick() Methode des Canvas aufgerufen wird, weil man eben eig. den Canvas anklickt und nicht den Button. Also ich würd das über nen FrameLayout machen, das ist sauber. Wenns gar nicht anders geht kannst du auch mal versuchen, die onClick() fürn Canvas zu überschreiben und da immer false zurück zu geben, dann müsste das event an den nächsten View drunter weiter geleitet werden. Vllt. klappt das ja, measure und layout wurden ja für den button schon ausgeführt.
-
Hmm kann ich mal deinen Code dazu sehen? Hab sowas selber noch nicht gemacht, aber ich würde sagen, dass eine bessere Methode ist, den Button mit nem Frame-Layout über dem Canvas zu positionieren.
-
Hallo,
Galaxy Tab mit 2.2 sieht Alles richtig aus. Hab ich das richtig verstanden, dass man nur einmal Geschlecht und Alter angibt und dann das entsprechende Bild angezeigt kriegt?
Ich fände für so eine App wäre essentiell, dass man die Impfungen dann noch entsprechend abhaken kann, evtl. mit nem Datum wann mans zuletzt gemacht hat und Reminder, wann man wieder sollte. Es wär außerdem gut, wenn sich die App die eingegebenen Werte merken würde und nicht jedes Mal fragen müsste. Man könnte auch noch Informationen zu den Krankheiten anzeigen, damit man weiß, gegen was man sich da eigentlich impft. Dann hilft man nicht nur der Gesundheit, sondern auch der Bildung
Ich würde die Abfrage mit den chronischen Grunderkrankungen schon beim Alter und Geschlecht machen als Checkbox (evtl. auch aufgeschlüsselt welche Krankheiten es sind). Die Anzeige, was bei chronischen Grunderkrankungen zu tun ist, besser als Dialog machen und nicht als Toast. Dann kann mans auch lesen, bevors wieder verschwindet. Grade bei so lustigen Wörtern wie Pneumokokken schaut man dann doch lieber zweimal hin
Ansonsten gibts nicht viel zu sagen, kann ja ehrlich gesagt noch nicht so viel, die App. Ich würde das User Interface verschönern, also möglichst eigene Grafiken für buttons etc. verwenden und nicht den normalen Standard-Hintergrund. Apps in dem Android Standarddesign wirken immer irgendwie, als hätte sie nen Student eben mal für ne Übung zusammengeklatscht (sprich: wirkt billig).Edit: noch was eingefallen. Wozu denn die Internet-Permission? Hab da jetzt nichts gesehen, das die benötigen würde. Nen Link öffnen kann man auch ohne. Da würd ich auch schaun, dass unnötige permissions weg gelassen werden. Manche User schreckt das tatsächlich ab
-
Hmm nochmal nachgeschaut...du hast Recht, das macht nix aus, wenn man nur auf Gleichheit testen mag.
-
Also afaik geht das nicht. Außer du schreibst dir selber eine XML-Datei, die du dann parsen kannst.
-
Mach dir nen Vector, der die 6 Arrays beinhaltet und hol dir dann mit ner ersten zufallszahl das entsprechende Array aus dem Vector. Kann natürlich auch nen Set, ArrayList oder sonst ne Collection sein. Ich würd auch für deine Arrays eher Collections verwenden, das ist sicherer und besser erweiterbar.
-
Also dass du sie nicht klassisch schließen kannst ist ganz normal, das ist halt Androids (diskussionswürdiges) Konzept