Stichwort: NDK
Beiträge von Marco Feltmann
-
-
Also auf 'der anderen Seite' gibt es mit AV Foundation ein feines Framework zu allem Möglichen mit der Kamera und unter Anderem ein BarcodeReader Sample.
Anyways, meine Erfahrung is, wie auch auf http://code.tutsplus.com/tutor…code-reader--mobile-17162 beschrieben, dass man recht gut fährt die Dinger als .jar zu kompilieren und dann dieses .jar einzubinden.
Bei UI Kram läuft das allerdings nicht, das muss via Code eingebunden werden. -
Ich bin eher der buchbare Single Homer.
Zu Hause fühle ich mich auf dem BlackBerry, ich entwickle aber nur iOS und Android.
Allerdings mit Schwerpunkt auf iOS.Sogar gerade privat für meine Frau…
-
+hm+
Ich habe bisher nur an eigenen Projekten gebaut. Vermutlich musst Du Dir erst mal die Quelltexte besorgen und durchsehen. dann erkennst Du bestimmt schon, wo Du eingreifen musst. -
Vielleicht für Deinen Fall nicht so ganz relevant, aber mit einem passenden Importer könntest Du ein OpenGL Gebilde Deines in Blender erstellten Sockels in einem OpenGL View darstellen und die Animationsberechnungen dem OpenGL View überlassen. Ist allerdings ein gewaltig höherer Arbeitsaufwand.
-
Vielleicht reicht der Platz auf dem Kleinen nicht aus, um das so darzustellen, wie Du das gern hättest?
-
Seit Android 4 werden Netzwerkzugriffe auf dem Mainthread mit Abstürzen geahndet.
Wenn Du das natürlich schon berücksichtigt hast, wären Ausgaben aus LogCat hilfreich.
-
8 ist wohl FEATURE_ACTION_BAR
Ich weiß ja nicht recht, ob Du da an der richtigen Stelle eingreifst.onPanelClosed dürfte ja immer aufgerufen werden, wenn irgendein Panel/Window Deiner App geschlossen wird…
-
Naja, wenn Du onPanelClosed eh schon überschreibst kannst Du ja für jeden Aufruf die FeatureID ausgeben lassen.
Da kannst Du dann manuell vergleichen (0) oder maschinell via (featureId == FEATURE_OPTIONS_PANEL)
-
Hmmm…
ZitatThis calls through to onOptionsMenuClosed(Menu) method for the FEATURE_OPTIONS_PANEL panel, so that subclasses of Activity don't need to deal with feature codes.
Erklärt also immer noch nicht, warum das bei Dir nicht will.
Außer vielleicht, dass Dein Menü nicht FEATURE_OPTIONS_PANEL als FeatureID hat. Das könntest Du ja mal nachprüfen. -
Zunächst mal scheint Dein Code im onPrepareOptionsMenu falsch eingeordnet zu sein.
onPrepareOptionsMenu wird jedes Mal ausgeführt, bevor Dein Menu angezeigt wird – du änderst aber nix dynamisch an der Menüstruktur.In onCreateOptionsMenu() wären die Einträge besser aufgehoben.
onOptionsMenuClosed() soll genau das tun, was es sagt und was Du erwartest.
Wenn es nie aufgerufen wird, nutzt Du es dann vielleicht in einer falschen Klasse?Du kannst das nur in einem Dialog oder einer Activity überschreiben (und natürlich in davon abgeleiteten Klassen)
Auf jeden Fall sollte die Methode aufgerufen werden. Wenn das bei Dir nicht der Fall ist, müsstest Du wohl irgendwas verkehrt machen… -
Sehr gut!
Eine Kleinigkeit nur: Da C++ keine Garbage Collection hat, musst Du Dich natürlich selbst um das Speichermanagement kümmern.
Dazu gehört auch, dass Du die via env->NewGlobalRef() angelegte globale Referenz irgendwann wieder weg räumst. -
Echt spannend…
-
-
Dann könntest Du versuchen ein eigenes schwarzes leicht transparentes View über Deine Tabelle zu legen, bevor Du das PopUp anzeigst.
-
Keine Ahnung.
Mittlerweile halte ich Deinen UI Ansatz aber für irgendwie fehlerhaft.Wenn Du die Anzeige im Hintergrund ausblenden willst, bedeutet das ja, dass sie für die Arbeiten im PopUp Window irrelevant sind.
Warum lässt Du dann die irrelevanten Informationen weiter sichtbar stehen?Es hilft nicht bei der Feinabstimmung über die anderen Maschinen(teile), da deren relevanten Werte größtenteils verdeckt sind.
Es führt bei Dir zu Problemen mit dem Layout, der Anzeige von Spinnern etc.pp.Warum machst Du für diese Eingaben keine eigene Activity, die die Übersicht einfach komplett überlagert?
Keine störenden Informationen im Hintergrund, keine Probleme mit PopUpWindow auf PopUpWindow, keine verwirrten wild auf dem Hintergrund herumtippenden Nutzer. -
Laut Doku soll FragmentTransaction.replace() dieselbe Instanz der FragmentTransaction zurückgeben, damit Du die Aufrufe fein aneinander ketten kannst.
Meinst Du den Rückgabewert von FragmentTransaction.commit()?
In dem Fall empfinde ich -1 als falschen Wert:ZitatReturns the identifier of this transaction's back stack entry, if addToBackStack(String) had been called. Otherwise, returns a negative number.
Du hast eindeutig addToBackStack() aufgerufen, ergo halte ich -1 für falsch.
Weiterhin sagt commit() nur aus, dass das System die Anzeige vornehmen darf, wenn es denn im Runloop des Mainthreads das nächste Mal dazu kommt.
Passiert das alles auf dem Mainthread? Kannst Du spaßeshalber nach diesen Methoden noch irgendwie am UI rumändern, ob sich da was ändert?(Also statt des Fragmentwechsels hart dem FrameView ein erzeugtes Subview hinzufügen oder sowas.)
-
Ich habe den Mythos gesehen und kann Dir sagen: Es gibt ihn wirklich.
Allerdings zeige ich mich nicht sehr begeistert von der Idee, Dir komplett Deine Arbeit abzunehmen.Zeig mal her, was Du so hast, dann kann ich Dir sagen, was anders muss.
-
Was haben die üblichen Prüfungen ergeben?
(Wert von Transaction und Fragment zur Laufzeit, Aktuell geladenes Layout kennt wirklich R.id.fragment_detail, etc.pp.)
-
Und Openstreetmap sieht so aus als könnte man da auch nur Meilensteine auswählen, um einen Pin zu setzen beispielsweise, aber nicht zur Markierung zwischen zwei Punkten.
Das ist so gänzlich falsch.
Derartige Karten bestehen eigentlich immer aus zwei Dingen:
- Repräsentation (Satellitenbild, Kartenansicht, Typographie, was auch immer)
- Rohdaten
Google, Apple, Bing und Konsorten bieten immer nur die Manipulation der Repräsentation und Nutzung der von ihnen vorgehaltenen Rohdaten an.
OpenStreetMap hingegen bietet die komplette und kostenlose Nutzung der gesammelten Rohdaten an.
(Für die weltweiten Daten ungefähr 554GB XML)Da sind auch so Informationen hinterlegt wie 'Art: Gewässer' und Ähnliches.
Mit diesen Daten lässt sich so einiges graphisch darstellen.Sollte das Ganze aber nicht so gewünscht sein, dann müsst ihr es irgendwie hin bekommen, die vagen Informationen in Geokoordinaten umzurechnen.
Linien ziehen könnt ihr auf Google Maps meines Wissens wo immer ihr wollt.