2011-01-16 4 views
1

Ich habe benutzerdefinierte InputMethod, die eine BroadcastListener darin haben. Wenn der Hörer eine Absicht in onReceive() Methode abruft, rufe ich die onKey Methode meiner InputMethod auf und auf diese Weise simuliere ich einen Tastendruck von der Softkey-Platine. Wenn ich onKeyDown oder onKeyUp rufe, dann simuliere ich die Hardware-Tastatur. Das ist also eine Lösung, die ich nicht mag. IchMöglichkeit, Hardware-Taste drücken Ereignis

Gestern fand diese: http://mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.html

Ist es eine gute Idee, Instrumentation.sendKeyDownUpSync zu verwenden Tastendruck zu simulieren, und es funktioniert perfekt, ich brauche nicht einmal meinen eigenen InputMethod zu implementieren. Ich meine, diese Instrumentierung wird zu Testzwecken zur Verfügung gestellt, wie ich es verstehe.

Ist es eine gute Idee, auf meine Art und Weise verwendet zu werden?

Antwort

0

Ich denke, es ist zu viel, um Ihre eigene IME zu verwenden, um Ihre Anwendung zu testen.

Sie haben bereits einen Weg, es mit Android Instrumentation zu tun. Sie können auch die Robotium überprüfen, die für das, was Sie testen möchten, nützlich sein könnte.

+0

Vielen Dank für die Antwort, aber der Punkt ist, dass ich nichts testen möchte, ich möchte nur die Instrumentation als normale logische Teil in der endgültigen Version der Anwendung verwenden, um Benutzereingabedaten zu generieren. Ist das in Ordnung, wird das bei jeder Version von Android gut funktionieren, wird es irgendwelche Erlaubnissprobleme geben? Und ja, IME ist nicht erforderlich, wenn ich Instrumentation verwende, aber es ist in Ordnung, es in der Release-Version zu verwenden (nicht zum Testen). –

+0

Sie sollten 'Instrumentation' nicht als Teil Ihrer Anwendung verwenden. Was versuchst du zu archivieren? – Macarse

+0

Es gibt Intent, der von einer anderen Anwendung per Broadcast gesendet wird (ich habe keinen Zugriff auf diese Anwendung). In der Absicht gibt es einen Zusatz, der ASCII-Code eines Zeichens ist. Also möchte ich es in meiner eigenen Anwendung abfangen und dieses Zeichen an die aktuelle InputMethod senden. Ich habe zwei Möglichkeiten gefunden, das zu tun. Das erste ist mit meiner eigenen IM, die eine Instanz des Broadcast-Listeners hat. Der BL fängt den Intent ab und ruft dann onKeyDown- und onKeyUp-Methoden des IM auf. In der zweiten benutze ich nur BL, die die Absicht abfängt und dann Instrumentation.sendKeyDownUpSync() aufruft, was den Tastendruck simuliert. –