diff --git a/UI/MultimodalEvent/README_en.md b/UI/MultimodalEvent/README_en.md
new file mode 100644
index 0000000000000000000000000000000000000000..4a1bfdbf648684f8ffdc5a677eddeb43159e8b62
--- /dev/null
+++ b/UI/MultimodalEvent/README_en.md
@@ -0,0 +1,23 @@
+# Multimodal Input Standard Event
+
+### Introduction
+
+In this sample app of multimodal input, the **MultimodalEventHandle** class is used to register standard events that are derived from the base class **StandardizedEventHandle**. As such, the input events from different devices can be mapped to the standard events for processing.
+
+### Usage
+
+The home page of the sample app contains the **TouchEventHandle**, **KeyEventHandle**, **CommonEventHandle**, **MediaEventHandle**, **SystemEventHandle**, and **TelephoneEventHandle** buttons. The specific implementation is as follows:
+
+1. When you tap the **TouchEventHandle** button, you will be redirected to another page. If you tap the **touchEvent** button on that page, a popup dialog indicating a standard touch event will be displayed.
+2. When you tap the **KeyEventHandle** button, you will be redirected to another page. If you press the volume key on the phone, a popup dialog indicating a standard key pressing event will be displayed.
+3. When you tap the **CommonEventHandle** button, you will be redirected to another page. If you press the **Enter** key on the keyboard, a popup dialog indicating a standard common event will be displayed.
+4. When you tap the **MediaEventHandle** button, you will be redirected to another page. If you insert the headset and press the **Play** key on the headset, a popup dialog indicating a standard media event will be displayed.
+5. When you tap the **SystemEventHandle** button, you will be redirected to another page. If you press the **Back** key to go back, a popup dialog indicating a standard system event will be displayed.
+6. When you tap the **TelephoneEventHandle** button, you will be redirected to another page. If you insert the headset and tap the **Call** or **End Call** button, a popup dialog indicating a standard call event will be displayed.
+
+### Constraints
+
+This sample can be run only on the standard-system devices.
+
+For details about the applicable devices of multimodal input standard events, see [Multimodal Input Standard Event Overview](https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-multimodal-standard-event-overview-0000001079953054).
+
diff --git a/UI/MultimodalEvent/README_zh.md b/UI/MultimodalEvent/README_zh.md
new file mode 100644
index 0000000000000000000000000000000000000000..c32713f7f903c37ba4dc6f0499c5a2dde8cf3f41
--- /dev/null
+++ b/UI/MultimodalEvent/README_zh.md
@@ -0,0 +1,23 @@
+# 多模输入事件标准化
+
+##### 简介
+
+本示例通过提供处理标准化事件的类MultimodalEventHandle对标准化基类StandardizedEventHandle衍生出来的其它标准化事件进行注册,然后对相应的事件进行处理,将不同输入设备的输入事件映射到标准化事件上。
+
+##### 使用说明
+
+本示例主页面包含触摸类标准化事件按钮、按键类标准化事件按钮 、通用类标准化事件按钮、媒体类标准化事件按钮、系统类标准化事件按钮、通话类标准化事件按钮:
+
+1. 当点击触摸类标准化事件按钮时,跳转到另一个页面,用手指触摸当前页面上的触摸事件按钮,页面上会弹出提示框显示触摸类标准化事件;
+2. 当点击按键类标准化事件按钮时,跳转到另一个页面,按手机的音量键,页面上会弹出提示框显示按键类标准化事件;
+3. 当点击通用类标准化事件按钮时,跳转到另一个页面,按键盘上的Enter键,页面上会弹出提示框显示通用类标准化事件;
+4. 当点击媒体类标准化事件按钮时,跳转到另一个页面,插入耳机按播放键,页面上会弹出提示框显示媒体类标准化事件;
+5. 当点击系统类标准化事件按钮时,跳转到另一个页面,执行返回操作,页面上会弹出提示框显示系统类标准化事件;
+6. 当点击通话类标准化事件按钮时,跳转到另一个页面,插入耳机按拨打电话或挂断电话键,页面上会弹出提示框显示通话类标准化事件。
+
+##### 约束与限制
+
+本示例仅支持在标准系统上运行;
+
+多模输入事件标准化适用设备情况请[点击链接](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-multimodal-standard-event-overview-0000001079953054)查看。
+
diff --git a/UI/MultimodalEvent/build.gradle b/UI/MultimodalEvent/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..53acf4ea9a983c94dae8756817c76dff347e9cbd
--- /dev/null
+++ b/UI/MultimodalEvent/build.gradle
@@ -0,0 +1,35 @@
+apply plugin: 'com.huawei.ohos.app'
+
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+}
+
+buildscript {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.huawei.ohos:hap:2.4.4.2'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+}
diff --git a/UI/MultimodalEvent/entry/build.gradle b/UI/MultimodalEvent/entry/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..b6bee94b6625b4ec8f34cbeb5d33ec5033d45315
--- /dev/null
+++ b/UI/MultimodalEvent/entry/build.gradle
@@ -0,0 +1,21 @@
+apply plugin: 'com.huawei.ohos.hap'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 4
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+}
+
diff --git a/UI/MultimodalEvent/entry/src/main/config.json b/UI/MultimodalEvent/entry/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..f5d1a51b26a5adfd3251b2887e80f177435e9e0b
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/config.json
@@ -0,0 +1,43 @@
+{
+ "app": {
+ "bundleName": "ohos.samples.multimodalevent",
+ "version": {
+ "code": 1000000,
+ "name": "1.0"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "ohos.samples.multimodalevent",
+ "name": ".MyApplication",
+ "deviceType": [
+ "default"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "ohos.samples.multimodalevent.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/MainAbility.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/MainAbility.java
new file mode 100644
index 0000000000000000000000000000000000000000..213659636ad1fa0b5c4fa81c9a4f40a96b837983
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/MainAbility.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent;
+
+import ohos.samples.multimodalevent.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+/**
+ * MainAbility
+ *
+ * @since 2021-05-24
+ */
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/MyApplication.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/MyApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..d31a6d018105a9e215d7015b1e8ededeee8e487e
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/MyApplication.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+/**
+ * MyApplication
+ *
+ * @since 2021-05-24
+ */
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/CommonEventAbilitySlice.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/CommonEventAbilitySlice.java
new file mode 100644
index 0000000000000000000000000000000000000000..09578c434895ce842476b9524a7dc06cc80ac20a
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/CommonEventAbilitySlice.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.slice;
+
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.app.Context;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+import ohos.multimodalinput.event.MultimodalEvent;
+import ohos.multimodalinput.standard.CommonEventHandle;
+import ohos.multimodalinput.standard.MultimodalEventHandle;
+import ohos.samples.multimodalevent.ResourceTable;
+import ohos.samples.multimodalevent.utils.Utils;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * CommonEventAbilitySlice
+ *
+ * @since 2021-05-25
+ */
+public class CommonEventAbilitySlice extends AbilitySlice {
+ private static final String TAG = "CommonEventAbilitySlice";
+
+ private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD000F00, TAG);
+
+ private String message = "This is CommonEvent";
+
+ private Utils utils = Utils.getInstance();
+
+ private CommonEventHandle commonEventHandle = new CommonEventHandle() {
+ @Override
+ public boolean onShowMenu(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onSend(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onCopy(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onCopy");
+ if (multimodalEvent != null) {
+ showCommonEvent();
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onPaste(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onPaste");
+ if (multimodalEvent != null) {
+ showCommonEvent();
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onCut(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onUndo(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onRefresh(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onStartDrag(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onCancel(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onEnter(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onEnter");
+ if (multimodalEvent != null) {
+ showCommonEvent();
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onPrevious(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onNext(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onBack(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onPrint(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+ };
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_common_event_ability_slice);
+ MultimodalEventHandle.registerStandardizedEventHandle(getAbility(), commonEventHandle);
+ }
+
+ private void showCommonEvent() {
+ WeakReference referenceContext = new WeakReference<>(getContext());
+ utils.showDialogBox(message, referenceContext.get());
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ utils.distroyDialogBox();
+ MultimodalEventHandle.unregisterStandardizedEventHandle(getAbility(), commonEventHandle);
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/KeyEventAbilitySclice.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/KeyEventAbilitySclice.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c970029cdcbc0e80c3185b7b007cad7e2d14b97
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/KeyEventAbilitySclice.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.slice;
+
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.app.Context;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+import ohos.multimodalinput.standard.KeyEventHandle;
+import ohos.multimodalinput.standard.MultimodalEventHandle;
+import ohos.samples.multimodalevent.ResourceTable;
+import ohos.samples.multimodalevent.utils.Utils;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * KeyEventAbilitySclice
+ *
+ * @since 2021-05-24
+ */
+public class KeyEventAbilitySclice extends AbilitySlice {
+ private static final String TAG = "KeyEventAbilitySclice";
+
+ private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD000F00, TAG);
+
+ /**
+ * BACK_KEY_CODE BACK KEY KEYCODE
+ */
+ private static final int BACK_KEY_CODE = 2;
+
+ private String message = "This is keyEvent";
+
+ private Utils utils = Utils.getInstance();
+
+ private KeyEventHandle keyEventHandle = keyEvent -> {
+ HiLog.info(LABEL_LOG, "keyEvent");
+ if (keyEvent != null && keyEvent.isKeyDown()) {
+ int keyCode = keyEvent.getKeyCode();
+ if (keyCode != BACK_KEY_CODE) {
+ showKeyEvent();
+ }
+ }
+ return false;
+ };
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_key_event_ability_slice);
+ MultimodalEventHandle.registerStandardizedEventHandle(getAbility(), keyEventHandle);
+ }
+
+ private void showKeyEvent() {
+ WeakReference referenceContext = new WeakReference<>(getContext());
+ utils.showDialogBox(message, referenceContext.get());
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ utils.distroyDialogBox();
+ MultimodalEventHandle.unregisterStandardizedEventHandle(getAbility(), keyEventHandle);
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/MainAbilitySlice.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/MainAbilitySlice.java
new file mode 100644
index 0000000000000000000000000000000000000000..aabf4cf9f0625b8bdd0044514fbfcfc716a6bef8
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/MainAbilitySlice.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.slice;
+
+import ohos.agp.components.Component;
+import ohos.samples.multimodalevent.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+
+/**
+ * MainAbilitySlice
+ *
+ * @since 2021-05-24
+ */
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_main_ability_slice);
+ initComponents();
+ }
+
+ private void initComponents() {
+ Component componentTouch = findComponentById(ResourceTable.Id_touch_event);
+ componentTouch.setClickedListener(listener -> present(new TouchEventAbilitySlice(), new Intent()));
+ Component componentKey = findComponentById(ResourceTable.Id_key_event);
+ componentKey.setClickedListener(listener -> present(new KeyEventAbilitySclice(), new Intent()));
+ Component componentMedia = findComponentById(ResourceTable.Id_media_event);
+ componentMedia.setClickedListener(listener -> present(new MediaEventAbilitySlice(), new Intent()));
+ Component componentSystem = findComponentById(ResourceTable.Id_system_event);
+ componentSystem.setClickedListener(listener -> present(new SystemEventAbilitySlice(), new Intent()));
+ Component componentCommon = findComponentById(ResourceTable.Id_common_event);
+ componentCommon.setClickedListener(listener -> present(new CommonEventAbilitySlice(), new Intent()));
+ Component componentTel = findComponentById(ResourceTable.Id_telephone_event);
+ componentTel.setClickedListener(listener -> present(new TelephoneEventAbilitySlice(), new Intent()));
+ }
+
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/MediaEventAbilitySlice.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/MediaEventAbilitySlice.java
new file mode 100644
index 0000000000000000000000000000000000000000..e1a3004181109f319859004e04b6233c9ddabffb
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/MediaEventAbilitySlice.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.slice;
+
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.app.Context;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+import ohos.multimodalinput.event.MultimodalEvent;
+import ohos.multimodalinput.standard.MediaEventHandle;
+import ohos.multimodalinput.standard.MultimodalEventHandle;
+import ohos.samples.multimodalevent.ResourceTable;
+import ohos.samples.multimodalevent.utils.Utils;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * MediaEventAbilitySlice
+ *
+ * @since 2021-05-24
+ */
+public class MediaEventAbilitySlice extends AbilitySlice {
+ private static final String TAG = "MediaEventAbilitySlice";
+
+ private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD000F00, TAG);
+
+ private String message = "This is mediaEvent";
+
+ private Utils utils = Utils.getInstance();
+
+ private MediaEventHandle mediaEventHandle = new MediaEventHandle() {
+ @Override
+ public boolean onPlay(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onPlay");
+ return false;
+ }
+
+ @Override
+ public boolean onPause(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onPause");
+ return false;
+ }
+
+ @Override
+ public boolean onMediaControl(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onMediaControl");
+ if (multimodalEvent != null) {
+ showMediaEvent();
+ }
+ return false;
+ }
+ };
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_media_event_ability_slice);
+ MultimodalEventHandle.registerStandardizedEventHandle(getAbility(), mediaEventHandle);
+ }
+
+ private void showMediaEvent() {
+ WeakReference referenceContext = new WeakReference<>(getContext());
+ utils.showDialogBox(message, referenceContext.get());
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ utils.distroyDialogBox();
+ MultimodalEventHandle.unregisterStandardizedEventHandle(getAbility(), mediaEventHandle);
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/SystemEventAbilitySlice.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/SystemEventAbilitySlice.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a3e1885070966baae954994b34997962449ed93
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/SystemEventAbilitySlice.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.slice;
+
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.app.Context;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+import ohos.multimodalinput.event.MultimodalEvent;
+import ohos.multimodalinput.standard.MultimodalEventHandle;
+import ohos.multimodalinput.standard.SystemEventHandle;
+import ohos.samples.multimodalevent.ResourceTable;
+import ohos.samples.multimodalevent.utils.Utils;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * SystemEventAbilitySlice
+ *
+ * @since 2021-05-25
+ */
+public class SystemEventAbilitySlice extends AbilitySlice {
+ private static final String TAG = "SystemEventAbilitySlice";
+
+ private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD000F00, TAG);
+
+ private String message = "Page closed";
+
+ private Utils utils = Utils.getInstance();
+
+ private SystemEventHandle systemEventHandle = new SystemEventHandle() {
+ @Override
+ public boolean onMute(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onClosePage(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onClosePage");
+ if (multimodalEvent != null) {
+ showSystemEvent();
+ }
+ return false;
+ }
+ };
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_system_event_ability_slice);
+ MultimodalEventHandle.registerStandardizedEventHandle(getAbility(), systemEventHandle);
+ }
+
+ private void showSystemEvent() {
+ WeakReference referenceContext = new WeakReference<>(getContext());
+ utils.showDialogBox(message, referenceContext.get());
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ utils.distroyDialogBox();
+ MultimodalEventHandle.unregisterStandardizedEventHandle(getAbility(), systemEventHandle);
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/TelephoneEventAbilitySlice.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/TelephoneEventAbilitySlice.java
new file mode 100644
index 0000000000000000000000000000000000000000..59da82a34b90d866a994112964a4c998018cc4a2
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/TelephoneEventAbilitySlice.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.slice;
+
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.app.Context;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+import ohos.multimodalinput.event.MultimodalEvent;
+import ohos.multimodalinput.standard.MultimodalEventHandle;
+import ohos.multimodalinput.standard.TelephoneEventHandle;
+import ohos.samples.multimodalevent.ResourceTable;
+import ohos.samples.multimodalevent.utils.Utils;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * TelephoneEventAbilitySlice
+ *
+ * @since 2021-05-24
+ */
+public class TelephoneEventAbilitySlice extends AbilitySlice {
+ private static final String TAG = "TelephoneEventAbilitySlice";
+
+ private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD000F00, TAG);
+
+ private String message = "This is showTelephoneEvent";
+
+ private Utils utils = Utils.getInstance();
+
+ private TelephoneEventHandle telephoneEventHandle = new TelephoneEventHandle() {
+ @Override
+ public boolean onAnswer(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onRefuse(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onHangup(MultimodalEvent multimodalEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onTelephoneControl(MultimodalEvent multimodalEvent) {
+ HiLog.info(LABEL_LOG, "onTelephoneControl");
+ if (multimodalEvent != null) {
+ showTelphoneEvent();
+ }
+ return false;
+ }
+ };
+
+ private void showTelphoneEvent() {
+ WeakReference referenceContext = new WeakReference<>(getContext());
+ utils.showDialogBox(message, referenceContext.get());
+ }
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_tel_event_ability_slice);
+ MultimodalEventHandle.registerStandardizedEventHandle(getAbility(), telephoneEventHandle);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ utils.distroyDialogBox();
+ MultimodalEventHandle.unregisterStandardizedEventHandle(getAbility(), telephoneEventHandle);
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/TouchEventAbilitySlice.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/TouchEventAbilitySlice.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1ab7a2483ea0d9bc4143e210568e56328a923b5
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/slice/TouchEventAbilitySlice.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.slice;
+
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.app.Context;
+import ohos.hiviewdfx.HiLog;
+import ohos.hiviewdfx.HiLogLabel;
+import ohos.multimodalinput.standard.MultimodalEventHandle;
+import ohos.multimodalinput.standard.TouchEventHandle;
+import ohos.samples.multimodalevent.ResourceTable;
+import ohos.samples.multimodalevent.utils.Utils;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * TouchEventAbilitySlice
+ *
+ * @since 2021-05-24
+ */
+public class TouchEventAbilitySlice extends AbilitySlice {
+ private static final String TAG = "TouchEventAbilitySlice";
+
+ private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD000F00, TAG);
+
+ private static int count = 0;
+
+ private String message = "This is touchEvent";
+
+ private Utils utils = Utils.getInstance();
+
+ private TouchEventHandle touchEventHandle = touchEvent -> {
+ HiLog.info(LABEL_LOG, "ontouch touchevent2");
+ if (touchEvent != null) {
+ if (count > 0) {
+ return false;
+ }
+ count++;
+ showTouchEvent();
+ }
+ return false;
+ };
+
+ private void showTouchEvent() {
+ WeakReference referenceContext = new WeakReference<>(getContext());
+ utils.showDialogBox(message, referenceContext.get());
+ }
+
+ @Override
+ protected void onStart(Intent intent) {
+ super.onStart(intent);
+ setUIContent(ResourceTable.Layout_touch_event_ability_slice);
+ MultimodalEventHandle.registerStandardizedEventHandle(getAbility(), touchEventHandle);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ utils.distroyDialogBox();
+ MultimodalEventHandle.unregisterStandardizedEventHandle(getAbility(), touchEventHandle);
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/utils/Utils.java b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/utils/Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..a06239845ca075c3f3ac6e425314b15d68db590e
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/java/ohos/samples/multimodalevent/utils/Utils.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ohos.samples.multimodalevent.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import ohos.agp.utils.TextAlignment;
+import ohos.agp.window.dialog.ListDialog;
+import ohos.app.Context;
+
+import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;
+
+/**
+ * Utils
+ *
+ * @since 2021-06-08
+ */
+public class Utils {
+ private static final int DIALOG_BOX_WIDTH = 985;
+
+ /**
+ * listDialog ListDialog
+ */
+ private ListDialog listDialog;
+
+ private static Utils instance;
+
+ private Utils() {
+ }
+
+ public static synchronized Utils getInstance() {
+ if (instance == null) {
+ instance = new Utils();
+ }
+ return instance;
+ }
+
+ /**
+ * showDialogBox
+ *
+ * @param message string
+ * @param context Context
+ */
+ public void showDialogBox(String message, Context context) {
+ listDialog = new ListDialog(context);
+ listDialog.setAlignment(TextAlignment.CENTER);
+ listDialog.setSize(DIALOG_BOX_WIDTH, MATCH_CONTENT);
+ listDialog.setAutoClosable(true);
+ String[] items = new String[]{
+ message, "Current Time:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
+ Locale.getDefault()).format(new Date().getTime())
+ };
+ listDialog.setItems(items);
+ listDialog.show();
+ }
+
+ /**
+ * showDialogBox
+ */
+ public void distroyDialogBox() {
+ if (listDialog != null) {
+ listDialog.destroy();
+ }
+ }
+}
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/element/color.json b/UI/MultimodalEvent/entry/src/main/resources/base/element/color.json
new file mode 100644
index 0000000000000000000000000000000000000000..9c4751cd0da876ca926a9a5d3c7b1238b5786ac5
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/element/color.json
@@ -0,0 +1,64 @@
+{
+ "color": [
+ {
+ "name": "color_button_blue_empty",
+ "value": "#0000FF"
+ },
+ {
+ "name": "color_button_blue_pressed",
+ "value": "#0000CC"
+ },
+ {
+ "name": "color_button_blue_text",
+ "value": "#FFFFFF"
+ },
+ {
+ "name": "color_button_gray_empty",
+ "value": "#E5E5E5"
+ },
+ {
+ "name": "color_button_gray_pressed",
+ "value": "#D0D0D0"
+ },
+ {
+ "name": "color_button_gray_text",
+ "value": "#0F0F0F"
+ },
+ {
+ "name": "color_button_white_empty",
+ "value": "#FAFAFA"
+ },
+ {
+ "name": "color_button_white_pressed",
+ "value": "#E5E5E5"
+ },
+ {
+ "name": "color_button_white_text",
+ "value": "#0F0F0F"
+ },
+ {
+ "name": "color_transparent",
+ "value": "#00000000"
+ },
+ {
+ "name": "color_white",
+ "value": "#FFFFFF"
+ },
+ {
+ "name": "color_dialog_title_text",
+ "value": "#000000"
+ },
+ {
+ "name": "color_dialog_content_text",
+ "value": "#5F5F5F"
+ },
+ {
+ "name": "color_dialog_button_text_blue",
+ "value": "#0044FF"
+ },
+ {
+ "name": "color_dialog_button_line",
+ "value": "#9F9F9F"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/element/float.json b/UI/MultimodalEvent/entry/src/main/resources/base/element/float.json
new file mode 100644
index 0000000000000000000000000000000000000000..39d19dd54faa22f3ef074e8f1dcc9837390636ff
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/element/float.json
@@ -0,0 +1,44 @@
+{
+ "float": [
+ {
+ "name": "button_height",
+ "value": "40vp"
+ },
+ {
+ "name": "button_width",
+ "value": "280vp"
+ },
+ {
+ "name": "button_margin",
+ "value": "10vp"
+ },
+ {
+ "name": "button_text_size",
+ "value": "18fp"
+ },
+ {
+ "name": "dialog_padding",
+ "value": "20vp"
+ },
+ {
+ "name": "dialog_content_padding",
+ "value": "10vp"
+ },
+ {
+ "name": "title_text_size",
+ "value": "18fp"
+ },
+ {
+ "name": "content_text_size",
+ "value": "16fp"
+ },
+ {
+ "name": "dialog_button_height",
+ "value": "40vp"
+ },
+ {
+ "name": "dialog_check_box_size",
+ "value": "20vp"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/element/string.json b/UI/MultimodalEvent/entry/src/main/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..f198b9d448f2c42c5d0420dfb2d49d68d3a36735
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,64 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "MultimodalEvent"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "key_text",
+ "value": "Please Press Key"
+ },
+ {
+ "name": "media_text",
+ "value": "Sound Player"
+ },
+ {
+ "name": "system_text",
+ "value": "Please Close Page"
+ },
+ {
+ "name": "common_enter_text",
+ "value": "Please Press Enter Key"
+ },
+ {
+ "name": "sound_player",
+ "value": "Sound Player"
+ },
+ {
+ "name": "please_play",
+ "value": "Please Play"
+ },
+ {
+ "name": "touch_event_handle",
+ "value": "TouchEventHandle"
+ },
+ {
+ "name": "key_event_handle",
+ "value": "KeyEventHandle"
+ },
+ {
+ "name": "common_event_handle",
+ "value": "CommonEventHandle"
+ },
+ {
+ "name": "media_event_handle",
+ "value": "MediaEventHandle"
+ },
+ {
+ "name": "system_event_handle",
+ "value": "SystemEventHandle"
+ },
+ {
+ "name": "telephone_event_handle",
+ "value": "TelephoneEventHandle"
+ },
+ {
+ "name": "touch_event",
+ "value": "TouchEvent"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_ability_main.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44fb1387798e43f7b7fdf3f4886d8213bcc2618b
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_button_element.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_button_element.xml
new file mode 100644
index 0000000000000000000000000000000000000000..03369baa8be4ddf036d184b05a50af1b5446aab1
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_button_element.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_dialog.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_dialog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..36020615303d6dbf24954e19c885bc50c6a979eb
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/background_dialog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_bg.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_bg.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6fd0ed08caa486a06b4c48358121e5b7985d916c
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_bg.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7ac8a58fa538cb49c2002099764577c5465bfe3
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue_empty.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue_empty.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d0ecf30a505dffd62934daa194486c7de10e3f1
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue_empty.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue_pressed.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue_pressed.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d11532e05a71249462cc31a5731bfd43f7ebe91
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_blue_pressed.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8f2859423912e99acb8f835cea1d5d487079c290
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray_empty.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray_empty.xml
new file mode 100644
index 0000000000000000000000000000000000000000..20ffd312b56126e6d2ebffc59dda5789f0e2d302
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray_empty.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray_pressed.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray_pressed.xml
new file mode 100644
index 0000000000000000000000000000000000000000..29132e747d6d0eda3fededa72b86be6c69447047
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_gray_pressed.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4e0079165aed84710c26eb2bab5e088c9af0c711
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white_empty.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white_empty.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d4bb25a22b2091992a9e1a216ffaa7b8dca3abb7
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white_empty.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white_pressed.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white_pressed.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b90569bb1a429101bb969f061a84e482a2ee756e
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/button_white_pressed.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/dialog_button.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/dialog_button.xml
new file mode 100644
index 0000000000000000000000000000000000000000..174065f8b2c407743f6b64418d02411cfb18311b
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/dialog_button.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e7a8dff1bb775f84fa271aa9d44ecfab75b98350
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item_clicked.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item_clicked.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5242e7b270579ac58fdba9d0fc7a0942e613a805
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item_clicked.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item_nomral.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item_nomral.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85330edb5fc89c9d4a053fd22d75fb5ce6ff372a
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/list_item_nomral.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e5a6084e7df501b413a9d4e4c435690346e8b28
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box_checked.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box_checked.xml
new file mode 100644
index 0000000000000000000000000000000000000000..349249c0e2eabd0f6ff4d301148fc017f646193f
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box_checked.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box_normal.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box_normal.xml
new file mode 100644
index 0000000000000000000000000000000000000000..28f162a2a9e759aa20f93faf8f6fa82fe088713b
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/single_box_normal.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/graphic/textfield_bg.xml b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/textfield_bg.xml
new file mode 100644
index 0000000000000000000000000000000000000000..50e311561e1d80c464e84978d2baadfa7de6aa78
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/graphic/textfield_bg.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/layout/common_event_ability_slice.xml b/UI/MultimodalEvent/entry/src/main/resources/base/layout/common_event_ability_slice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d2c748c6931a0417ad481d0ed48e2e952b6f961d
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/layout/common_event_ability_slice.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/layout/key_event_ability_slice.xml b/UI/MultimodalEvent/entry/src/main/resources/base/layout/key_event_ability_slice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b302ee3a0b55899b6854e3a73839c4565d04d47f
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/layout/key_event_ability_slice.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/layout/main_ability_slice.xml b/UI/MultimodalEvent/entry/src/main/resources/base/layout/main_ability_slice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f8b4fbc387fff0d0253f3671d744107bc76a6143
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/layout/main_ability_slice.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/layout/media_event_ability_slice.xml b/UI/MultimodalEvent/entry/src/main/resources/base/layout/media_event_ability_slice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d52e091d332467a967dc57b816e2a89d3604ba63
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/layout/media_event_ability_slice.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/layout/system_event_ability_slice.xml b/UI/MultimodalEvent/entry/src/main/resources/base/layout/system_event_ability_slice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6aabe61bd4bfd8c9a2e634d580e6d694790bba6f
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/layout/system_event_ability_slice.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/layout/tel_event_ability_slice.xml b/UI/MultimodalEvent/entry/src/main/resources/base/layout/tel_event_ability_slice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21c602e50e226784de6da4ed123ff21f18cef403
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/layout/tel_event_ability_slice.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/layout/touch_event_ability_slice.xml b/UI/MultimodalEvent/entry/src/main/resources/base/layout/touch_event_ability_slice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..90ce8af04fb71c318af7b619e99bb9d1435aab50
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/base/layout/touch_event_ability_slice.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/base/media/icon.png b/UI/MultimodalEvent/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and b/UI/MultimodalEvent/entry/src/main/resources/base/media/icon.png differ
diff --git a/UI/MultimodalEvent/entry/src/main/resources/en/element/string.json b/UI/MultimodalEvent/entry/src/main/resources/en/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..f198b9d448f2c42c5d0420dfb2d49d68d3a36735
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/en/element/string.json
@@ -0,0 +1,64 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "MultimodalEvent"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "key_text",
+ "value": "Please Press Key"
+ },
+ {
+ "name": "media_text",
+ "value": "Sound Player"
+ },
+ {
+ "name": "system_text",
+ "value": "Please Close Page"
+ },
+ {
+ "name": "common_enter_text",
+ "value": "Please Press Enter Key"
+ },
+ {
+ "name": "sound_player",
+ "value": "Sound Player"
+ },
+ {
+ "name": "please_play",
+ "value": "Please Play"
+ },
+ {
+ "name": "touch_event_handle",
+ "value": "TouchEventHandle"
+ },
+ {
+ "name": "key_event_handle",
+ "value": "KeyEventHandle"
+ },
+ {
+ "name": "common_event_handle",
+ "value": "CommonEventHandle"
+ },
+ {
+ "name": "media_event_handle",
+ "value": "MediaEventHandle"
+ },
+ {
+ "name": "system_event_handle",
+ "value": "SystemEventHandle"
+ },
+ {
+ "name": "telephone_event_handle",
+ "value": "TelephoneEventHandle"
+ },
+ {
+ "name": "touch_event",
+ "value": "TouchEvent"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/UI/MultimodalEvent/entry/src/main/resources/zh/element/string.json b/UI/MultimodalEvent/entry/src/main/resources/zh/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..9e02c3a3533261523c17e84cca884bb43c90108e
--- /dev/null
+++ b/UI/MultimodalEvent/entry/src/main/resources/zh/element/string.json
@@ -0,0 +1,64 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "多模输入事件标准化"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "key_text",
+ "value": "请按音量键"
+ },
+ {
+ "name": "media_text",
+ "value": "请按播放键"
+ },
+ {
+ "name": "system_text",
+ "value": "退出当前页面"
+ },
+ {
+ "name": "common_enter_text",
+ "value": "请按Enter键"
+ },
+ {
+ "name": "sound_player",
+ "value": "音乐"
+ },
+ {
+ "name": "please_play",
+ "value": "请按播放键"
+ },
+ {
+ "name": "touch_event_handle",
+ "value": "触摸类标准化事件"
+ },
+ {
+ "name": "key_event_handle",
+ "value": "按键类标准化事件"
+ },
+ {
+ "name": "common_event_handle",
+ "value": "通用类标准化事件"
+ },
+ {
+ "name": "media_event_handle",
+ "value": "媒体类标准化事件"
+ },
+ {
+ "name": "system_event_handle",
+ "value": "系统类标准化事件"
+ },
+ {
+ "name": "telephone_event_handle",
+ "value": "通话类标准化事件"
+ },
+ {
+ "name": "touch_event",
+ "value": "触摸事件"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/UI/MultimodalEvent/screenshots/device/common.png b/UI/MultimodalEvent/screenshots/device/common.png
new file mode 100644
index 0000000000000000000000000000000000000000..dfd3820adc030eed964a0362494b3ae5bd062402
Binary files /dev/null and b/UI/MultimodalEvent/screenshots/device/common.png differ
diff --git a/UI/MultimodalEvent/screenshots/device/index.png b/UI/MultimodalEvent/screenshots/device/index.png
new file mode 100644
index 0000000000000000000000000000000000000000..2465e0b83dcba85318d4e472d464b8d8df9f0b4d
Binary files /dev/null and b/UI/MultimodalEvent/screenshots/device/index.png differ
diff --git a/UI/MultimodalEvent/screenshots/device/key.png b/UI/MultimodalEvent/screenshots/device/key.png
new file mode 100644
index 0000000000000000000000000000000000000000..48e9908468cb02ca044706fc38a98a0c796d5c33
Binary files /dev/null and b/UI/MultimodalEvent/screenshots/device/key.png differ
diff --git a/UI/MultimodalEvent/screenshots/device/media.png b/UI/MultimodalEvent/screenshots/device/media.png
new file mode 100644
index 0000000000000000000000000000000000000000..d35c7ecb103c68d5e6a509c1ce3b4b679674ce22
Binary files /dev/null and b/UI/MultimodalEvent/screenshots/device/media.png differ
diff --git a/UI/MultimodalEvent/screenshots/device/telphone.png b/UI/MultimodalEvent/screenshots/device/telphone.png
new file mode 100644
index 0000000000000000000000000000000000000000..bec83f127b0ab74367d54b826d96c5fca73facb5
Binary files /dev/null and b/UI/MultimodalEvent/screenshots/device/telphone.png differ
diff --git a/UI/MultimodalEvent/screenshots/device/touch.png b/UI/MultimodalEvent/screenshots/device/touch.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e9537ea90e71ed0b5a141d3d15d1a36c86bb26f
Binary files /dev/null and b/UI/MultimodalEvent/screenshots/device/touch.png differ
diff --git a/UI/MultimodalEvent/settings.gradle b/UI/MultimodalEvent/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..7dc3285c045cc590e49d231a4280ef52ba646d91
--- /dev/null
+++ b/UI/MultimodalEvent/settings.gradle
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+include ':entry'