UiDevice介紹
UiDevice代表設備狀態,爲單例模式
具體功能:
(1)獲取設備信息,屏幕分辨率,旋轉狀態,亮滅屏狀態等
(2)操作:按鍵,座標操作,滑動,拖拽,滅屏喚醒屏幕,截圖等
(3)監聽器功能//容易造成空指針異常 // getUiDevice().pressMenu(); // getUiDevice().pressHome(); // 一般使用下列方法 UiDevice.getInstance().pressMenu(); UiDevice.getInstance().pressHome();
按鍵與 KEYCODE使用
手機常見按鍵
(1) HOME HOME 鍵
(2)MENU 菜單鍵
(3)BACK 返回鍵
(4)VOLUME_UP 音量加
(5)VOLUME_DOWN 音量減
(6)RecentApps 最近使用 App
(7)POWER 電源鍵
(8)Dpad 上下左右鍵
(9)….
按鍵 API說明
//按鍵 API
//返回
UiDevice.getInstance().pressBack();
//軌跡球中點按鍵
UiDevice.getInstance().pressDPadCenter();
//軌跡球上按鍵
UiDevice.getInstance().pressDPadUp();
//軌跡球下按鍵
UiDevice.getInstance().pressDPadDown();
//軌跡球左按鍵
UiDevice.getInstance().pressDPadLeft();
//軌跡球右按鍵
UiDevice.getInstance().pressDPadRight();
//刪除
UiDevice.getInstance().pressDelete();
//回車
UiDevice.getInstance().pressEnter();
//Home 鍵
UiDevice.getInstance().pressHome();
//鍵盤代碼 keycode
//UiDevice.getInstance(int keyCode,int metaState);
//UiDevice.getInstance(int keyCode);
//Menu 鍵盤
UiDevice.getInstance().pressMenu();
//最近使用 app
UiDevice.getInstance().pressRecentApps();
//搜索
UiDevice.getInstance().pressSearch();
KEYCODE 鍵盤映射碼
(1)keyEvent 按鍵事件
//小寫
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A);
//大寫
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A,1);
3.獲取座標與座標點擊
(1)方法名:click(int x,int y) 使用座標點擊屏幕
(2)方法名:getDisplayHeight() 獲取屏幕高度
(3)方法名:getDisplayWidth() 獲取屏幕寬度
4.拖拽與滑動
拖拽:將一個組件從一個座標點移動到另一個座標處
滑動:從一個座標頂移動到另一個座標點
步長:從一點滑動到另一點使用的時間(1步長是5毫秒)
(1)方法名:drag(int starX,int startY,int endX int endY,int steps) 拖動對象從一個座標拖動到另一個座標
(2)方法名:swipe(Poiint[] segments,int segmentSteps) 在點陣列中滑動,5ms 一步
(3)方法名:swipe(int starX,int startY,int endX int endY,int steps)通過座標滑動屏幕
5.旋轉屏幕
旋轉方向;4個方向,分別爲0度,90度,180度,270度
重力感應器
固定位置與物理旋轉
(1)方法名: setOrientationLeft() 通過禁用傳感器,然後模擬設備向左轉,並且固定位置
(2)方法名: setOrientationNatural() 通過禁用傳感器,然後模擬設備轉到其自然默認的方向,並且固定位置
(3)方法名: setOrientationRight() 通過禁用傳感器,然後模擬設備向右轉,並且固定位置
(4)方法名: sunfreezeRoation() 重新啓用傳感器和允許物理旋轉
(5)方法名: isNaturalOrientation() 檢測設置是否處於默認旋轉狀態
(6)方法名: getDisplayRotation() 返回當前的顯示旋轉,0度,90度,180度,270度,值分別爲0、1、2、3
(7)方法名:freezeRoation() 禁用傳感器和凍結裝置屋裏旋轉在其當前旋轉狀態
6.滅屏與喚醒屏幕
滅屏:按電源鍵將屏幕熄滅
喚醒屏幕:在滅屏狀態下安電源鍵點亮屏幕
(1)方法名: wakeUp() 模擬按電源鍵,如果屏幕是喚醒的沒有任何作用
(2)方法名: sleep() 模擬按電源鍵,如果屏幕已經是關閉的則沒有任何作用
(3)方法名:isScreenOn() 檢查屏幕是否亮屏
7.截圖與等待空閒
截圖
(1)方法名:takeScreenshot(File storePath) 把當前窗口截圖並將其存儲爲 png 默認1.0f 規模(原尺寸文件)和90%質量,參數爲 file 類的文件路徑
(2)takeScreenshot(File storePath,float scale,int quality) 把當前窗口截圖爲 png 格式圖片,可以自定義縮放比例與圖片質量
參數說明:
storePath:存儲路徑,必須爲 png 格式
Scale: 縮放比例,1.0爲原圖
Quality: 圖片壓縮質量,範圍爲0-100
等待空閒
(1)waitForIdle(long timeout)自定義超時等待當前應用處於空閒狀態
(2)waitForIdle()等待當前應用處於空閒狀態,默認等待10s
(3)waitForWindowUpdate(String packageName,long timeout) 等待窗口內容更新事件的發生
8.獲取包名&開啓通知欄&快速設置&獲取佈局文件
包名,通知欄,快速設置,佈局文件
(1)getCurrentPackageName() 獲取當前界面的包名
(2)dumpWindowHierachy(String fileName)獲取當前界面佈局文件,保存在/ data/local/tmp 目錄下
(3) openNotification() 打開通知欄
(4)openQuickSettings 打開快速設置