新聞中心
場景介紹

成都創(chuàng)新互聯(lián)公司不只是一家網(wǎng)站建設(shè)的網(wǎng)絡公司;我們對營銷、技術(shù)、服務都有自己獨特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)質(zhì)量和服務品質(zhì),在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認可,能夠為行業(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務升級,滿足企業(yè)一站式成都營銷網(wǎng)站建設(shè)需求,讓再小的成都品牌網(wǎng)站建設(shè)也能產(chǎn)生價值!
多模輸入使 HarmonyOS 的 UI 控件能夠響應多種輸入事件,事件來源于用戶的按鍵、點擊、觸屏、語音等。例如用戶希望通過語音操作UI控件,那么開發(fā)者可以通過多模輸入在智慧屏產(chǎn)品上提供的語音事件達到“可見即可說”的效果。
接口說明
多模輸入的接口設(shè)計是基于多模事件基類(MultimodalEvent),派生出操作事件類(ManipulationEvent)、按鍵事件類(KeyEvent)、語音事件(SpeechEvent)等,詳細見[圖1]。
圖1多模輸入事件類的派生關(guān)系
- MultimodalEvent 是所有事件的基類,該類中定義了一系列高級事件類型,這些事件類型通常是對某種行為或意圖的抽象。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 設(shè)備信息相關(guān) | getDeviceId() | 獲取輸入設(shè)備所在的承載設(shè)備 id,如當同時有兩個鼠標連接到一個機器上,該機器為這兩個鼠標的承載設(shè)備。 |
| getInputDeviceId() | 獲取產(chǎn)生當前事件的輸入設(shè)備 id,該 id 是該輸入設(shè)備的唯一標識,如兩個鼠標同時輸入時,它們會分別產(chǎn)生輸入事件,且從事件中獲取到的 deviceid 是不同的,開發(fā)者可以將此 id 用來區(qū)分實際的輸入設(shè)備源。 | |
| getSourceDevice() | 獲取產(chǎn)生當前事件的輸入設(shè)備類型。 | |
| 時間 | getOccurredTime() | 獲取產(chǎn)生當前事件的時間。 |
| 事件 | getUuid() | 獲取事件的UUID。 |
| isSameEvent(UUID id) | 判斷當前事件與傳入 id 的事件是否為同一事件。 |
- CompositeEvent 處理常用設(shè)備對應的事件,目前暫時只有 MouseEvent 事件繼承該類。
- RotationEvent 處理由旋轉(zhuǎn)器件產(chǎn)生的事件,比如智能穿戴上的數(shù)字表冠。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 旋轉(zhuǎn)器信息 | getRotationValue() | 獲取旋轉(zhuǎn)器件旋轉(zhuǎn)產(chǎn)生的值。 |
- SpeechEvent 處理語音事件,開發(fā)者可以通過該類獲取語音識別結(jié)果。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 構(gòu)造函數(shù) | public static Optional |
SpeechEvent 創(chuàng)建函數(shù)。 |
| 獲取語音事件參數(shù)值 | public int getAction() | 獲取當前動作的類型,如打開、關(guān)閉、命中熱詞。 |
| public int getScene() | 獲取當前動作時的場景。 | |
| public String getActionProperty() | 獲取動作所攜帶的屬性值。 | |
| public int getMatchMode() | 獲取識別結(jié)果的匹配模式。 |
- ManipulationEvent 操作類事件主要包括手指觸摸事件等事件,是對這些事件的一個抽象。該事件會持有事件發(fā)生的位置信息和發(fā)生的階段等信息。通常情況下,該事件主要是作為操作回調(diào)接口的入?yún)?,開發(fā)者通過回調(diào)接口捕獲及處理事件。回調(diào)接口將操作分為開始、操作過程中、結(jié)束。例如對于一次手指觸控,手指接觸屏幕作為操作開始,手指在屏幕上移動作為操作過程,手指抬起作為操作結(jié)束。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 手指信息 | getPointerCount() | 獲取一次事件中觸控或軌跡追蹤的指針數(shù)量。 |
| getPointerId(int index) | 獲取一次事件中,指針的唯一標識 Id。 | |
| setScreenOffset(float offsetX, float offsetY) | 設(shè)置相對屏幕坐標原點的偏移位置信息。 | |
| getPointerPosition(int index) | 獲取一次事件中觸控或軌跡追蹤的某個指針相對于偏移位置的坐標信息。 | |
| getPointerScreenPosition(int index) | 獲取一次事件中觸控或軌跡追蹤的某個指針相對屏幕坐標原點的坐標信息。 | |
| getRadius(int index) | 返回給定index手指與屏幕接觸的半徑值。 | |
| getForce(int index) | 獲取給定index手指觸控的壓力值。 | |
| 時間 | getStartTime() | 獲取操作開始階段時間。 |
| 階段 | getPhase() | 事件所屬階段。 |
- KeyEvent 對所有按鍵類事件的定義,該類繼承 MultimodalEvent 類,并對按鍵類事件做了專屬的 Keycode 定義以及方法封裝。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| KeyCode | getKeyCode() | 獲取當前按鍵類事件的 keycode 值。 |
| getMaxKeyCode() | 獲取當前定義的按鍵類事件的最大 keycode 值。 | |
| 按鍵按下狀態(tài) | getKeyDownDuration() | 獲取當前按鍵截止該接口被調(diào)用時被按下的時長。 |
| isKeyDown() | 獲取當前按鍵事件的按下狀態(tài)。 |
- TouchEvent 處理手指觸控相關(guān)事件。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 觸控行為 | getAction() | 獲取當前觸摸行為。 |
| getIndex() | 獲取發(fā)生行為的對應指針。 |
- KeyBoardEvent 處理鍵盤類設(shè)備的事件。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 輸入法編輯器 | enableIme() | 啟動輸入法編輯器。 |
| disableIme() | 關(guān)閉輸入法編輯器。 | |
| isHandledByIme() | 判斷輸入法編輯器是否在使用。 | |
| NoncharacterKey行為 | isNoncharacterKeyPressed(int keycode) | 判定輸入的單個 NoncharacterKey 是否處于按下狀態(tài)。 |
| isNoncharacterKeyPressed(int keycode1, int keycode2) | 判定輸入的兩個 NoncharacterKey 是否都處于按下狀態(tài)。 | |
| isNoncharacterKeyPressed(int keycode1, int keycode2, int keycode3) | 判定輸入的三個 NoncharacterKey 是否都處于按下狀態(tài)。 | |
| 按鍵Unicode碼 | getUnicode() | 獲取按鍵對應的Unicode碼。 |
說明
NoncharacterKey 為除了文本可見字符(A-Z,0-9,空格,逗號,句號等)以外的按鍵碼,例如:Ctrl,Alt,Shift 等。
- MouseEvent 處理鼠標的事件。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 鼠標行為 | getAction() | 獲取鼠標設(shè)備產(chǎn)生事件的行為。 |
| 鼠標按鍵 | getActionButton() | 獲取狀態(tài)發(fā)生變化的鼠標按鍵。 |
| getPressedButtons() | 獲取所有按下狀態(tài)的鼠標按鍵。 | |
| 鼠標指針/位置 | getCursor() | 獲取鼠標指針的位置。 |
| getCursorDelta(int axis) | 獲取鼠標指針位置相對上次的變化值。 | |
| setCursorOffset(float offsetX, float offsetY) | 設(shè)置相對屏幕的偏移位置信息。 | |
| 鼠標滾輪 | getScrollingDelta(int axis) | 獲取滾輪的滾動值。 |
- MmiPoint處理在指定給定的坐標系中的 x,y 和 z 坐標。
| 功能分類 | 接口名 | 描述 |
|---|---|---|
| 構(gòu)造函數(shù) | MmiPoint(float px, float py) | 創(chuàng)建一個只包含 x 和 y 坐標的 MmiPoint 對象。 |
| MmiPoint(float px, float py, float pz) | 創(chuàng)建一個包含 x,y 和 z 坐標的 MmiPoint 對象。 | |
| 坐標值 | getX() | 獲取x坐標值。 |
| getY() | 獲取y坐標值。 | |
| getZ() | 獲取z坐標值。 | |
| toString() | 返回包含x、y、z坐標值信息的字符串 |
開發(fā)步驟
處理按鈕事件
- 參考 HarmonyOS 的 Component 的 API 創(chuàng)建 KeyEventListener;
- 重寫實現(xiàn) KeyEventListener 類中的onKeyEvent(Component component, KeyEvent event)方法;
- 開發(fā)者根據(jù)自身需求處理存在按鍵被按下以及 KEY_DPAD_CENTER、KEY_DPAD_LEFT 等按鍵被按下后的具體實現(xiàn)。
private Component.KeyEventListener onKeyEvent = new Component.KeyEventListener()
{
@Override
public boolean onKeyEvent(Component component, KeyEvent keyEvent) {
if (keyEvent.isKeyDown()) {
... // 檢測到按鍵被按下,開發(fā)者根據(jù)自身需求進行實現(xiàn)
}
int keycode = keyEvent.getKeyCode();
switch (keycode) {
case KeyEvent.KEY_DPAD_CENTER:
... // 檢測到KEY_DPAD_CENTER被按下,開發(fā)者根據(jù)自身需求進行實現(xiàn)
break;
case KeyEvent.KEY_DPAD_LEFT:
... // 檢測到KEY_DPAD_LEFT被按下,開發(fā)者根據(jù)自身需求進行實現(xiàn)
break;
case KeyEvent.KEY_DPAD_UP:
... // 檢測到KEY_DPAD_UP被按下,開發(fā)者根據(jù)自身需求進行實現(xiàn)
break;
case KeyEvent.KEY_DPAD_RIGHT:
... // 檢測到KEY_DPAD_RIGHT被按下,開發(fā)者根據(jù)自身需求進行實現(xiàn)
break;
case KeyEvent.KEY_DPAD_DOWN:
... // 檢測到KEY_DPAD_DOWN被按下,開發(fā)者根據(jù)自身需求進行實現(xiàn)
break;
default:
break;
}
...
}
};處理語音事件
使用多模輸入的語音事件實現(xiàn)“可見即可說”的效果簡易開發(fā)樣例參考可見即可說開發(fā)指導。
文章題目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS多模輸入開發(fā)指導
網(wǎng)頁URL:http://www.dlmjj.cn/article/dpicjoh.html


咨詢
建站咨詢
