¿Cómo puedo controlar la pantalla del móvil desde el navegador?

Actualizar
Referencias: perfecto mobile and device anywhere


Estoy trabajando en una solución de prueba móvil basada en la nube que debería soportar iOS y Android. Requiere que los dispositivos móviles conectados sean manejados desde el navegador.

He aprendido que un dispositivo móvil tiene un tipo de agente de programa (que requiere el dispositivo para ser arraigado) instalado que

  • Arroja la pantalla del móvil al navegador
  • E inyectar eventos

¿Hay algún otro enfoque para lograr esto posiblemente sin rooting / jail romper el dispositivo?

Esta pregunta puede parecer muy amplia, pero he estado tratando de averiguar para moverse en la dirección correcta.

Para iOS, estoy tomando pistas de esta pregunta SOF .

Se aprecia cualquier puntero.


Actualización 1:
Esta pregunta está cerca de lo que estoy buscando.

Actualización 2: He encontrado Android Screen Library para dispositivos Android y lo he probado en un par de dispositivos. No requiere que el dispositivo esté enraizado pero requiere un reinicio del servicio desde la línea de comandos en cada reinicio del dispositivo y no pudo conseguir que funcione en Lollipop. .

Actualización 3: Mientras que la Biblioteca de pantalla Android ayuda a capturar la pantalla sin enraizar pero no ayuda a inyectar eventos. Incluso la captura de pantalla parece buggy – en algún momento captura con parche negro y no funciona en Lollipop!

Actualización 4: Referencias: perfecto móvil y dispositivo en cualquier lugar Parece que están utilizando ADB para manejar muchas cosas como la instalación de aplicaciones / desinstalar, el envío de eventos a través de la adb shell input tap xy . ¿Alguien puede arrojar algo de luz?

Actualización 5: Me he encontrado con este Post SO de Adrian Taylor , un ex-ingeniero de RealVnC. Esta es la explicación más detallada. Aunque Android Lollipop tiene MediaProjection APIs pero parece almacenar las capturas de pantalla como archivos MP4 en sdcard. Además, según el tablero de google – actualización de agosto de 2015 Lollipop sigue siendo alrededor del 15% de la base de instalación de Android, por lo que Kitkat tiene que ser considerado para cualquier solución.

Actualización 6: he encontrado libvncserver , preguntándome si hará el trabajo. Voy a probar y publicar el resultado.

Gracias

Utilice WebKit, esto le conseguirá casi tan cerca como usted puede conseguir y todavía MÁS que probablemente pasa con el proceso de la aprobación con Apple

Aquí está un ejemplo simple, esto hace básicamente un selector en la página de la tela, me envía el valor de la cadena en la aplicación, usted procesa ese valor y envía detrás el resultado y después usted fija como el título de la página de la tela.

 <h2 id="headline">loading...</h2> <select id="selector"> <option value="systemVersion" selected>iOS Version</option> <option value="systemName">System Name</option> <option value="name">Device Name</option> <option value="model">Device Model</option> <option value="userInterfaceIdiom">User Interface</option> <option value="identifierForVendor">Vendor ID</option> </select> 

Aquí está el javascript:

 var headline = $("#headline"); var selection = $("#selector"); function set_headline (text) { headline.text(text); } function call_native () { var prop = selection.val(); set_headline("asked for " + prop + "..."); window.webkit.messageHandlers.observe.postMessage(prop); } setTimeout(call_native, 1000); selection.on("change", call_native); 

En el extremo de la aplicación, configura lo siguiente:

// configurar webView y colocar webview en la pantalla

 [controller addScriptMessageHandler:self name:@"observe"]; configuration.userContentController = controller; NSURL *jsbin = [NSURL URLWithString:k_JSBIN_URL]; _webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]; [_webView loadRequest:[NSURLRequest requestWithURL:jsbin]]; [self.view addSubview:_webView]; 

Manejar eventos webView:

 -(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { // Check to make sure the name is correct if ([message.name isEqualToString:@"observe"]) { // Log the message received NSLog(@"Received event %@", message.body); // Then pull something from the device using the message body NSString *version = [[UIDevice currentDevice] valueForKey:message.body]; // Execute some JavaScript using the result NSString *exec_template = @"set_headline(\"received: %@\");"; NSString *exec = [NSString stringWithFormat:exec_template, version]; [_webView evaluateJavaScript:exec completionHandler:nil]; } } 
  • ¿Cómo crear una interfaz de usuario como el nuevo mercado o Google más?
  • ¿Cómo aumentar el tamaño de la casilla de verificación en las páginas web basadas en el navegador móvil o en la tableta?
  • Impresión desde Android
  • Aplicaciones móviles independientes de la plataforma
  • ¿Cómo usar correctamente -webkit-device-pixel-ratio en iOS y Android?
  • IPhone y Android de programación para juegos móviles?
  • Navigator.geolocation.GetCurrentPosition lanza el error "El último proveedor de ubicación ha sido deshabilitado"
  • Obtener la información de "mejor conjetura" de una imagen como la búsqueda de imagen inversa de google
  • ¿Existe un método para desactivar la función Auto-resize de la aplicación de Gmail en el diseño de un correo electrónico?
  • JavaCard 3 en el mundo real?
  • ¿Por qué una aplicación de teléfono muy simple utiliza plan de datos móvil?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.