Peppers Tablet verfügt über Android 4.0.4, auf dem der Webbrowser ausgeführt wird. Wahrscheinlich scheint es der Android-Standardbrowser zu sein, und JavaScript usw. (obwohl es 4.0.4 ist, kann es schwierig sein) funktioniert. Selbst wenn Sie die Standardbox usw. verwenden, ist die Protokollumgebung etwas schlecht und die Entwicklung scheint schwierig zu sein. Deshalb habe ich einige ausprobiert, also dieses Memo.
Den Testcode für diese Zeit finden Sie unter https://github.com/yacchin1205/pepper-tablet.
Lassen Sie uns zunächst kurz zusammenfassen, wie Sie Ressourcen für Tablets in Ihrer Anwendung definieren. Grundsätzlich wie in Nehmen Sie ein Bild mit Pepper auf und zeigen Sie es auf einem Tablet an.
Erstellen Sie einen HTML-Ordner in Ihrer Anwendung und fügen Sie index.html und andere erforderliche Ressourcen ein.
Platzieren Sie das Feld App anzeigen in der Tablet-Box-Bibliothek. Grundsätzlich sind nur die folgenden Felder in Ordnung
Bei der Version von Choregraphe, die auf Pepper TechFes 2014 verteilt wird, gibt es jedoch ein Problem mit der Pfadkonfiguration, die von der Tablet-Box angenommen wird. -Akihabara / items / 87def938b6553ee9c1e9 #% E8% A3% 9C% E8% B6% B3show-image% E3% 83% 9C% E3% 83% 83% E3% 82% AF% E3% 82% B9% E3% 81% AE% E5% AE% 9F% E8% A3% 85% E3% 82% 92% E3% 81% BF% E3% 81% A6% E3% 81% BF% E3% 82% 8B) Das Verarbeitungsteil muss geändert werden.
Sie sollten nun den in index.html
definierten Inhalt auf Ihrem Tablet sehen. Das Anzeigen des Inhalts selbst ist relativ einfach.
Die Atmosphäre des "HTML" -Verzeichnisses in der Anwendung ähnelt der "public_html" des Home-Verzeichnisses des Benutzers, das über den Webserver sichtbar ist. Es scheint, dass der lokale Webserver in Pepper über den Browser des Tablets referenziert werden kann.
Selbst wenn in JavaScript ein Fehler auftritt, wird im Choregraphe-Protokoll standardmäßig nichts gesagt. Selbst wenn ein Fehler auftritt, weiß ich es überhaupt nicht. Dies ist eine schmerzhafte Entwicklung, daher sollten Sie den Fehler protokollieren oder den Status mit "console.log" ausgeben.
Außerdem habe ich diesmal versucht, die folgenden Inhalte auf dem Tablet anzuzeigen und zu testen. Es gibt Schaltflächen, die absichtlich einen Fehler auslösen, und Schaltflächen, die "console.log" aufrufen, wie unten gezeigt.
Nun, ich möchte so etwas wie Chrome Developer Tools wie den Screenshot, aber trotzdem wird nur das Protokoll ausgegeben ...
Wenn Sie sich angesichts der Architektur von NAOqi das API-Dokument ansehen und sich fragen, ob das Protokoll als Speicherereignis angezeigt wird, werden Sie vorerst ein großartiges finden.
Event: "ALTabletService/message" callback(std::string eventName, std::string subscriberIdentifier)
Raised when message occurs.
Wenn Sie beim Überwachen von "ALTabletService / message" mit einem Speicher-Watcher absichtlich einen Fehler im Inhalt machen, sieht dies folgendermaßen aus.
Umm ...!
Nun, es ist etwas schwierig zu überprüfen, ob es sich nur um einen Speicherbeobachter handelt (wahrscheinlich wird nur das letzte Ausgabeprotokoll angezeigt). Die Menschheit ist das, was Sie dazu bringt, es zumindest im Log Viewer zu sehen.
Als ich mir die API-Dokumentation ansah, fand ich etwas namens "ALTabletService :: onConsoleMessage (message)". Es scheint, dass die Erfassung von Berührungsereignissen der Tablet-Box-Bibliothek über diesen Signalmechanismus erfolgt, und die Verarbeitung mit diesem Signal scheint der AL TabletService-API-Stil zu sein. Also habe ich das Feld App anzeigen wie folgt geändert.
Sie finden die geänderte Version des Codes im Webview-Console-Projekt auf Github, wo ich ihn zuerst geschrieben habe.
Erstellen Sie eine Methode zum Empfangen der Konsolennachricht. Fügen Sie den folgenden Code am Ende des Python-Skripts im Feld App anzeigen hinzu.
def consoleMessageCallback(self, message):
self.logger.info("[ConsoleMessage] %s" % message)
Wenn ich die Nachricht erhalte, verwende ich "self.logger", um das Protokoll auszugeben.
Fügen Sie den folgenden Code hinzu, bevor Sie "tabletService.loadApplication" ausführen.
#Starten Sie die Überwachung der Konsole
if not self.consoleConnectId:
self.consoleConnectId = tabletService.onConsoleMessage.connect(self.consoleMessageCallback)
Jetzt können Sie "consoleMessageCallback" so einstellen, dass es auf "onConsoleMessage" reagiert.
Heben Sie die Registrierung des Handlers beim Entladen auf. Fügen Sie der Methode "onUnload" den folgenden Code hinzu.
#Ende der Konsolenüberwachung
if self.consoleConnectId:
try:
self._getTabletService().onConsoleMessage.disconnect(self.consoleConnectId)
self.consoleConnectId = None
except Exception as e:
self.logger.error(e)
Initialisieren Sie außerdem die Mitglieder beim Laden. Fügen Sie der onLoad-Methode den folgenden Code hinzu.
self.consoleConnectId = None
Wenn Sie das Projekt mit dieser Änderung ausführen, wird das Protokoll in der Protokollanzeige angezeigt. Wenn ein Fehler auftritt, sieht es so aus.
[INFO ] behavior.box :consoleMessageCallback:80 _Behavior__lastUploadedChoregrapheBehaviorbehavior_1143658480__root__ShowApp_2: [ConsoleMessage] Uncaught TypeError: Cannot call method 'call' of null
Ich habe vergessen, es aufzunehmen, aber ich kann die Ausgabe von console.log
sehen. Es ist nicht genug, aber ich denke, dies wird das Debuggen viel einfacher machen. Erwartet.
Ich würde gerne damit spielen, wie viel es mit JavaScript auf Peppers Tablet funktioniert ...