Myskoheter med Live wallpaper

Diskussion i 'Frågor, support och diskussion' startad av Kaj, 22 mar 2010.

  1. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Tjenare,

    Började skriva lite på ett live wallpaper för Nexus. Iom att jag inte har någon aning om hur man skall göra började jag kolla på lite exempel, och ville veta lite om vilka frame-rates man kan förvänta sig.

    Tyckte att det hela gick lite sisådär i emulatorn (och lite mjukare i min N1). Började kolla vad det var som tog tid, och kom fram till att det är surfaceHandler.lockCanvas() o_O

    I mitt test tog jag till slut bort allt, och har bara en loop som gör detta:
    Kod:
    long start = 0;
    long end = 0;
    
    while (run) {
    	try {
    		start = SystemClock.elapsedRealtime();
    		c = surfaceHolder.lockCanvas();
    		end = SystemClock.elapsedRealtime();
    		Log.i("f1.wallpaper", "Acquire lock took " + (end - start));
    //				synchronized (this.surfaceHolder) {
    //					doDraw(c);
    //				}
    	} finally {
    		if (c != null) {
    			surfaceHolder.unlockCanvasAndPost(c);
    		}
    	}
    
    Att köra koden ovan i en loop (dvs utan att rita något) tar i min emulator 50-70 ms i porträttläge. Ca 150-170 ms i landskapsläge o_O

    Hmm... Skall det vara så här? Skall man inte göra så? Vilka fps borde man kunna räkna med?
     
  2. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Gjorde ett test att göra ett wallpaper. Det är första versionen, och väldigt mycket beta. Vet t.ex att om man kryssar för leave trails i settings så sorteras allt om. Ingen aning om varför det är så, men lär väl få fixa det.

    http://andbin.com/_media/wallpaper/starfieldwallpaper.apk

    Är bara testat lite på min Nexus. Det är ett "stjärnfält" av bollar som kommer mot en, och man kan ändra lite inställningar.