首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

针对 Android Wear 应用程序的 Bluemix IoT 实时仪表板

针对 Android Wear 应用程序的 Bluemix IoT 实时仪表板

本帖最后由 look_w 于 2018-1-13 21:35 编辑

前提条件Android 方面:
  • 安装 Android Studio:
  • 一个 Android 移动设备
  • 一个 Android 手表
IBM Bluemix 方面:
  • 一个 IBM
创建一个新的 Android Wear 项目首先,创建一个新的 Android 项目 (File->New->New Project)。
在向导中,键入“HeartRate”作为应用程序名称并选择您的项目所在的位置。
单击“Next”,选择“Phone and Tablet”和“Wear”,然后根据您的设备选择最低限度的 SDK。
单击“Next”,为移动应用程序选择“Blank Activity”。
单击“Next”,在 Activity Name 字段中键入“HeartRateMobileActivity”。
单击“Next”,为 Wear 应用程序选择“Blank Wear Activity”。
单击“Next”,在 Activity Name 字段中键入“HeartRateWearActivity”。
单击“Finish”。
开发基本的可穿戴设备应用程序权限确保“mobile”和“wear”清单文件具有“BODY_SENSOR”权限:
1
2
3
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ibm.hcs.heartrate" >
<uses-permission android:name="android.permission.BODY_SENSORS" />





更新可穿戴设备活动在“wear”string.xml 文件中添加一个标签:
1
<string name="heartRateText">Heart Rate : N/A</string>




打开 Wear 的布局“round_activity_heart_rate_wear.xml”,然后使用“heartRateTextView”更改“id”字段,并使用“@string/heartRateText”更改“text”字段。
打开“HeartRateWearActivity”字段并更改“onCreate”函数。
1
2
3
4
5
6
7
8
9
10
11
12
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_heart_rate_wear);
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
mTextView = (TextView) stub.findViewById(R.id.heartRateTextView);
}
});
}




创建一个新服务创建一个名为“HeartRateWearService”的服务,验证清单文件:
1
<service android:name=".HeartRateWearService">




使用以下代码替换生成的文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class HeartRateWearService extends Service implements SensorEventListener{
private SensorManager sensorManager;
private Sensor heartRateSensor;
private ScheduledExecutorService heartRateScheduler;
public HeartRateWearService() {
}

@Override
public void onCreate() {
super.onCreate();
getHeartRateValues();
}

private void getHeartRateValues() {
sensorManager = ((SensorManager) getSystemService(SENSOR_SERVICE));
heartRateSensor = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
if (heartRateSensor != null) {
heartRateScheduler = Executors.newScheduledThreadPool(1);
heartRateScheduler.scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
sensorManager.registerListener(HeartRateWearService.this, heartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
sensorManager.unregisterListener(HeartRateWearService.this,heartRateSensor);
}
}, 3, 15, TimeUnit.SECONDS);
}
}

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onDestroy() {
if (sensorManager != null)
sensorManager.unregisterListener(this);
heartRateScheduler.shutdown();

super.onDestroy();
}

@Override
public void onSensorChanged(SensorEvent event) {
// sends an Intent to the Activity
Intent intent = new Intent();
intent.setAction("heartRateAction");
intent.putExtra("HeartRate", event.values[0]);
sendBroadcast(intent);
}
  
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

返回列表