編輯:Android開發實例
通過Socket + Instrumentation實現模擬鍵盤鼠標事件主要通過以下三個部分組成;
Socket編程:實現PC和Emulator通訊,並進行循環監聽;
Service服務:將Socket的監聽程序放在Service中,從而達到後台運行的目的。這裡要說明的是啟動服務有兩種方式,bindService和startService,兩者的區別是,前者會使啟動的Service隨著啟動Service的Activity的消亡而消亡,而startService則不會這樣,除非顯式調用stopService,否則一直會在後台運行因為Service需要通過一個Activity來進行啟動,所以采用startService更適合當前的情形;
Instrumentation發送鍵盤鼠標事件:Instrumentation提供了豐富的以send開頭的函數接口來實現模擬鍵盤鼠標,如下所述:
sendCharacterSync(int keyCode) //用於發送指定KeyCode的按鍵
sendKeyDownUpSync(int key) //用於發送指定KeyCode的按鍵
sendPointerSync(MotionEvent event) //用於模擬Touch
sendStringSync(String text) //用於發送字符串
注意:以上函數必須通過Message的形式拋到Message隊列中。如果直接進行調用加會導致程序崩潰。
對於Socket編程和Service網上有很多成功的范例,此文不再累述,下面著重介紹一下發送鍵盤鼠標模擬事件的代碼:
發送鍵盤KeyCode:
步驟1. 聲明類handler變量
private static Handler handler;
步驟2. 循環處理Message
java代碼:
//在Activity的onCreate方法中對下列函數進行調用
private void createMessageHandleThread(){
//need start a thread to raise looper, otherwise it will be blocked
Thread t = new Thread() {
public void run() {
Log.i( TAG,"Creating handler ..." );
Looper.prepare();
handler = new Handler(){
public void handleMessage(Message msg) {
//process incoming messages here
}
};
Looper.loop();
Log.i( TAG, "Looper thread ends" );
}
};
t.start();
步驟3. 在接收到Socket中的傳遞信息後拋出Message
java代碼:
handler.post( new Runnable() {
public void run() {
Instrumentation inst=new Instrumentation();
inst.sendKeyDownUpSync(keyCode);
}
} );
Touch指定坐標,如下例子即
java代碼:
touch point(240,400)
Instrumentation inst=new Instrumentation();
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN, 240, 400, 0));
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_UP, 240, 400, 0));
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
這篇文章主要為大家詳細介紹了Android輸入框控件ClearEditText實現清除功能,感興趣的小伙伴們可以參考一下 本文給大家帶來
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
我們知道,在Android系統中,Activity是以堆棧的形式組織在ActivityManagerService服務中的。與Activity類似,Android