W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
多模輸入使 HarmonyOS 的 UI 控件能夠響應(yīng)多種輸入事件,事件來源于用戶的按鍵、點(diǎn)擊、觸屏、語(yǔ)音等。例如用戶希望通過語(yǔ)音操作UI控件,那么開發(fā)者可以通過多模輸入在智慧屏產(chǎn)品上提供的語(yǔ)音事件達(dá)到“可見即可說”的效果。
多模輸入的接口設(shè)計(jì)是基于多模事件基類(MultimodalEvent),派生出操作事件類(ManipulationEvent)、按鍵事件類(KeyEvent)、語(yǔ)音事件(SpeechEvent)等,詳細(xì)見[圖1]。
圖1 多模輸入事件類的派生關(guān)系
功能分類 | 接口名 | 描述 |
---|---|---|
設(shè)備信息相關(guān) | getDeviceId() | 獲取輸入設(shè)備所在的承載設(shè)備 id,如當(dāng)同時(shí)有兩個(gè)鼠標(biāo)連接到一個(gè)機(jī)器上,該機(jī)器為這兩個(gè)鼠標(biāo)的承載設(shè)備。 |
getInputDeviceId() | 獲取產(chǎn)生當(dāng)前事件的輸入設(shè)備 id,該 id 是該輸入設(shè)備的唯一標(biāo)識(shí),如兩個(gè)鼠標(biāo)同時(shí)輸入時(shí),它們會(huì)分別產(chǎn)生輸入事件,且從事件中獲取到的 deviceid 是不同的,開發(fā)者可以將此 id 用來區(qū)分實(shí)際的輸入設(shè)備源。 | |
getSourceDevice() | 獲取產(chǎn)生當(dāng)前事件的輸入設(shè)備類型。 | |
時(shí)間 | getOccurredTime() | 獲取產(chǎn)生當(dāng)前事件的時(shí)間。 |
事件 | getUuid() | 獲取事件的UUID。 |
isSameEvent(UUID id) | 判斷當(dāng)前事件與傳入 id 的事件是否為同一事件。 |
功能分類 | 接口名 | 描述 |
---|---|---|
旋轉(zhuǎn)器信息 | getRotationValue() | 獲取旋轉(zhuǎn)器件旋轉(zhuǎn)產(chǎn)生的值。 |
功能分類 | 接口名 | 描述 |
---|---|---|
構(gòu)造函數(shù) | public static Optional<SpeechEvent> createEvent(long occurTime, int action, String value) | SpeechEvent 創(chuàng)建函數(shù)。 |
獲取語(yǔ)音事件參數(shù)值 | public int getAction() | 獲取當(dāng)前動(dòng)作的類型,如打開、關(guān)閉、命中熱詞。 |
public int getScene() | 獲取當(dāng)前動(dòng)作時(shí)的場(chǎng)景。 | |
public String getActionProperty() | 獲取動(dòng)作所攜帶的屬性值。 | |
public int getMatchMode() | 獲取識(shí)別結(jié)果的匹配模式。 |
功能分類 | 接口名 | 描述 |
---|---|---|
手指信息 | getPointerCount() | 獲取一次事件中觸控或軌跡追蹤的指針數(shù)量。 |
getPointerId(int index) | 獲取一次事件中,指針的唯一標(biāo)識(shí) Id。 | |
setScreenOffset(float offsetX, float offsetY) | 設(shè)置相對(duì)屏幕坐標(biāo)原點(diǎn)的偏移位置信息。 | |
getPointerPosition(int index) | 獲取一次事件中觸控或軌跡追蹤的某個(gè)指針相對(duì)于偏移位置的坐標(biāo)信息。 | |
getPointerScreenPosition(int index) | 獲取一次事件中觸控或軌跡追蹤的某個(gè)指針相對(duì)屏幕坐標(biāo)原點(diǎn)的坐標(biāo)信息。 | |
getRadius(int index) | 返回給定index手指與屏幕接觸的半徑值。 | |
getForce(int index) | 獲取給定index手指觸控的壓力值。 | |
時(shí)間 | getStartTime() | 獲取操作開始階段時(shí)間。 |
階段 | getPhase() | 事件所屬階段。 |
功能分類 | 接口名 | 描述 |
---|---|---|
KeyCode | getKeyCode() | 獲取當(dāng)前按鍵類事件的 keycode 值。 |
getMaxKeyCode() | 獲取當(dāng)前定義的按鍵類事件的最大 keycode 值。 | |
按鍵按下狀態(tài) | getKeyDownDuration() | 獲取當(dāng)前按鍵截止該接口被調(diào)用時(shí)被按下的時(shí)長(zhǎng)。 |
isKeyDown() | 獲取當(dāng)前按鍵事件的按下狀態(tài)。 |
功能分類 | 接口名 | 描述 |
---|---|---|
觸控行為 | getAction() | 獲取當(dāng)前觸摸行為。 |
getIndex() | 獲取發(fā)生行為的對(duì)應(yīng)指針。 |
功能分類 | 接口名 | 描述 |
---|---|---|
輸入法編輯器 | enableIme() | 啟動(dòng)輸入法編輯器。 |
disableIme() | 關(guān)閉輸入法編輯器。 | |
isHandledByIme() | 判斷輸入法編輯器是否在使用。 | |
NoncharacterKey行為 | isNoncharacterKeyPressed(int keycode) | 判定輸入的單個(gè) NoncharacterKey 是否處于按下狀態(tài)。 |
isNoncharacterKeyPressed(int keycode1, int keycode2) | 判定輸入的兩個(gè) NoncharacterKey 是否都處于按下狀態(tài)。 | |
isNoncharacterKeyPressed(int keycode1, int keycode2, int keycode3) | 判定輸入的三個(gè) NoncharacterKey 是否都處于按下狀態(tài)。 | |
按鍵Unicode碼 | getUnicode() | 獲取按鍵對(duì)應(yīng)的Unicode碼。 |
說明
NoncharacterKey 為除了文本可見字符(A-Z,0-9,空格,逗號(hào),句號(hào)等)以外的按鍵碼,例如:Ctrl,Alt,Shift 等。
功能分類 | 接口名 | 描述 |
---|---|---|
鼠標(biāo)行為 | getAction() | 獲取鼠標(biāo)設(shè)備產(chǎn)生事件的行為。 |
鼠標(biāo)按鍵 | getActionButton() | 獲取狀態(tài)發(fā)生變化的鼠標(biāo)按鍵。 |
getPressedButtons() | 獲取所有按下狀態(tài)的鼠標(biāo)按鍵。 | |
鼠標(biāo)指針/位置 | getCursor() | 獲取鼠標(biāo)指針的位置。 |
getCursorDelta(int axis) | 獲取鼠標(biāo)指針位置相對(duì)上次的變化值。 | |
setCursorOffset(float offsetX, float offsetY) | 設(shè)置相對(duì)屏幕的偏移位置信息。 | |
鼠標(biāo)滾輪 | getScrollingDelta(int axis) | 獲取滾輪的滾動(dòng)值。 |
功能分類 | 接口名 | 描述 |
---|---|---|
構(gòu)造函數(shù) | MmiPoint(float px, float py) | 創(chuàng)建一個(gè)只包含 x 和 y 坐標(biāo)的 MmiPoint 對(duì)象。 |
MmiPoint(float px, float py, float pz) | 創(chuàng)建一個(gè)包含 x,y 和 z 坐標(biāo)的 MmiPoint 對(duì)象。 | |
坐標(biāo)值 | getX() | 獲取x坐標(biāo)值。 |
getY() | 獲取y坐標(biāo)值。 | |
getZ() | 獲取z坐標(biāo)值。 | |
toString() | 返回包含x、y、z坐標(biāo)值信息的字符串 |
處理按鈕事件
private Component.KeyEventListener onKeyEvent = new Component.KeyEventListener()
{
@Override
public boolean onKeyEvent(Component component, KeyEvent keyEvent) {
if (keyEvent.isKeyDown()) {
... // 檢測(cè)到按鍵被按下,開發(fā)者根據(jù)自身需求進(jìn)行實(shí)現(xiàn)
}
int keycode = keyEvent.getKeyCode();
switch (keycode) {
case KeyEvent.KEY_DPAD_CENTER:
... // 檢測(cè)到KEY_DPAD_CENTER被按下,開發(fā)者根據(jù)自身需求進(jìn)行實(shí)現(xiàn)
break;
case KeyEvent.KEY_DPAD_LEFT:
... // 檢測(cè)到KEY_DPAD_LEFT被按下,開發(fā)者根據(jù)自身需求進(jìn)行實(shí)現(xiàn)
break;
case KeyEvent.KEY_DPAD_UP:
... // 檢測(cè)到KEY_DPAD_UP被按下,開發(fā)者根據(jù)自身需求進(jìn)行實(shí)現(xiàn)
break;
case KeyEvent.KEY_DPAD_RIGHT:
... // 檢測(cè)到KEY_DPAD_RIGHT被按下,開發(fā)者根據(jù)自身需求進(jìn)行實(shí)現(xiàn)
break;
case KeyEvent.KEY_DPAD_DOWN:
... // 檢測(cè)到KEY_DPAD_DOWN被按下,開發(fā)者根據(jù)自身需求進(jìn)行實(shí)現(xiàn)
break;
default:
break;
}
...
}
};
處理語(yǔ)音事件
使用多模輸入的語(yǔ)音事件實(shí)現(xiàn)“可見即可說”的效果簡(jiǎn)易開發(fā)樣例參考可見即可說開發(fā)指導(dǎo)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: