从我的主应用程序的活动中启动智能手表上的控件扩展。还会在手表上显示从活动发送的文本

时间:2013-09-23 12:56:51

标签: android sony sony-smartwatch

我是Sony Smartwatch开发的新手。我在创建演示索尼智能手表应用程序时遇到了一些问题。我的活动中有一个EditText和一个Button。单击Button时,EditText中的字符串应发送到智能手表并显示在控件上。我还应该可以从我的应用活动中更改手表上的文字。

更新:

1)我想从我的主应用程序活动启动一个智能手表控制扩展,并在其上显示一个简单的文本 2)文本应该从主应用程序活动发送。

从我从SDK示例中了解到(如果错误,请纠正我): 1)要完全控制智能手表屏幕并显示文本视图或图像,我需要扩展ControlExtension类(在我的情况下 - > DemoControlSmartWatch.java)。 2)我需要在清单中注册一个BroadcastReceiver(DemoReceiver.java),当它从Host Application和/或Smart Connect App收到Intent时,它将启动扩展服务(DemoExtensionService.java)。 3)还创建了一个类(DemoRegistrationInformation.java),它扩展了RegistrationInformation类并负责注册。 4)我有一个带有Button的活动(MainActivity.java)。现在,我想在点击按钮时向ControlExtension发送一个String。

我发现要开始扩展,我需要执行以下操作

Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "com.example.sonytest");
intent.setPackage("com.sonyericsson.extras.liveware.emulator");
sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);

我尝试在我的MainActivity类的onCreate方法中编写它,但是它没有在智能手表上启动我的Control扩展。我应该在DemoExtensionService中编写上面的代码并将我的活动绑定到服务吗?

2 个答案:

答案 0 :(得分:2)

你的演示似乎不合适,我建议你想一个也会有一些实际应用的应用。如果我正确理解您的问题,解决方案将是:

1)从您的活动中,您需要在SmartWatch上启动扩展。以下是如何执行此操作:Sony SmartWatch - invoke app on Smart Watch when it gets an event

2)你也想把一些参数传递给你的扩展,即你提到的字符串。这可能有点棘手;通常,你会在Intent本身传递那个String,作为额外的,但在这里,这是不可用的。您需要将该信息(字符串)保存在Extension也可以访问的位置。因此,如果您的活动和您的扩展程序属于同一个应用程序,则该位置可以是应用程序首选项:活动将值保存在首选项中,并且扩展程序从同一首选项中读取它并将其显示在SmartWatch或其他任何位置。

答案 1 :(得分:0)

通常,扩展程序的启动方式是从手表启动它,然后主机应用程序将发送广播以启动您的服务。

如果您尝试从活动开始扩展,则上述Intent应该有效。您发送该广播时是否看到任何错误?检查您是否拥有主机应用程序的正确包名。