如何通过远程传感器获取Gear的用户活动






2.33/5 (3投票s)
本教程将讨论如何创建三星 Gear 远程传感器应用程序。
以下教程讨论了如何创建三星 Gear 远程传感器应用程序。远程传感器允许您从可穿戴设备收集远程传感器数据。数据可以是计步器数据、用户活动事件或佩戴状态。蓝牙通信促进了可穿戴设备传感器数据的传输。SDK 中打包的远程传感器服务使用 Gear Manager 支持与可穿戴设备的蓝牙通信。
引言
为了进行简要概述,让我讨论一下什么是远程传感器。远程传感器允许您收集计步器数据、用户活动事件或佩戴状态。此外,它还支持蓝牙连接。
在本教程中,我们将教您使用远程传感器 SDK 重新创建示例计步器应用程序。
让我们开始吧。首先,让我们准备好开发 Gear 2 远程传感器应用程序所需的所有东西。确保您已安装带有 Android 开发工具的 Eclipse。请确保它已更新并包含 Jelly Bean 软件包。Jelly Bean 是使用三星远程传感器的最低要求。
我们还需要以下 JAR 文件
- accessory-v1.0.0.jar
- remotesensor-v1.0.0.jar
- sdk-v1.0.0.jar
这些将用于将您的远程传感器引入设备。这些文件可以在三星移动 SDK 1.5 beta 存档文件中找到。(远程传感器库)
此外,请确保您拥有一台运行 Jelly Bean 或更高版本的三星 Android 智能设备。当然,还有三星 Gear 2。
请按顺序安装以下组件。首先安装 Gear Manager,然后安装远程传感器服务。您可以从三星应用商店下载。
最后是远程传感器应用程序。我们稍后将进行测试。但您可以继续下载此帖中附带的示例应用程序。
让我们学习远程传感器库的架构和类。基本上,这些层由应用程序层(即使用远程传感器的应用程序)、传感器协议(主要负责访问可穿戴设备传感器数据)以及最后是远程传感器服务和可穿戴传感器服务(负责蓝牙连接)组成。
让我们继续介绍类。首先是 `Srs` 类。此类提供初始化远程传感器包和检查远程传感器是否受支持的方法。
它有四个方法:`getVersionCode`、`getVersionName`、`initialize` 和 `IsFeatureEnabled`。
对于 `IsFeatureEnabled`,我们有 `TYPE_GEAR_MANAGER`,这是一个用于检查您的管理器是否受支持的常量。我们有 `TYPE_GEAR_FIT_MANAGER`,这是一个用于检查 Gear Fit Manager 是否受支持的常量。最后是 `TYPE_REMOTE_SENSOR_SERVICE`,这是一个用于检查远程传感器服务是否受支持的常量。
remoteSensor = new Srs();
try {
remoteSensor.initialize(mContext);
} catch (SsdkUnsupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
)
`SrsRemoteSensorManager` 是一个提供对可穿戴设备传感器访问的类。请注意,当屏幕关闭时,系统不会自动禁用传感器。这就是为什么您应该始终在不需要传感器时禁用它们,尤其是在您的活动暂停时。
正如下面显示的示例代码所示,如果不这样做,电池可能在短短几个小时内耗尽。
mServiceManager = new SrsRemoteSensorManager(remoteSensor);
...
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
mServiceManager.unregisterListener(this, wearableStatusSensor);
...
}
`SrsRemoteSensorManager` 主要由四种方法组成:`GET_SENSOR_LIST`、`REGISTER_LISTENER`、`REQUEST_TRIGGER_SENSOR` 和 `UNREGISTER_LISTENER`。它有一个嵌套类 `SrsRemoteSensorManager.eventlistener`,这是一个接收传感器数据事件的监听器接口。我们将在进行示例时看到这个类的用法。
`SrsRemoteSensor` 是一个提供远程传感器信息的接口。它提供了几个有用的方法,例如检索设备类型或版本、获取传感器使用了多少电量、查询传感器的分辨率以及寿命。
最后一个是 `SrsRemoteSensorEvent`。此类代表传感器事件,并包含事件信息,如传感器类型、时间戳、精度和传感器数据。
public void onSensorValueChanged(final SrsRemoteSensorEvent event){
...
if(event.sensor.getType() ==
SrsRemoteSensor.TYPE_WEARING_STATE){
...
}
if(event.sensor.getType() ==
SrsRemoteSensor.TYPE_USER_ACTIVITY){
...
}
if(event.sensor.getType() ==
SrsRemoteSensor.TYPE_PEDOMETER){
...
}
...
{
值数组取决于正在监视的传感器类型。`TYPE_USER_ACTIVITY` 为我们提供了三个值:`UNKNOWN_STATE`、`WALK` 和 `RUN`。`TYPE_PEDOMETER` 为我们提供了步数计数器的值。为了减少可穿戴设备的功耗,此事件每五分钟更新一次。`TYPE_WEARING_STATE` 为我们提供了两个值:`NOT_WEARING` 和 `WEARING`。
让我们分析一下示例应用程序。这与三星移动 SDK 1.5 beta 中的示例类似。让我们打开我们的 Eclipse IDE。正如您所见,我们有一个名为 RSDemo 的应用程序,API 设置为 18。
现在让我们检查库。
已完成。现在是清单权限
这些是为了使用蓝牙功能,以及附件框架和远程传感器。
让我们看一下 XML 文件。基本上,这些 TextView 将显示可穿戴设备状态、用户活动和计步器数据的文本视图。按钮将充当刷新按钮,这意味着该按钮将从可穿戴设备检索数据。
我们转到 `MainActivity.java`。在 `onCreate` 方法中,我们看到 `Srs` 被初始化。
remoteSensor = new Srs();
try {
remoteSensor.initialize(mContext);
} catch (SsdkUnsupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
switch (e.getType ()) {
case SsdkUnsupportedException.LIBRARY_NOT_INSTALLED;
// Handle the exception
break;
case SsdkUnsupportedException.LIBRARY_UPDATE_IS_REQUIRED;
// Handle the exception
break;
default:
// Handle the exception
break;
}
}
我们也创建了服务管理器。
mServiceManager = new SrsRemoteSensorManager(remoteSensor);
继续,让我们检查 `onSensorValueChanged` 方法。在这里,我们看到如何从值数组中检索。
// Called when sensor values have changed.
@Override
public void onSensorValueChanged(final SrsRemoteSensorEvent event) {
runOnUiThread(new Runnable() { @Override public void run() {
if(event.sensor.getType() == SrsRemoteSensor.TYPE_WEARING_STATE){
if(event.values[0] == 1.0)
{ wearableStatus.setText("User is WEARING the device.");
}else{
wearableStatus.setText("User is NOT WEARING the device.");
}
}
if (event.sensor.getType() == SrsRemoteSensor.TYPE_USER_ACTIVITY)
if(event.values[0] == 2.0)
{ userActivity.setText("User is in WALKING.");
}else{
userActivity.setText("User is in an UNKNOWN STATE.");
}
}
if (event.sensor.getType() == SrsRemoteSensor.TYPE_PEDOMETER)
{ pedometerData.setText("User has taken " + Float.toString(event.values[0]) + " steps.");
}
}
});
}
我们看到数据如何通过已注册的传感器和传感器的速度从可穿戴设备中检索。
public void getWearableEvent(View view){
wearableStatusList = mServiceManager.getSensorList(SrsRemoteSensor.TYPE_WEARING_STATE);
wearableStatusSensor = wearableStatusList.get(0);
mServiceManager.registerListener(this, wearableStatusSensor, SrsRemoteSensorManager.SENSOR_DELAY_NORMAL, 0);
}
public void getActivityEvent(View view){
activitySensorList = mServiceManager.getSensorList(SrsRemoteSensor.TYPE_USER_ACTIVITY);
userActivitySensor = activitySensorList.get(0);
mServiceManager.registerListener(this, userActivitySensor, SrsRemoteSensorManager.SENSOR_DELAY_NORMAL, 0);
}
public void getPedometerEvent(View view){
pedoSensorList = mServiceManager.getSensorList(SrsRemoteSensor.TYPE_PEDOMETER);
pedometerSensor = pedoSensorList.get(0);
mServiceManager.registerListener(this, pedometerSensor, SrsRemoteSensorManager.SENSOR_DELAY_NORMAL, 0);
}
所有这些方法都在“检查信息”按钮下调用。
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
getWearableEvent(v);
getActivityEvent(v);
getPedometerEvent(v);
}
});
现在我们完成了,让我们测试我们的应用程序。在此之前,请记住安装 Gear Manager 和远程传感器服务。确保可穿戴设备和主机设备已成功连接。
一旦满足这些条件,您就可以安装 Android 应用程序,然后在您的 Gear 2 设备中启用计步器。四处走动以收集数据,然后在您的 Android 应用程序上点击“检查用户信息”按钮以检索可穿戴设备上的数据。
数据通过远程传感器 SDK 通过蓝牙发送到您的手机。
远程传感器包可用于从可穿戴设备获取用户活动。也就是说,当可穿戴设备用户行走或跑步时,主机设备中的应用程序会收到通知。更改活动也会通知用户。使用远程传感器,可穿戴设备还可以提供从当天开始到当前时间的计步器数据。您每 5 分钟可以获取一次数据。状态传感器提供可穿戴设备的当前状态,无论是正在佩戴还是未佩戴。这可以通过注册事件监听器来完成。数据在注册后 1 秒内即可提供。
本教程提供了示例应用程序,请查看附件文件。