Beiträge von matthias

    Hoi,


    naja ich find getBestProvider ist die beste Kombi, da der nicht starr einfach nur einen Provider nimmt, der ändert sich. Wenn ich hier im Büro hock und meine GoogleMapsDemo App auf mach ist er erst ziemlich weit draussen, erkennt dann die Stadt und zoomt immer genauer da hin wo ich tatsächlich bin. Es sieht so aus, als würd er erst versuchen GPS zu finden, findet nichts, nimmt das Handy-Netz das is schonmal ein Anhaltspunkt auf ca. 100 Meter genau in meinem Fall, dann nimmt er WLAN, weil alles andere zu schlecht ist und weiß genau wo ich bin. 4 WLANs sind hier in der Nähe, das funzt schon sehr genau.


    Bei den Übergängen der einzelnen Provider kanns natürlich schon sein, dass der mal paar Meter springt. Da liest man aber auch des Öfteren, dass die Leute z.B. 10 Koordinaten abfragen und dann einen Mittelwert daraus rechnen, weil von 10 mal 2 dabei sein können, die total Banane daneben liegen. Erwischt man genau den springt er halt mal kurz wo anders hin.



    Gruß,
    matze

    Ahoi,


    mir wär bei meinem Samsung eumel au noch nix aufgefallen, dass das ungenau ist. Ist allerdings das Galaxy Nexus ...


    Wie genau liest du denn den verwendeten Provider aus? Ich hab das mal mit getBestProvider und Criteria.ACCURACY_FINE getestet, hat super funktioniert.



    Gruß,
    matze

    Hoi,


    joa ich acker mich grad durch die Samples durch ... TitlePageIndicator und TabPageIndicator bring ich nicht wirklich zum laufen, jedoch der CirclePageIndicator funzt. Ich spiel grad noch bissl an den Farben rum aber schaut garnicht mal so übel aus. Sind halt dann nicht ausgefüllte Kreise und der wo man ist ist ausgefüllt, hoffentlich haut mich der Designer nicht :D


    Wenns fertig ist post ich bissl Code



    Gruß,
    matze


    EDIT:


    Schaut jetzt eigentlich gar nicht mal so übel aus, find ich.


    In meiner Activity, beim ViewPager zusammen bauen, schaut es so aus



    Im layout.xml schauts recht unspektakulär aus

    HTML
    <com.viewpagerindicator.CirclePageIndicator
        	android:id="@+id/pageIndicator"
        	android:layout_height="wrap_content"
            android:layout_below="@+id/divider2"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
        	android:layout_width="fill_parent" />


    Das Einbinden des Jar-Files ist eigentlich am doofsten. Das Projekt ist ein Maven-Projekt, bei dem bei mir quasi alles Rot war. Builden kann mans aber trotzdem, hab die Goals

    Code
    -X clean install android:generate-sources


    verwendet. Dann das Jar-File aus dem target-Ordner geholt und in den libs-Ordner geworfen. Da meine App auch ein Maven-Projekt ist, musst ich die Dependency dann noch via

    HTML
    <dependency>
    			<groupId>com.viewpagerindicator</groupId>
    			<artifactId>library</artifactId>
    			<version>2.4.1</version>
    			<type>apklib</type>
    		</dependency>


    einbinden.
    Man hätte das Projekt auch direkt referenzieren können bzw. meinem Archiva-Repo hinzufügen, aber wie gesagt ist alles Rot und das war mir jetzt gerade zu doof ;)

    Hoi,


    ich brauch einen ViewPager Indicator, mit dem ich erkenne, dass ich überhaupt nach links und rechts wischen kann und wo ich bin. Mein ViewPager bekommt immer fest 5 Views und bei welcher man grad ist soll durch große und kleine Punkte in einer Reihe deutlich gemacht werden. Also 5 kleine Punkte und schaut man z.B. die 2. View an, ist der 2. Punkt größer als die anderen, ganz simpel eigentlich.


    Nun bei meinen Recherchen bin ich auf den Android-ViewPagerIndicator gestoßen, werd aber iwie nich so recht warm damit.


    Hat jemand Erfahrung mit der Library oder sich schonmal selbst so einen Indicator gestrickt? Irgendwie fehlt mir gerade so der Plan vor dem inneren Auge :(



    Gruß,
    matze



    Hoi,


    irgendwie bin ich etwas verwirrt. Rechnest du da nicht in Abhängigkeit der Bildschirm-Höhe aus, wie weit er springen soll? (in yy2). Wenn du das nicht willst, musst du anstatt "height * 0.25" halt einen fixen Wert benutzen, hätt ich so aus dem Bauch heraus behauptet.



    Gruß,
    matze


    (PS: Mit Code-Tags könnte man deinen Code etwas schöner lesen)

    Najo, Photoshop hab ich nich und der Editor tut irgendwie nich so ganz was ich will. Hängt vll auch bissl damit zusammen, dass ich eine normale Tastatur an einem Mac habe und Shift und Strg irgendwie nicht da sind, wo ich denke, dass sie sind ... naja egal

    Hoi,


    ich bin irgendwie grad so bissl am Verzweifeln, weil ichs nicht gebacken bekomm ein brauchbares Nine-Patch aus meinem Image zu machen .... Hab ein Bild, auf dem zentriert ein Icon ist. Das Icon soll nicht gezerrt werden. Der Hintergrund ist ein Verlauf, der nach links und rechts growen und shrinken soll ...


    Habt ihr Tipps, ne anständige Beschreibung oder ein brauchbares Tool, mit dem ich sowas möglichst nervenschonend umsetzen kann?



    Gruß,
    matze


    EDIT:
    Naja, so wies jetzt ist bleibts, kein Nerv mehr. Der draw9patch Editor des SDKs ist aber echt mal keine Glanzleistung ....

    Ahoi,


    aus gegebenem Anlass hab ich heut vom Android-Developers Newsdroide hier Geburtstagswünsche erhalten. Allerdings 17 am Stück ^^
    Mir tut sich der Verdacht auf da stimmt was nicht ;) vll. schaut mal wer drüber


    Gruß,
    matze

    Hoi,


    "adb devices" aufrufen, wenn das Gerät nicht gelistet ist "adb kill-server" gefolgt von "adb devices" (er startet den Server selber neu) und es müsste da sein.
    Hab Odys X8 noch nie gehört, falls es trotz allem nicht auftaucht ist es so ein super Teil wie mein Arnova 9G2, das kein offizielles Google Device ist. Dann kannst du diese Variante löten, da es nie als Device auftauchen wird.



    Gruß,
    matze

    Hoi,


    joa Quell Reflect spechtet tendentiell auf eine andere Zielgruppe, durch die Aufmachnung, Musik etc. Das grundsätzliche Prinzip ist aber ähnlich, nur dass es bei Quell Reflect gern mal ziemlich nerven kann ^^ Man will ja doch immer die geringste Anzahl möglicher Züge erreichen und sich selbst beweisen, dass man das gebacken kriegt. Da ist Coldy etwas freier und stachelt dich diesbezüglich nicht an, da nirgends steht wie oft du gezogen bist und was die kleinstmögliche Kombination gewesen währe.


    Eine Kleinigkeit fällt mir auf, man kann Coldy draggen und auf dem ganzen Screen herum ziehen. Vll kannst du den noch "fest tackern" und nur Pfeilchen zeigen, in welche Richtung er kann oder so.


    Ansonsten merkt man einfach, dass in der App viel liebe steckt ;)

    Hoi,


    also ich hätte für jeden Button einen AsyncTask angelegt, den einem ThreadPoolExecutor hinzugefügt, der maximal 1 Task im Pool ausführt. Im onPreExecute des AsyncTasks dann x sekunden gewartet, in der doInBackground das Bild geholt und in der onPostExecute das Bild gesetzt.


    Nachdem ich das jetzt geschrieben hab, ist das vermutlich etwas zu Überdimensioniert mit Kanonen auf Spatzen geschossen ... hmm. Was anderes weiß ich grad nich, dass das schnufft. Wenn da mal 15 Buttons gemalt werden und ich kein bock mehr hab will ich die App ja auch sofort beenden und nicht warten, bis die Buttons endlich fertig sind, drück scho 5 mal auf meinen Home Button und bekomm dann ein "App reagiert nicht" von Android selbst.


    Gruß,
    matze

    Hoi,


    schaut ja lustig aus, werds am Wochenende mal an testen und dir Feedback da lassen ;)


    Gruß,
    matze


    Edit:
    Ich find die App cool ^^ Mir fielen keine Bugs auf und läuft gut. Das Prinzip ist das von Quell Reflect, nur dass diese App eher auch Kinder anspricht durch sein Design. Sehr gelungen ;)

    Hoi,


    du kannst mal testen, ob das mit Handler.postDelayed klappt.


    Evtl im AsyncTask selbst, in der onPreExecute


    Java
    view.postDelayed(new Runnable() {
    
    
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    // do something, or maybe not, if you only wanted to wait
                }
            }, 10000);


    Mit CountDownTimer gehts wohl auch.



    Gruß,
    matze

    Hoi,


    so ganz spontan würd ich eine Methode machen, die als int die Runde bekommt und dann via for-Schleife die Buttons malt und ihnen i als Position, wann sie gedrückt werden müssen, mit gebe. Dem letzten gebe ich einen Listener mit, der die methode mit ++runde erneut aufruft.



    Gruß,
    matze

    Hoi,


    also so grundlegend habe ich es auch, nur dass ich keine lokale Ressourcenliste habe, sondern immer in die DB greife.


    Ich geh mal meine Reihenfolge der Aufrufe durch:


    Ich baue eine ImageView und setze das Bild, wobei item.getImage() nur einen String liefert. Also die URL eigentlich.

    Java
    ImageView iv = new ImageView(this);
    			iv.setAdjustViewBounds(true);
    			iv.setPadding(5, 5, 5, 5);
    			// prüfe, ob mein item (bean) ein Image hat
    			if (item.getImage() != null && !item.getImage().isEmpty()) {
    				ImageLoader.getInstance().displayImage(this, item.getImage(), iv, true);
    			} else {
    				iv.setImageResource(R.drawable.default_video);
    			}


    Die displayImage sieht so aus


    Mein ImageTask ist nicht ganz konform, der hat irgendwie einen hau weg, ruft die onPostExecute nicht zuverlässig auf allen Devices auf, deshalb sieht er so aus


    Der handelt sowohl Online als auch Offline Bilder. Also welche, die im assets-Ordner liegen.


    Mein PhotoHandler hat die getImage, die in die DB greift und den blob holt. Wenn der leer ist holt er sich das File vom assets bzw. von der URL frisch. Ich geh mal nur auf getImageFromUrl ein


    das id.execute().get() hebelt zwar den AsyncTask etwas aus aber dem onPostExecute trau ich nicht mehr. Im ImageDownloader mach ich im Grunde das gleiche wie du, URLConnection aufbauen und Content abgreifen. Nur kleiner machen tu ich das Bild gleich, weil sonst später der RAM aus geht


    Das SplashScreen.deviceWidth und height lese ich ein mal im SplashScreen direkt am Anfang aus

    Java
    Display display = SplashScreen.this.getWindowManager()
    						.getDefaultDisplay();
    deviceWidth = display.getWidth();
    deviceHeight = display.getHeight();


    Ist deprecated, muss ich mal schaun, durch was ich das noch ersetze.
    Meine Tools.calculateInSampleSize sieht so aus


    und ist aus irgend einem Forum entwendet ^^


    Ganz Ganz wichtig ist dann noch das image.recycle() vor dem zweiten decodeStream, weil ältere Android-Versionen (glaub unterhalb Honeycomb) das alte image nicht selbst recyclen, wenn die Variable überschrieben wird und man hat das Bild ein mal in zu groß im RAM und dann ein zweites mal Kleiner, womit der Sinn der Aktion dahin währe.


    Glaub hab nix vergessen, also der Ansatz ist derselbe, wie du ihn jetzt auch verwirklicht hast. Nur hab ich extreme Probleme gehabt mit großen Bildern. Ich musste die aus Facebook auslesen und bekomm dort wenns blöd her geht ziemlich große Bilder. Facebook bietet jedes Bild zwar in glaub 9 verschiedenen Größen an, von dene auch das der deviceWidth entsprechend passendste genommen wird, nur kanns auch sein, dass das 1920x1080 oder so ist, da die Handys ja auch immer besser werden.


    Sollte ich noch einen Codeschnipsel vergessen haben oder etwas unklar ist, meld dich ;)


    Gruß,
    matze

    Hoi,


    bei 84x84 hast du echt noch 0 Probleme, das müsste ziemlich flott rennen und auch keinerlei Speicherprobleme (sowohl DB als auch RAM) auftauchen. Wenn du ein paar Codeschnipsel brauchst kann ich dir welche liefern, ich hab einiges an Nerven an dem Thema gelassen ^^



    Gruß,
    matze

    Hoi,


    also eines meiner Projekte hat auf dem Gerät 28,5MB und beherbergt 103 Bilder, von denen je die große Ansicht und das Thumbnail als Blob in der DB gehalten werden. Die verbergen sich alle hinter einem Menüpunkt und werden alle untereinander mit meiner beschriebenen Methode angezeigt und auf einem Samsung Galaxy Nexus passiert das (mal gecached) so flott, dass man die Dummy-Bilder nicht sieht. Beim allerersten Mal ist es natürlich schon etwas fad langsam, wenn er erstmal 100 Bilder verwursten muss.


    Da Phil hier von 40 Einträgen spricht, müsste mein Aufbau eigentlich ausreichend sein.


    Gruß,
    matze

    Hoi,


    ich benutze als Cache SQLite. Mein Primary Key ist die Bild-URL, der Value ist ein Blob. Bekomme ich jetzt via JSON/RSS 20 Items, durchlaufe ich diese und setze als Bild ein Standard-Bild. Nebenbei Erzeuge ich einen AsyncTask, den ich einem ThreadPoolExecutor hinzufüge, der je nach CPU-Kernen des Devices eben diese Zahl gleichzeitiger Elemente bearbeiten kann. Der AsyncTask bekommt meine ImageView mit, um im onPostExecute dann das Dummy-Bild durch das echte Bild zu ersetzen. Ist der AsyncTask dran, schaut er in die DB, ob ein Eintrag existiert. Wenn Ja, wurstet er den Blob in ein Drawable und gibt das der ImageView. Wenn nicht, lädt er es erst runter, wirft es in die DB und gibt es dann zurück.


    Damit das ganze nicht in einem MemoryLeak endet rechne ich die Bilder bevor sie als Blob in die DB kommen noch auf max-width=Device-Width, damit ich kein unnötig riesiges Bild habe. Bzw. Wenn ich nur ein Thumbnail brauche rechne ich max-width=Device-Width / 3, so passt noch etwas Text daneben ...



    Gruß,
    matze

    Hoi,


    bin seit geraumer Zeit am überlegen, wie ich am bequemsten und besten mein Handy im Auto als MP3-Player verwenden kann. Mein Auto hat keinerlei Verbindungsmöglichkeiten via Bluetooth oder so, nur einen Cinch Anschluss für Input, also über die Auto-Boxen abspielen funktioniert einwandfrei.


    Nun habe ein Samsung Galaxy Nexus mit original KFZ-Halterung, wo eben so ein Cinch im Sockel integriert ist. Via NFC-Tag startet automatisch die App Car Dashboard, wo ich eine Taste mit Winamp "Alle Wiedergeben" belegt habe. Nun drück ich da drauf startet Winamp, funktioniert, Controls in der Notification Bar und kann zurück zum Car Dashboard und auch mal den Titel wechseln, wenn ich an einer Ampel stehe oder so. Da Winamp aber ziemlich lästig ist, weil es sich andauernd von selbst wieder startet und irgendwie das da nach vorne langen auch doof ist, weiß ich nicht wie ich es sonst machen könnte.


    Habt ihr sowas ähnliches bei euch auch umgesetzt? Kennt jemand einen besseren Player mit Controls in der Notification Bar? Oder ganz verrückt, gibts eine Bluetooth-Fernbedienung o.ä. ? xD Will das irgendwie etwas schnuffiger gestalten ...



    Gruß,
    matze