胡凯

Android Training - 创建可穿戴应用(2 - 创建自定义的布局)

| Comments

为可穿戴设备创建布局是和手持设备是一样的。但是 不要期望通过搬迁手持应用的功能与UI到可穿戴上会有一个好的用户体验。仅仅在有需要的时候,你才应该创建自定义的布局。请参考可穿戴设备的design guidelines学习如何设计一个优秀的可穿戴应用。

创建自定义Notification

通常来说,你应该在手持应用上创建好notification,然后让它自动同步到可穿戴设备上。这使得你只需要创建一次notification,然后可以在不同类型的设备(不仅仅是可穿戴设备,也包含车载设备与电视)上进行显示,免去为不同设备进行重新设计。

如果标准的notification风格无法满足你的需求(例如NotificationCompat.BigTextStyle 或者 NotificationCompat.InboxStyle),你可以使用activity,显示一个自定义的布局来达到目的。在可穿戴设备上你只可以创建并处理自定义的notification,同时系统无法为这些notification同步到手持设备上。

Note:当在可穿戴设备上创建自定义的notification时,你可以使用API Level 20上标准的APIs,不需要使用Support Library。

为了创建自定义的notification,步骤如下:

Android Training - 创建可穿戴应用(1 - 创建并执行可穿戴应用)

| Comments

可穿戴应用可以直接运行在可穿戴的设备上。拥有访问类似传感器的硬件权限,还有操作activity,services等权限。

你无法直接发布可穿戴应用到Google Play商城,需要利用手持应用来达到目的。因为可穿戴的设备不支持Google Play商城,所以当用户下载手持设备应用的时候,,会自动安装可穿戴应用到可穿戴设备上。手持应用还可以用来处理一些复杂繁重的任务,网络指令,或者其他的任务,最好发送操作结果返回给可穿戴设备。

这节课会介绍如何创建一个包含了手持应用与可穿戴应用的工程。

搭建Android Wear模拟器或者真机设备。

我们推荐在真机上进行开发,这样可以更好的评估用户体验。然而,模拟器可以使得你在不同类型的设备屏幕上进行模拟,这对测试来说更加有用。

搭建Android Wear虚拟设备

建立Android Wear虚拟设备需要下面几个步骤:

Android Training - 创建可穿戴应用(0 - 序言)

| Comments

创建可穿戴的应用

可穿戴应用直接运行在穿戴设备上,应用可以直接访问例如传感器与GPU这样的硬件。这些应用和一般的Android应用的基础部分是一致的,只是在设计与可用性还有一些特殊功能上有比较大差异。手持设备与可穿戴设备上的应用主要有下面的一些差异:

  • 系统会强制执行超时机制。如果你显示了一个Activity,用户并没有进行操作,设备会进入睡眠状态。当设备唤醒时,穿戴设备会显示主界面而不是你刚才的activity。如果你想要持续的显示一些东西,请使用notification来替代。
  • 相比起手持设备的应用,可穿戴应用的界面相对更小,功能也相对更少。他仅仅包含了那些对于可穿戴有意义的功能,这些功能通常是手持设备的一个子集。通常来说,你应该尽可能的把运行操作搬到手持设备上,然后发送操作结果到可穿戴设备。
  • 用户不能直接给可穿戴设备安装应用。你需要给手持设备的应用绑定一个可穿戴设备的应用。当用户安装手持设备的应用时,系统会自动安装可穿戴应用。然而,为了开发便利,你还是可以直接安装应用到可穿戴设备。
  • 可穿戴应用可以使用大多数的标准Android APIs,除了下面的以外:

    在使用某个API之前,你可以通过执行hasSystemFeature()) 来判断功能是否可用。

Note: 我们推荐使用Android Studio来开发Android Wear的应用,因为它提供了建立工程,添加库依赖,打包程序等等在ADT上没有的功能。下面的培训课程的前提是假设你已经在使用Android Studio了。

Android Notes - 添加Copy to Clipboard的选项到分享列表中

| Comments

偶然被人问到如何添加复制到剪切板的选项到分享列表,如下图所示:

copy_link_option_at_share_list

一般情况下,分享一段文字或者图片,我们会使用如下Android默认的方式:

1
2
3
4
5
6
7
public void shareText(Context context, String text) {
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, text);
    sendIntent.setType("text/plain");
    context.startActivity(Intent.createChooser(sendIntent, "Share via..."));
}

这样系统能够帮忙筛选出那些符合这个Intent的所有Activity,生成分享列表,呈现给用户。因为分享列表的信息是由系统过滤生成的,UI界面也是交给系统进行绘制的,我们的应用无法给这个分享列表设置点击监听器,那么如何才能实现添加一个“Copy to Clipboard”的选项到分享列表中,并在点击该选项之后执行对应的动作呢?当然,自己去实现这个分享列表的效果,UI完全交给自己的应用来控制,是可以轻松做到的,可是自己去过滤符合条件的应用,并绘制分享列表的代码量会大很多,实现起来更加复杂?下面介绍一个虽然写法有点奇怪却相对简便很多的方法。