Comment puis-je contrôler l'écran mobile depuis le navigateur?

Mettre à jour
Références: perfecto mobile and device anywhere


Je travaille sur une solution de test mobile basée sur le cloud, qui devrait être compatible avec iOS et Android. Il nécessite que les périphériques mobiles connectés soient gérés à partir du navigateur.

  • Android 3.0 CalendarView
  • Y at-il des raisons de continuer à utiliser IntentService pour traiter les messages GCM?
  • La vidéo ne joue qu'une seule fois dans la vue sur le Web d'Android
  • Google Map Android Api V2 Sample Code ne fonctionne pas
  • NotSializableException lorsque vous appuyez sur le bouton d'accueil
  • La meilleure façon de cacher le json
  • J'ai appris qu'un périphérique mobile possède un type d'agent (qui nécessite l'enracinement d'un périphérique) installé qui

    • Écoute l'écran mobile vers le navigateur
    • Et injecter des événements

    Existe-t-il une autre approche pour y parvenir sans l'enracinement / la prison enfreignant l'appareil?

    Cette question pourrait être très large, mais je me suis efforcé de trouver la bonne direction.

    Pour iOS, je prends une idée de cette question SOF .

    Tout pointeur est apprécié.


    Mise à jour 1:
    Cette question est proche de ce que je recherche.

    Mise à jour 2: J'ai trouvé Android Screen Library pour les appareils Android et l'ai testé sur plusieurs appareils. Il ne nécessite pas d'enracinement du périphérique, mais nécessite un redémarrage du service à partir de la ligne de commande sur chaque redémarrage du périphérique et ne peut pas fonctionner sur Lollipop. .

    Mise à jour 3: Alors que Android Screen Library aide à capturer l'écran sans enracinement, mais cela ne permet pas d'injecter des événements. Même la capture d'écran semble buggy – capture parfois avec un patch noir et ne fonctionne pas sur Lollipop!

    Mise à jour 4: Références: parfaite mobile et périphérique partout. Il semble qu'ils utilisent ADB pour gérer de nombreuses choses comme l'installation / désinstallation d'applications, en envoyant des événements via la adb shell input tap xy . Quelqu'un peut-il faire preuve de lumière?

    Mise à jour 5: J'ai rencontré ce message SO de Adrian Taylor , un ancien ingénieur de RealVnC. C'est l'explication la plus détaillée. Bien que Android Lollipop possède des API MediaProjection, mais il semble stocker les captures d'écran en tant que fichiers MP4 sur sdcard. De plus, selon le tableau de bord de google – Mise à jour d'août 2015, Lollipop est encore d'environ 15% de la base d'installation Android, So Kitkat doit être pris en compte pour toute solution.

    Mise à jour 6: J'ai trouvé libvncserver , je me demandais si cela fonctionnerait. Je vais tester et publier le résultat.

    Merci

  • Dialog FLAG_DIM_BEHIND ne fonctionne pas sur Android 5.x (Lollipop)
  • OnNavigationItemSelectionné dans ActionBar est appelé au démarrage comment l'éviter?
  • SwipeRefreshLayout de support21 force à l'ancien style
  • Obtenir une largeur de panneau de notification Android
  • Comment faire une requête pour SpeechRecognizer par défaut
  • Une bibliothèque Android JAR peut-elle dépendre d'une bibliothèque Android AAR?
  • One Solution collect form web for “Comment puis-je contrôler l'écran mobile depuis le navigateur?”

    Utilisez WebKit, cela vous rapprochera le plus près possible de votre demande et vous vous sentirez probablement plus proche du processus d'approbation avec Apple

    Voici un exemple simple, ce qui fait essentiellement un sélecteur sur la page Web, m'envoie la valeur de la chaîne sur l'application, vous procédez à cette valeur et renvoyez le résultat, puis vous affichez le titre de la page Web.

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

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

    À la fin de l'application, vous configurez ce qui suit:

    // configurez WebView et placez la vision du Web à l'écran

     [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]; 

    Gérer les événements 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]; } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.