三星远程开发测试平台

反馈 注册 登录

三星S Pen悬空操作适配指导

      从三星Galaxy Note系列诞生起, S Pen就是每一代Note系列的标配与亮点。S Pen始终坚持在硬件和软件方面优化创新,从Galaxy Note9 开始S Pen增加了蓝牙功能,通过单击或双击S Pen上的按键实现远距控制,有效遥控距离高达10米。比如可以使用S Pen翻看相册中的照片,相册中的视频也可以使用S Pen播放、暂停, 还可以使用S Pen远程控制相机进行拍照,轻松捕捉精彩瞬间。


image.png

图1 | 控制拍照


在新一代Galaxy Note10上这支小小的笔有了新的设计和功能,它增加了陀螺仪和加速传感器,可以感知手部动作,通过简单的手势即可操控手机。比如顺时针或逆时针移动S Pen可调整摄像头焦距,以便拍摄近景或全景。在相册中通过左滑右滑可切换到下一张照片,或返回到上一张照片。通过手势向上调高音量,手势向下降低音量,无需再触碰音量键。

 

image.png

图2 | 手势


本文将介绍S Pen包含按键和手势动作的悬空操作功能,以便开发者把S Pen适配到更多的第三方APP中,实现支持更多的操控与应用。

 

一. 悬空操作实现原理

 

S Pen通过BLE连接到手机,由S Pen Framework管理连接,并会将BLE事件转换为KeyEvent,应用只需要回调现有的KeyEvent-Callback来处理S Pen事件即可。

 

image.png

图3 | 流程图

 

为了实现应用功能,应用必须定义RemoteActions并遵循下面的实现过程。

1.   在Manifest文件中指定要映射到S Pen远程事件的KeyEvent。

2.   实现KeyEvent-Callback(如果需要)。

 

二.悬空操作实现方法

 

1.   在需要响应的activity中添加<intent-filter><meta-data>

必须在<meta-data>中指定定义RemoteActions的资源文件.xml



image.png

图4 | Manifest代码举例


 

2. 在res / xml /下创建一个.xml文件,将文件名命名为步骤2中指定的资源文件名称。


image.png

图5 | 目录举例

 

在xml文件中具有<remote-actions>的根元素,并且可以包括多个<action>元素。另外,每个<action>包含id,label,priority,trigger_key等信息。


image.png

 图6 | xml文件举例

 

下面对xml文件中的元素进行介绍:

1)<action>


image.png

图7 | action表格

 

2)<preference>


image.png

图8 | preference 代码示例

 

描述:确定要映射的默认手势,检查此操作是按下按钮还是手势动作

属性:

Ø  name:可设置为“gesture”,“button_only”,“motion_only”

-      “gesture”:设置您要设置为默认的手势类型

-      “button_only”:仅为与按钮相关的手势提供操作

-      “motion_only”:仅为与动作相关的手势提供动作

Ø  value

-      如果name =“gesture”,则下表中的value都可以使用。

-      多个值由“|”分隔 ,  例如:“click | swipe_down | swipe_down”。

 

image.png

图9 | value说明

 

-      如果name =“button_only”或者“motion_only”,则value允许设置为"true"或"false"。

-      如果这个配置与“gesture”的值相矛盾,该设置将被忽略。 例如,如果将“swipe_left”设置为“gesture”的值,而“button_only”为true,则配置是矛盾的,将忽略“button_only”设置。

 

3. KeyEvent-Callback的实现

与处理Android KeyEvent相同,建议在onKeyDown处理发送的KeyEvent。

示例:

Ø  Page Down键:在Y方向上滚动ScrollView +500

Ø  Page Up键:在Y方向上滚动ScrollView -500


image.png

图10 | KeyEvent响应代码示例

 

可参考Android开发者官网。https://developer.android.google.cn/reference/android/view/KeyEvent.Callback.html

 

三.S Pen一般控制

 

如果应用没有按照上面的悬空操作添加功能,对于相机拍照和注册了Media session的媒体应用将遵循一般控制原则,S Pen Framework会将按键和手势动作按下表转化为KeyEvent传送给应用,应用只需要对下面的KeyEvent进行处理就可以响应S Pen。

 

image.png

 

 

四.S Pen Remote SDK

 

S Pen的新功能可识别手势动作,通过S Pen Framework可以轻松识别向上,向下,向左,向右,顺时针和逆时针响应方向动作,可以根据需要将这些按钮和动作功能添加到应用程序功能中。但是,如果应用需要获得S Pen运动的原始数据,实现更强大的应用功能,必须使用S Pen Remote SDK。S Pen Remote SDK提供识别运动坐标和按键功能,应用可以利用原始动作数据,设计自定义的手势轨迹,或者利用相对位置来完成用户交互,增强游戏和应用的用户体验。关于S Pen Remote SDK后续将会详细介绍,请大家持续关注。

 

image.png

图11 | 原始坐标手势图

 

五.联系我们

 

如果您对S Pen悬空操作有任何问题,可以发邮件到下面的邮箱与我们联系。

邮箱地址:rdtpservice@samsung.com

邮件主题:三星S Pen+APP名