StandBy como actividad
Me gustaría crear una actividad de StandBy para mi dispositivo, y hasta ahora he creado una actividad que cuando se llama desactivará mi pantalla.
El código es el siguiente:
- BroadcastReceiver Vs WakefulBroadcastReceiver
- WakeLock bajo bloqueo GCM_LIB
- Reconocer las pulsaciones del botón de volumen cuando la pantalla está desactivada Android
- ¿Cómo deshabilitar el botón de encendido?
- Wake + Wifi bloqueo sin efecto
public class MainActivity extends Activity { private SensorManager mSensorManager; private PowerManager mPowerManager; private WindowManager mWindowManager; private WakeLock mWakeLock; private Button button; private TextView textView; /** Called when the activity is first created. */ @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { // Get an instance of the SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); // Get an instance of the PowerManager mPowerManager = (PowerManager) getSystemService(POWER_SERVICE); // Get an instance of the WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); mWindowManager.getDefaultDisplay(); setContentView(R.layout.activity_main); // textView = (TextView)findViewById(R.id.textView1); button = (Button) findViewById(R.id.testText); button.setOnClickListener(mButtonStopListener); mWakeLock = mPowerManager.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK, "Your Tag"); // mWakeLock.acquire(); final WindowManager.LayoutParams params = getWindow() .getAttributes(); params.screenBrightness = 0; getWindow().setAttributes(params); } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Log.e("onCreate", e.getMessage()); } } // END onCreate View.OnClickListener mButtonStopListener = new OnClickListener() { @Override public void onClick(final View v) { try { if (mWakeLock.isHeld()) { mWakeLock.release(); System.err.println("mWakeLock.release() onTouch"); } } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Log.e("onPause", e.getMessage()); } } }; @Override protected void onResume() { super.onResume(); try { if (mWakeLock.isHeld()) { System.err.println("mWakeLock.release() onResume"); mWakeLock.release(); } else { System.err.println("mWakeLock.acquire() onResume"); mWakeLock.acquire(); } } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Log.e("onResume", e.getMessage()); } } @Override protected void onPause() { super.onPause(); }
}
Como he dicho este código me permite apagar la pantalla, y soy capaz de activar la pantalla haciendo clic dos veces el botón de encendido (No sé por qué tengo dos haga clic en el botón dos veces, pero esto es un problema secundario) .
El problema principal es que cuando la pantalla desactiva la acción se genera ACTION_SCREEN_OFF, y como consecuencia el androide EthernetService desactiva mi conexión. ¿Alguien sabe cómo mantener la conexión activa?
Gracias;)
- ¿Sigue funcionando un servicio incluso cuando el teléfono está dormido?
- ¿Cómo liberar un bloqueo de despertador?
- Android no recibe actualizaciones de ubicación cuando la pantalla está bloqueada
- Servicio androide con repetición de hilo en el fondo con el bloqueo parcial de la estela
- OnStop llamado antes onStart
- ¿Hay alguna manera de recibir un evento de espera de la CPU en Android?
- conexión a internet en pausa después de bloqueo de teléfono android
- Wakelock y wifilock no funcionan
De su pregunta veo que usted necesita mantener el servicio Ethernet vivo.
En primer lugar, el problema podría resolverse si tuviera conectividad WiFi en el dispositivo y una conexión WiFi disponible. En este caso usted podría utilizar el WifiLock, junto con un Parcial WakeLock – vea esta pregunta .
Sin embargo, si realmente necesitas usar la conexión Ethernet, puedes intentar escuchar la intención de ACTION_SCREEN_OFF y luego intentar volver a habilitar la conectividad Ethernet siguiendo las instrucciones de la respuesta superior a esta pregunta . Tenga en cuenta, sin embargo, que en este caso es posible que tenga que arraigar su dispositivo.
Espero que esto ayude..
Soy capaz de activar la pantalla haciendo clic dos veces el botón de encendido (no sé por qué tengo dos haga clic en el botón dos veces, pero esto es un problema secundario)
Eso sucede porque técnicamente la pantalla sigue encendida con el brillo ajustado a cero, así que lo que realmente sucede es que apague la pantalla con el primer botón de encendido y, a continuación, ON, eso es dos clics.
Sospecho que la conexión se deshabilitó sólo después de presionar el primer botón de encendido. No veo donde en el código que proporcionó restaurar el brillo de la pantalla.
Pruebe a ajustar la sensibilidad de la pantalla a 0,2 en lugar de cero y supervisar el estado de la conexión o mediante el registro. También el siguiente código debería ser suficiente.
Apague la pantalla
WindowManager.LayoutParams params = getWindow().getAttributes(); params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON; previousScreenBrightness = params.screenBrightness; params.screenBrightness = 0; getWindow().setAttributes(params);
Vuelva a encender la pantalla
WindowManager.LayoutParams params = getWindow().getAttributes(); params.screenBrightness = previousScreenBrightness; getWindow().setAttributes(params);