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:

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;)

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); 
  • ¿Es Wakelock de Android una necesidad para los servicios de fondo?
  • Servicio, WakeLock
  • ¿Debería llamar a WakeLock antes de crear una notificación?
  • Si un wakelock es adquirido y mi aplicación se bloquea, ¿qué debo hacer?
  • ¿Debo usar WakeLock en IntentService?
  • ¿Traer la aplicación al frente, activar la visualización y desbloquear desde AlarmManager?
  • ¿El sistema operativo Android libera un wakelock si la aplicación o el servicio que lo contiene se destruye?
  • Cómo mantener el vibrador encendido indefinidamente de un servicio o receptor
  • Desactivar el dispositivo cuando la aplicación solicite al usuario
  • Android: apaga la pantalla sin activar la pantalla de suspensión / bloqueo - Activar con pantalla táctil
  • Wake se bloquea servicio androide recurrente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.