rota - ver pantalla android en pc sin depuracion usb
¿Cómo mantengo mi pantalla desbloqueada durante la depuración del USB? (15)
Dos opciones vienen a mi mente:
escribe una aplicación que forzará que el tiempo de espera de la pantalla sea muy alto. Use SCREEN_OFF_TIMEOUT o
STAY_ON_WHILE_PLUGGED_IN
.Si tu teléfono está rooteado y estás conectado a wifi en la misma red que la computadora en la que estás desarrollando, puedes disfrutar de esta maravillosa aplicación que viene con una opción para el tiempo de espera de la pantalla también: wifi adb .
Android OS2.2 solía tener una opción en Configuración / Aplicaciones / Desarrollo para desactivar el bloqueo de pantalla durante la depuración de USB. Después de actualizar mi Samsung Galaxy S a OS2.3.3 esta opción desapareció y es MUY frustrante seguir desbloqueando mi teléfono mientras se depura.
¿Se ha movido esta opción o hay otra forma de hacerlo? (¡Odio cuando se eliminan las opciones útiles sin ningún motivo!)
Gracias por adelantado...
En la consola
while true; do adb shell input keyevent mouse ; sleep 1 ; done
Existen múltiples opciones, muchas de las cuales tienen efectos secundarios HORRIBLES (subjetivos). Enumeraré lo que he encontrado y los efectos secundarios que podría pensar.
Soy flojo, posiblemente como muchos otros, y no me gusta estar pendiente de algo innecesariamente. Esto significa que la opción "Oh, voy a encender esto mientras estoy trabajando y luego apagarlo cuando haya terminado" no es viable. Lo olvidará y eventualmente experimentará alguno de los efectos secundarios enumerados a continuación.
TL; DR
FLAG_KEEP_SCREEN_ON
con una Debug.isDebuggerConnected()
FTW! Manténgase despierto durante la carga , Screen timeout y wake-lock son opciones inviables si solo desea depurar.
¡También hay una ventaja de esta solución trabajando desde la API 1 Y la depuración wifi!
Configuración> Opciones de desarrollador> Permanecer despierto al cargar
Grabar : debería haber una gran señal de alarma en cualquier persona que encienda esto. Dice "mientras se carga" no "mientras se depura". Lo que significa que incluso si su teléfono está enchufado a la red, seguirá funcionando. Esto es especialmente malo si tienes una pantalla AMOLED (por ejemplo, la serie Galaxy S) que quema cosas. Tuve esta opción durante unas semanas y ahora tengo una barra de estado de retrato permanente ...
Notificaciones : incluso si usa un brillo bajo y no se olvide de apagar la pantalla cada vez que apaga el teléfono, algunas aplicaciones activan la pantalla si solo recibe una notificación simple que lo mantiene encendido la mayor parte del tiempo mientras está conectado. en.
Seguridad : si solo deja la pantalla encendida mientras carga y se lo necesita rápidamente para algo en el trabajo, lo primero no será "Ah, déjame bloquear mi teléfono primero" y puede exponer sus secretos sucios si se fue accidentalmente Encendido. Déjenme señalar que si están trabajando en un entorno en el que no pueden confiar en sus colegas, yo reconsideraría ese empleo.
Configuraciones> Pantalla> Tiempo de espera de pantalla
Esto es muy arriesgado si tienes muchas aplicaciones que te dan notificaciones. Especialmente si tienes algunos spammers (Facebook, Family Guy o incluso GMail si recibes muchos correos).
Grabar : el riesgo es alto con esto también. Ahora ni siquiera lo restringe a "estar en el cable", por lo que solo permanecerá encendido siempre que se olvide de apagarlo explícitamente o recibir una notificación.
Descarga de la batería : si obtienes uno, la pantalla permanecerá encendida durante el período de tiempo especificado, drenando la batería. Y continuará porque a veces te olvidas de apagarlo o simplemente recibes una notificación.
Hotpocket : si recibe una notificación mientras el teléfono está en su bolsillo, la iluminación de la pantalla y el espacio confinado calienta sus bolsillos e incluso puede quemarse.
Marcación de bolsillo : si su pantalla se enciende mientras el teléfono está en su bolsillo, el riesgo de una esfera de bolsillo aumenta con cada segundo. Hoy en día esto es menos probable, porque la aplicación del teléfono generalmente está bien escondida, pero a mi bolsillo le gusta cambiar la fecha muy a menudo o leer mis correos electrónicos.
Seguridad : imagina que estás en un lugar público y tu teléfono está sobre la mesa, tus amigos probablemente abusarán de tu pantalla desbloqueada si das la vuelta por el tiempo suficiente para hablar con alguien o tomar un descanso rápido. Especialmente si están ebrios. Obviamente, tiempos de espera más cortos disminuyen este riesgo.
Usando un wake-lock
Permiso : Deberá agregar un permiso android.permission.WAKE_LOCK
posiblemente innecesario a su aplicación (afortunadamente debería ser fácil de agregar solo para variantes de depuración gracias a Manifest Merger en el Plugin de Gradle).
Codificación : también necesitará administrar la liberación del bloqueo usted mismo y tal vez necesite crear un Servicio solo para esto. Me gustaría señalar aquí que aún no he usado esta característica en Android.
Inútil : tampoco ayuda a mantener la pantalla encendida, ya que solo mantiene la CPU despierta. Ver documentation .
FLAG_KEEP_SCREEN_ON
mientras se adjunta un depurador
Si lees la documentation de este, encontrarás una aproximación muy cercana a tu problema.
Codificación : solo a un inconveniente que puedo pensar aquí es que necesitas modificar algún código, pero es extremadamente simple (suponiendo que tienes una actividad BaseActivity
que se BaseActivity
todas tus otras actividades):
@Override protected void onResume() {
super.onResume();
if (BuildConfig.DEBUG) { // don''t even consider it otherwise
if (Debug.isDebuggerConnected()) {
Log.d("SCREEN", "Keeping screen on for debugging, detach debugger and force an onResume to turn it off.");
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.d("SCREEN", "Keeping screen on for debugging is now deactivated.");
}
}
}
Para usarlo, todo lo que necesita hacer es adjuntar un depurador, luego dejar la aplicación (botón Inicio / Tareas o apagar la pantalla) y luego volver a ella para activar onResume
.
Dependiendo de lo que normalmente depure, puede valer la pena poner lo anterior en onCreate
para que se registre antes y esperemos que mantenga la pantalla onResume
mientras se onResume
ciclo de vida de la actividad antes de onResume
.
En general, recomiendo usar Run
lugar de Debug
al probar el código y solo adjuntar el depurador cuando encuentre algo: esto hará que su aplicación se multiplique por diez más rápido y esta opción la mejor que existe.
He creado una app para este propósito. Puedes buscarlo en google play "Keep Awake for Debugging". Mantendrá tu teléfono desbloqueado / en pantalla solo cuando tengas habilitada la depuración de ADB. No está restringido solo a USB, también funciona a través de wi-fi.
Jorge Cevallos tiene razón.
Para Android 4 y superior:
- Ve a Configuración> Acerca del teléfono
- Toque varias veces (aproximadamente 10 veces) en "Número de compilación".
- Luego vuelve al menú de Sttings y encontrarás las "Opciones de desarrollador"
- En "Opciones de desarrollador", verá la opción "permanecer despierto".
Que te diviertas.
Pruebe esto en el shell adb, aunque parece que no funciona en algunos dispositivos:
svc power stayon usb
Puede configurar el Tiempo de espera de la pantalla en 30 minutos o desactivarlo. Esta opción se encuentra en: Configuración / Pantalla / Tiempo de espera de pantalla
Espero eso ayude.
Puede volver a habilitar las opciones de desarrollador, cuyas configuraciones están ahora ocultas:
1 - Vaya a Configuración> Acerca de> Información de software> Más ...
2 - Luego toque Número de compilación 7 veces, lo que le dará una cuenta atrás, y luego diga "ahora es un desarrollador".
¡Y las Opciones de desarrollador están de vuelta!
Reemplaza 12345 por tu código de desbloqueo. Entonces este script de shell desbloquea su teléfono:
adb shell input keyevent KEYCODE_WAKEUP # activate
adb shell input touchscreen swipe 530 1420 530 1120 # swipe up
adb shell input text 12345 # input password
adb shell input keyevent 66 # press enter
Nunca debe desactivar las funciones de seguridad en su teléfono (como se señaló anteriormente). Asegúrese de que nadie pueda leer ese archivo de script tampoco.
Sencillo. Simplemente agregue el siguiente código a su actividad, y su pantalla se encenderá SÓLO cuando depure:
@Override
protected void onResume()
{
Log.d( tag, "onResume()" );
try
{
super.onResume();
if( BuildConfig.DEBUG && Debug.isDebuggerConnected() )
{
Log.d("SCREEN", "Keeping screen on for debugging, detach debugger and force an onResume to turn it off.");
getWindow().addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON );
}
else
{
getWindow().clearFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON );
Log.d( "SCREEN", "Keeping screen on for debugging is now deactivated.");
}
}
catch( Throwable t )
{
Log.e( tag, "onResume() - Exception: " + t.getMessage(), t );
}
}
Tengo 2 dispositivos con Android 2.3.3 y ambos tienen esta opción en Configuración / Aplicaciones / Desarrollo y se llama Permanecer despierto (la pantalla nunca se apagará mientras se carga). Y uno de ellos es Samsung Galaxy S.
También tengo un dispositivo con Android 2.2 (HTC Desire) y también tiene la misma funcionalidad en la misma ubicación.
Es extraño que tu no, ¿usas una ROM personalizada?
Tengo la versión de Android 2.3.6 y en settings
-> applications
-> development
hay una opción para permanecer despierto (es decir, su pantalla nunca dormirá) mientras está conectado para cargar.
Tuve el problema de Sampe. Encontré esta aplicación para mantener la pantalla desbloqueada cuando el teléfono está conectado.
Use esto en su Manifiesto:
<uses-permission android:name="android.permission.WAKE_LOCK" />
¡y tu pantalla no se apagará!
# find out if screen is on works on android 5.0+
screenOn=`adb shell dumpsys power | grep "Display Power" | grep ON`
if [ -z "$screenOn" ]; then
echo "turning screen on"
adb shell input keyevent KEYCODE_POWER
# unlock by emulating slide up
adb shell input touchscreen swipe 930 880 930 380
fi