En mi aplicación, en el método onCreate() de la actividad principal, estoy creando un bloqueo de activación para que la CPU siga funcionando si el teléfono se enciende standb/pantalla se apaga.Android: la aplicación no debe funcionar correctamente, la aplicación debe seguir ejecutándose en espera
También en el método onCreate intento crear un servicio que use el acelerómetro. Este servicio debe ejecutarse continuamente mientras la aplicación está abierta y monitorea los valores del acelerómetro (sé que esto no es bueno para la batería, pero necesito que lo haga). Aquí está mi código en este momento y el servicio comienza bien.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Howaya");
wl.acquire();
if (appStart == true)
{
Intent AccelService = new Intent(this, Accelerometer.class);
AccelService.putExtra("unreg", false);
startService(AccelService);
}
appStart = false;
}
Tengo el siguiente conjunto de permisos en mi manifiesta -
<uses-permission android:name="android.permission.WAKE_LOCK" />
He intentado esto con diferentes cerraduras - luminosidad de la pantalla y el brillo completo en vano también. Mi salida en Logcat es aquí -
F/PowerManager(15628): android.util.Log$TerribleFailure: WakeLock finalized while still held: Howaya
F/PowerManager(15628): at android.util.Log.wtf(Log.java:260)
F/PowerManager(15628): at android.util.Log.wtf(Log.java:239)
F/PowerManager(15628): at android.os.PowerManager$WakeLock.finalize(PowerManager.java:329)
F/PowerManager(15628): at dalvik.system.NativeStart.run(Native Method)
He visto a personas que dicen que wakelocks parciales no funcionan como deberían hacerlo, como en este enlace Google standby error page pero esto fue liberado y cerró el año pasado, así que no sé ese es el caso, alguien puede ayudar aquí por favor? Tengo un HTC Desire con respecto a ese último punto también, gracias.
Bien, lo siento si no estaba claro y gracias por la respuesta. Mi pregunta era cómo puedo ejecutar un wakelock en mi teléfono para que mi aplicación se ejecute mientras la pantalla todavía está apagada, ya que el código que estoy usando no funciona. Preferiría no tener la pantalla encendida para que no desperdicie tanta batería y no tenga que usar el widget en caso de que decidiera ponerlo en el mercado (entonces otros usuarios tendrían que usar el widget) – bobby123
@ bobby123 : Una actividad no puede tener una necesidad lógica de un 'WakeLock 'parcial. Un * servicio * podría tener la necesidad de un 'WakeLock' parcial, pero no una actividad, cuyo único propósito para existir es mostrar cosas en la pantalla. Así que, o saca tu 'WakeLock' de la actividad y entra al servicio (ajusta la lógica de tu negocio para que coincida), o usa' android: keepScreenOn'. Adquiera su 'WakeLock' en' onCreate() 'de su servicio y libérelo en' onDestroy() '. Use 'startForeground()' para que su servicio no se nuble y proporcione al usuario una manera fácil de acceder a una actividad para detener el servicio. – CommonsWare
Eso es lo que quería saber, gracias. Moveré el bloqueo de activación al servicio ya que es para lo que realmente lo necesito. Tengo un botón de menú para que el usuario finalice el servicio en cualquier momento. Una última pregunta, por favor, ¿sabe si el método onSensorChanged() para el acelerómetro aún funciona bajo un bloqueo parcial de activación o sigue siendo un problema con Google? – bobby123