タッチパネル式コントローラを表示するにはどのようにデータを報告し、どのようにログに関連付けられているフレームワーク層の入力イベントをクロールするGETEVENT

著作権:再現ブログのアドレスを指定してくださいhttps://blog.csdn.net/jinron10/article/details/86575859

Androidのシステム開発・インタフェースは何の効果もクリックしない、またはクリックしたときに私たちはしばしば遭遇するエレガントなケースを持って、それが報告されたデータTPが異常であるかどうか、この時、我々は、TPが報告した場合、データ入力層とフレームワークのイベントログを確認するためにさらなる分析が必要次のようにまたは、上位APP自体によって引き起こされる問題につながります。

1、どのようにタッチパネル式コントローラは、データGETEVENTを報告し表示する方法は? 
【解決手段】 
以下の工程: 
1)ADBシェルを使用して携帯電話に接続されています。 
2)コマンドラインでコマンド「猫の/ proc /バス/入力入力 /デバイス」、 「NAME =」MTK-TPD「を参照してください。 」 ハンドラが=「れるイベントに対応するの項目を」? 
3)コマンドラインで、「コマンドを入力のGetEventは/ dev / INPUT /イベントを?

次のように: 
CAT / procの/バス/ INPUT /デバイス 
出力: 
I:バスのベンダー= 0000 = 0000 0000 =製品バージョン= 0000 
N:名= "MTK-TPD" 
P:PHYS = 
S:=のsysfs /デバイス/仮想を/ INPUT /入力3 
U-:UNIQ = 
H:つまり、ハンドラEVENT3に対応= Mouse0 EVENT3 -----マウスイベント 
B:PROP = 2 
B:EVのB = 
B:KEY = 0 400 0 0 0〜1000 0 0 40000800 0 
B:ABS =263万1000003は 
、コマンドを入力します。 
のGetEventは/ dev /入力/ EVENT3

2、どのようにフレームワーク層入力イベントに関連するログをクロールします

イベントは、入力に応答して、対応するデバイスがあるか否かを検出するために、まず、第1の部分を通って、関連する問題を入力発生時に入力に応答がない場合、入力デバイスは、入力に応答してあった場合、入力デバイスは、ドライバまたはモジュールの問題であってもよい、あなたが開く必要次のログ・スイッチ、次のように、イベントのフレームワーク把持層処理をmtklogチェック。

注:
 ユーザ静的バージョンのみを使用することができる(変更されたコード)オープンデバッグスイッチ 
 ENGバージョンが動的に(コマンド)デバッグスイッチを開くために使用することができます 

図1に示すように、アプリケーション層JB、KK、Lに適した(クライアント)、Mバージョン: 
1.1)動的APP層ログを開くには、次の
debug.viewroot.enableシェル7000に、SetProp ADB 
debug.view.keylog真に、SetPropにシェルをADB 
ADBシェルに、SetPropデバッグ真.view.touchlogに 
adbのシェルに、SetProp debug.view.motionlog trueに 

adbのシェルSTOP 
adbのシェルを起動 

マシンソフトウェアが再起動後に有効にするために待機する必要が 

:1.2)静的DEBUGの値を変更直接変更
:の場合に開き、ログ・スイッチViewRootImpl /ビュー/のViewGroup入力処理を 
DEBUG_INPUTスイッチフレームワーク/ベース/コア/ジャワ/アンドロイド/ビュー/ viewrootimpl.java trueに(セット); 
DBG_MOTION、DBG_TOUCHスイッチ内のフレームワーク/ベース/コア/ジャワ/アンドロイド/ビュー/ viewgroup.java  ()trueに設定、
フレームワーク/ベース/コア/ジャワ/アンドロイド/ビュー/ View.java DBG_MOTIONにおいて、DBG_TOUCHスイッチ (trueに設定)、
フレームワーク/ベース/ポリシー/ SRC / COM /アンドロイド/内部/ポリシー/ IMPL / PhoneWindow.javaをDBG_MOTIONスイッチで  (trueに設定)、
フレームワーク/ベース/コア/ Javaの/アンドロイド/ビュー/のKeyEvent DEBUGスイッチ内の.java  (trueに設定)。

2、フレームワーク(サーバ): 
2.1開く動的方法(KK、L、M用のKKはENGビルド、L、Mにのみ適用可能であり、前記ENGビルドビルドユーザに適用される。):
sys.inputlog.enabledシェルに、SetProp ADB trueに 
ADBをシェルdumpsys入力 
を有効にすることができ、携帯電話を再起動せずには、電話が障害発生後に再起動します。

2.2静的開口方法: 
フレームワーク/(ICS&JBX、KKバージョンの)ベース/サービス/ INPUT / inputReader.cpp 
フレームワーク/ネイティブ/サービス/ InputFlinger / inputReader.cpp(L用、Mバージョン) 
次のマクロ定義を見つけ、そして以下に、その値 
の#define DEBUG_RAW_EVENTS 1つ 
の#define DEBUG_HACKS 1つ 
の#define DEBUG_VIRTUAL_KEYS 1つ 
の#define DEBUG_POINTERS 1 
の#define DEBUG_POINTER_ASSIGNMENT 1つ 
の#define DEBUG_GESTURES 1つ 
の#define DEBUG_VIBRATOR。1 

フレームワーク/ベース/サービス/入力/ (ICS&JBX、KKのためinputDispatcher.cpp バージョン) 
フレームワーク/ネイティブ/サービス/ InputFlinger / inputDispatcher.cpp(L、Mバージョンの) 
マクロまたは変数の定義を見つけ、その値が変更されます以下の 
他の定義変更する// #elseの枝を 
の#define DEBUG_INBOUND_EVENT_DETAILSを1 
に#define DEBUG_OUTBOUND_EVENT_DETAILSを1 
に#define DEBUG_DISPATCH_CYCLE。1つ 
の#define DEBUG_REGISTRATION。1つ 
の#define DEBUG_INJECTION。1つ 
の#define DEBUG_FOCUS。1つ 
の#define DEBUG_APP_SWITCH。1つ 
の#define DEBUG_HOVER。1 

#endifの 
BOOL = gInputLogEnabled trueに; 

フレームワーク/ベース/ libsに/ androidfw / inputTransport.cpp(ICS&JBX用バージョン) 
マクロまたは変数定義を見つけて、次のようにその値が読み込まれ 
、定義で// #elseの他のブランチの変更 
の#define DEBUG_CHANNEL_MESSAGESを。1つ 
の#define DEBUG_CHANNEL_LIFECYCLE。1 
。DEBUG_TRANSPORT_ACTIONS 1つの#define 
の#define DEBUG_RESAMPLING 1。 

#endifの 
gInputLogEnabled静的BOOL = trueに。 

フレームワーク/ネイティブ/ LIBS /入力/ inputTransport.cpp(KK、L、Mのためのバージョン) 
に従って、以下の変数が定義され、その値が交換される見つける 
gInputLogEnabled BOOL静的= TRUE。 

3、必要があれば、多くの場合、フォーカスウィンドウとは何かを応答せずに入力多くの理由 
AMSを開き、LOGのWMSは、次のコマンドを使用するには。 
アクティビティログXは上でシェルにADBをdumpsys 
シェルウィンドウが-d有効dumpsys ADB

おすすめ

転載: blog.csdn.net/jinron10/article/details/86575859