4

サービスがハードウェア/リモートサーバーと対話しているときに、システムにタッチイベントを挿入するサービスを開発しようとしています。私はグーグルで検索しましたが、誰もがこのInputManagerクラスを使用することを提案しており、従うべきサンプルプロジェクトとしてMonkeyを参照しています。

しかし、getInstance()私には方法がありませんInputManager!私がアクセスできるのは、まさにドキュメントが示すものだけです。方法はありません。getInstance()最も重要なことは、方法がありませんinjectInputEvent()

私のビルド ターゲット SDK は Android 4.1.2 であり、私の AndroidManifest.xml ファイルはターゲット SDK バージョン 16 を指定しています (最小ターゲットも 16 に変更しようとしましたが、役に立ちませんでした (さらに、それを維持したいと思います)可能であれば 8))。

InputManagerMonkey のように一体どうやって使えばいいの?Monkey が使用しているメソッドはどこにありますか? なぜ私はそれらを使用できないのですか?

4

3 に答える 3

2

他のアプリケーションから1つのアプリケーションに入力イベントを注入することはできません。また、アプリケーション内から独自のアプリケーションにイベントを挿入することはできません。https://groups.google.com/forum/?fromgroups=#!topic/android-developers/N5R9rMJjgzk%5B1-25%5D

自動化したい場合は、monkeyrunnerスクリプトを使用して同じことを行うことができます。

于 2012-11-13T16:35:21.193 に答える
1
Class cl = InputManager.class;
try {
    Method method = cl.getMethod("getInstance");
    Object result = method.invoke(cl);
    InputManager im = (InputManager) result;
    method = cl.getMethod("injectInputEvent", InputEvent.class, int.class);
    method.invoke(im, event, 2);
}
catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}  catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
} catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
于 2014-07-22T05:25:47.830 に答える