Android Wear:在手持设备上启动服务

9

我正在开发一款与手持设备上的WearableListenerService通信的穿戴应用。但是,当应用在智能手表上启动时,我希望确保该服务已经启动并运行。

我的初步想法是发送一个意图或广播消息来启动服务。然而,我无法弄清楚如何让智能手表将其发送到配对的手持设备。

在智能手表端:

Intent intent = new Intent();
intent.setAction("my.wearable.CONNECT");
sendBroadcast(intent);

在手持设备方面:

public class WearableBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent(context, WearableService.class);
        context.startService(startServiceIntent);
    }
}

<receiver android:name=".service.wearable.WearableBroadcastReceiver" >
    <intent-filter>
        <action android:name="my.wearable.CONNECT" />
    </intent-filter>
</receiver>
1个回答

4

有几件事情需要澄清一下:

  1. Android Wear设备和Android设备之间的通信接口如下:

    • DataApi
    • MessageApi

    使用NodeApi获取已连接节点的ID。

  2. 在手表侧发送意图并期望在手机侧接收它是不可能的。

  3. 在手机侧,如果您正在扩展 WearableListenerService,则此服务由Android操作系统自我管理。这意味着,如果该服务从智能手表接收到消息或数据,Android会自动创建服务、处理您的请求,并在必要时销毁服务。在这里,您不需要做任何特殊的事情。

清单中定义的意图(复制粘贴上面) 对于Android操作系统来说足够好,以进行上述所述的服务管理。


我有一个服务,它扩展了 WearableListenerService 并且即使应用程序已经死亡,该服务可以完成一些操作,这很棒,但是如果手持应用程序不活跃,它就无法向我的可穿戴设备发送任何内容。当手腕应用程序打开时,我会向手持设备发送消息,然后通过 DataApi 将我的 API 响应发送到可穿戴设备,但在可穿戴设备上没有显示出来。在 WearableListenerService 中,我等待 GoogleApiClient 连接,然后将数据发送到可穿戴设备。这是正确的方式吗?简单来说,我要求手持设备进行请求,然后从服务中将其发送回去。 - Jonas Borggren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接