2013-08-06 39 views
0

现在开始开发应用程序,我试图在小部件中触摸屏幕时打开“窗口”。索尼智能手表 - 小工具窗口

在代码示例(sdk)中,我们可以在Event Widget中看到这一点,当您单击屏幕时,会打开一个“窗口”,您可以在其中看到事件。

我跟随的代码,看看我能做到这一点:

在NotificationWidgetExtension:SmartExtensionUtils:onTouch事件

Intent intent = new Intent(Widget.Intents.WIDGET_ENTER_NEXT_LEVEL_INTENT); 
sendToHostApp(intent); 

在WidgetExtension

protected void sendToHostApp(final Intent intent) { 
    intent.putExtra(Widget.Intents.EXTRA_AEA_PACKAGE_NAME, mContext.getPackageName()); 
    intent.setPackage(mHostAppPackageName); 
    mContext.sendBroadcast(intent, Registration.HOSTAPP_PERMISSION); 
} 

试图复制,但我没有成功。有没有我可以阅读的地方,或有人可以帮助我呢?

+0

你在模拟或设备上运行吗?你能确认你的代码编译正确吗?你可以让_anything_运行吗? – Floris

+0

我正在使用手表。这一切都在运行,事情是,我想知道更多关于这个打开的窗口。我可以用这个打开任何布局吗? – Otuyh

+0

哦,我现在看到,打开的窗口真的是扩展布局.. – Otuyh

回答

2

我认为你正在寻找三种不同的API-- Widget API,Notification API和Control API。

您所引用的onTouch代码是SDK实用程序类的一部分,如果您制作了既实现了Notification API又实现了Widget API的扩展程序,那么该代码就可以帮助您。在Watch上的Widget视图中,当您重写NotificationWidgetExtension类时,onTouch事件将传递到所提及的方法。它将基本显示第一个可用(而不是读取)通知。

你提到“窗口”等,我猜你想在SmartWatch上创建一个应用程序。这是通过Control API完成的。看看SDK中包含的SampleControlExtension。检查this答案,以获取有关如何从您自己的分机启动控制扩展的信息。例如。如果您创建了Widget + Control扩展,则可以在Widget的onTouch方法中启动控件扩展。

+0

嘿Jerker,谢谢你的答案,但我仍然有一个问题。我在onTouch的widget中使用这个: Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT); sendToHostApp(intent); 好吧,我开始控制。我怎么知道我来自小部件,而不是点击扩展图标? – Otuyh

+0

嗨!Hor,目前没有办法真正区分widget开始的扩展和用户启动的扩展。我建议使用例如您的应用偏好设置在Widget onTouch方法中设置标志。当控制扩展已经启动时,检查标志以区分这两种情况。不完美,但可行。 – Jerker