2012-02-09 9 views
8

Sto realizzando un gioco 2D per Android e di recente ho studiato l'ottimizzazione.Uso della batteria, cosa aspettarsi?

Ho guardato l'uso della batteria in Impostazioni e ho scoperto che dopo aver lasciato il mio gioco in primo piano (con lo schermo acceso) per poco più di un'ora, avevo esaurito l'11% della batteria (Motorola Xoom Honeycomb).

È qualcosa che gli utenti dovrebbero aspettarsi da un gioco sul proprio telefono/tablet?

Un po 'di informazioni:

  • mio gioco utilizza OpenGL-ES per il rendering (continua rendering)

  • Logic viene eseguito in un thread separato per le prestazioni.

  • Ho usato getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); pensato che fosse necessario in quanto il gioco richiede un po 'di tempo per pensare all'utente.

  • Particelle Semplici

Quindi, è quel tipo di consumo della batteria normale per un gioco?

E quali operazioni è possibile adottare per ridurre il consumo della batteria?

+0

Se è possibile programmare un piccolo 'Thread.wait (timeout)' nei vari thread, rimuoverà la tassa sulla CPU e quindi sarà meglio per la batteria. Ad esempio, se hai aggiornato lo schermo di recente, puoi effettivamente attendere, ad esempio, almeno 20ms (50Hz) prima di eseguire di nuovo l'aggiornamento. –

+0

@BicycleDude questa è una buona idea. Avrebbe comunque bisogno di un buon 30fps durante alcune parti del gameplay ma suona bene. – Jack

+0

@BicycleDude è Thread.sleep una cosa simile? – Jack

risposta

0

Lasciare lo schermo da solo (senza il gioco in esecuzione) genererà un consumo simile della batteria.

Il mio consiglio è di impostare lo schermo su Dim quando c'è una pausa nel gioco, o se l'utente non ha toccato lo schermo in X quantità di tempo come opporsi a lasciarlo acceso a piena luminosità.

si può fare questo regolando screenBrightness/buttonBrightness,

La gamma di questi campi è 0-> 1

si può vedere il contesto di impostazione risposta questo here

+0

ma l'utilizzo della batteria dello schermo non ha la sua sezione nel grafico? (che utilizza il 43% della batteria in base alle mie statistiche) – Jack

+0

sì! Lo fa. Ciò contribuirebbe comunque all'utilizzo totale della batteria. A parte questo e ciò che BicycleDude ha suggerito, suggerirei di leggere questo articolo: http://developer.android.com/training/monitoring-device-state/index.html –

+0

Una cosa da tenere presente è che l'oscuramento dello schermo non funziona bene/a tutti se l'utente ha impostato la luminosità su "Automatico" (non sono mai riuscito a farlo funzionare anche se al momento non è una priorità) – Basic

0

di Justin è buona, ma non dimenticare alcune nozioni di base vecchia scuola.

Avere il proprio programma in attesa esaurirà anche la batteria. È necessario utilizzare la CPU per far avanzare il gioco, ma non è necessario averlo atteso. Assicurati di sospendere il processo per il tempo stimato fino alla successiva iterazione del ciclo di elaborazione del gioco.