在Google Glass时间轴中使用卡而不使用Service类(或拥有没有强制PendingIntent菜单活动的LiveCard)

时间:2014-07-02 16:19:22

标签: android google-glass google-gdk

我正在为Google Glass开发一个应用程序,它基本上会在工作流程序列中调用多个活动(简而言之:注册视频,通过语音识别添加一些元数据,将文件上传到服务器,关闭应用程序);这些操作必须按顺序执行,所以我不需要"选项菜单"。

我设法使用仅活动和startActivityForResult方法做得很好:我有一个主Activity,它依次调用一个Activity并在调用后续的一个之前等待它的结果。

一切正常, 但是 我的问题是这个应用程序是"不是持久的":我碰巧在应用程序中间关闭通过向下滑动或让Glass进入待机状态,我丢失了应用程序,因此在此之前收集了所有数据。

这可能是因为我没有在时间轴上添加任何卡片。我想添加静态卡,但我不能使用TimelineItem类(我使用XE17)。我想添加一个LiveCard,但我不想添加菜单(LiveCard的PendingIntent是强制性的),我想要"工作流程"立即开始,无需用户再次点击。

我到目前为止唯一可以解决的问题是为LiveCard添加一个虚拟Activity作为PendingIntent(为了让应用程序满意),然后在onCreate()或onStartCommand()中启动第二个Activity服务的方法,这个Activity可以做真正的工作(也许通过一些绑定将信息返回到LiveCard,以避免在应用程序自然结束之前关闭数据丢失);我还需要启动第二个Activity,因为startActivityForResult方法的Service类中没有等效项。

尽管如此,我还不确定这个解决方案是否可行,我不认为这是为Glass设计的正确方法。

我怎样才能做到这一点(TL; DR:拥有一个持久的应用程序,有或没有LiveCard,但没有菜单和工作流程/操作流程)?

编辑:这不是我想要的,但我找到了一个使用经典方法的解决方案,用于LiveCard的PendingIntent。因此,我认为Jessie的答案是正确的。有关解释,请参阅我在答案中的最后评论。

1 个答案:

答案 0 :(得分:1)

您应该能够将PendingIntent设置为不是菜单。您可以指定任何随机活动,在本例中为您自己的活动。

您应该可以执行以下操作:

    Intent pendingIntent = new Intent(this, AccountsCard.class);
    pendingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    mLiveCard.setAction(PendingIntent.getActivity(this, 0, pendingIntent, 0));
相关问题