Android Wear开发 - 卡片通知 - 第一节 : 添加Android Wear通知特性

一. 前言说明

Android Wear大部分显示形式是卡片的形式,而最简单地支持Android Wear方式就是用通知**Notification**。而实现最简单的,非高度自定义的通知,则只需要在手机端做一些处理,不需要进行手表端应用的开发,可以说是开发成本特别低。
本节主要讲解的就是简单的Wear特色卡片通知。

二. 环境配置

  1. 工程引用新版的Support-V4。
  2. 使用到的主要有以下3个类。
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import android.support.v4.app.NotificationCompat.WearableExtender;

三. 普通的通知栏

效果图

  1. 手机:普通的通知栏在手机上的效果应该都不陌生,这里就不展开说明
  2. 手表:手表端的效果是由2张卡片构成的,第一张是手机通知栏的信息组成,第二张是点击开发手机应用,具体的效果与手机通知栏的点击事件一致,也就是说,如果通知栏没有设置点击事件,那么就不会有第二张卡片。另外,默认的背景色是由应用图标所决定的,是取主要的颜色值。

代码实现

public void sendClassicNotify() {

    Notification.Builder builder = new Notification.Builder(this);

    // 1.设置显示信息

    builder.setContentTitle("标题");

    builder.setContentText("内容");

    builder.setSmallIcon(R.drawable.ic_launcher);

    // 2.设置点击跳转事件,若不设置,则手表没有第二张卡片

    Intent intent = new Intent(this, PhoneActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,

            intent, 0);

    builder.setContentIntent(pendingIntent);

    // 3.设置通知栏其他属性

    builder.setAutoCancel(true);

    builder.setDefaults(Notification.DEFAULT_ALL);

    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    manager.notify(0, builder.build());

}

问题

以上是最原始的通知栏效果,没有进行手表端适配处理的。看起来还不错,但会存在什么问题呢?
比如下面的效果,如果内容太长,就会很难看,这只是一部分,它还可以继续滚动。

四. 添加Wear扩展属性的通知栏

效果图

扩展属性

  • 多张卡片:如第一张图片的第二张卡片
  • 自定义动作按钮:如第一张图片的第二张卡片
  • 设置背景:如第一张图片的的背景
  • 堆叠多张卡片:如第二张图片的第一张卡片
  • 语音回复:如第二张图片的第二张卡片

代码实现

public void sendWearNotify() {

    NotificationCompat.Builder builder = new NotificationCompat.Builder(

            this);

    // 1.设置显示内容

    builder.setContentTitle("消息标题");

    builder.setContentText("消息内容");

    // 若只设置了SmallIcon,而没设置LargeIcon,则在通知栏左侧会显示SmallIcon设置的图标;若同时设置了LargeIcon,则左侧显示LargeIcon,右侧显示SmallIcon

    builder.setSmallIcon(R.drawable.ic_launcher);

    // 若设置了LargeIcon,则Wear背景会变成LargeIcon.

    // builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),

    // R.drawable.default_background_sunny_day_bg));

    // 2.设置跳转属性

    Intent intent = new Intent(this, PhoneActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,

            intent, 0);

    // 设置了ContentIntent后,通知栏有了点击效果,而wear滑动到最右侧时,多了一个Open on phone的页面

    builder.setContentIntent(pendingIntent);

    // 3.设置通知属性

    builder.setAutoCancel(true);

    builder.setDefaults(Notification.DEFAULT_ALL);

    // 4.设置手表特有属性

    builder.extend(extendWear(builder));

    mNotificationManager.notify(1, builder.build());

}

接下来对以上代码第四点(4.设置手表特有属性)进行拓展。

0. 方法结构

private NotificationCompat.WearableExtender extendWear(

        NotificationCompat.Builder builder) {

    NotificationCompat.WearableExtender wearableExtender = new NotificationCompat.WearableExtender();

    //TODO:具体属性设置代码

    return wearableExtender;

} 

接下来的功能点都插入在TODO后面。

1. 设置背景

    BitmapFactory.Options options = new BitmapFactory.Options();

    // 官方文档提示 : http://developer.android.com/training/wearables/notifications/creating.html 

    /**

     * Note: The bitmap that you use with setBackground() should have a

     * resolution of 400x400 for non-scrolling backgrounds and 640x400 for

     * backgrounds that support parallax scrolling. Place these bitmap

     * images in the res/drawable-nodpi directory of your handheld app.

     * Place other non-bitmap resources for wearable notifications, such as

     * those used with the setContentIcon() method, in the res/drawable-hdpi

     * directory of your handheld app.

     */

    // 可滚动,背景则为640x400,否则为400x400.

    // 若设置了背景,则LargeIcon在Wear端失效

    options.outWidth = 640;

    options.outHeight = 400;

    Bitmap wearBgBitmap = BitmapFactory.decodeResource(getResources(),

            R.drawable.wallpaper_1, options);

    // 设置了Bg后,LargeIcon便失效

    wearableExtender.setBackground(wearBgBitmap);
图片存放位置:通用的图标放在res/hdpi目录下,Wear独有的图片放在res/nodpi目录下
背景图片大小:可滚动的背景则为640x400,不可滚动的尺寸400x400 (px为单位).
属性冲突:使用了setBackground方法,同时设置了builder.setLargeIcon方法,那么手机显示的是setLargeIcon的,而手表显示的为setBackground的。
2. 添加独有的Action按钮

    // 2. 为Wear添加独有的action

    Intent intent = new Intent(this, PhoneActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,

            intent, 0);

    NotificationCompat.Action action = new NotificationCompat.Action(

            R.drawable.action, "新的Action", pendingIntent);

    wearableExtender.addAction(action);

3. 调整首页图标

// 3. 调整首页的图标

    // 隐藏默认应用图标

    wearableExtender.setHintHideIcon(true);

    // 设置跟ContentText跟随的图标

    wearableExtender.setContentIcon(R.drawable.mycolors);

    // 只支持Start和End标签,默认是End

    wearableExtender.setContentIconGravity(Gravity.START);
  • 设置setHintHideIcon为true后,原本右上角的应用图标便会隐藏。
  • Gravity只能设置Start和End标签,前者对应Left,后者对应Right。

    笔者之前做过RTL(右到左语言)的适配,如阿拉伯语,波斯语等,就是从右向左读的语言,要把整个界面的左对齐变成右对齐,而Android 4.2提供了Start和End标签,用来自动适配对齐方式,在LTR(左到右)语言中,Start→Left,End→Right;而在RTL(右到左)语言中,Start→Right,End→Left。我们这里就不展开来讲了,之后有时间会将笔记上传博客,有兴趣的同学届时可以参考下。

4. 添加第二页卡片

    // 4. 添加第二页卡片

    Notification secondPageNotification = new NotificationCompat.Builder(

            this).setContentTitle("page 2")

            .setContentText("现在显示的Wear通知内容,测试可以显示多少内容,试试看,哈哈哈.继续来一个")

            .build();

    wearableExtender.addPage(secondPageNotification);

关于堆叠多张卡片语音回复的内容,由于较少用到,笔者就没继续研究。
若读者有兴趣,可上开发者官网学习,其实也不难。
堆叠多张卡片地址
语音回复地址

以上就是笔者在做简单卡片适配的总结,更多属性的使用,可以阅读Samples for SDK目录下的wear/Notifications工程,这个Sample在通知栏基本上的所有功能都有涉及到。

时间: 2024-10-05 06:44:25

Android Wear开发 - 卡片通知 - 第一节 : 添加Android Wear通知特性的相关文章

Android Wear开发 - 数据通讯 - 第一节 : 连接数据层

http://developer.android.com/training/wearables/data-layer/accessing.html Accessing the Wearable Data Layer-数据层连接 GoogleApiClient是一个用于整合所有谷歌服务的入口,想要连接数据层,需要构建一个对象.GoogleApiClient提供了一个builder方法简化了构建对象的步骤. GoogleApiClient mGoogleApiClient = new GoogleA

Android Wear开发 - 卡片通知 - 第二节 : 自定义Wear卡片样式

一.前言说明 在上一节添加Android Wear通知特性我们实现了简单的Android Wear卡片拓展,但是默认提供给我们的多张卡片只能实现简单的文字展示,如果想要自定义布局,添加图片等等,则需要本节的知识. 二. 环境配置 代码配置与上一节没区别 若用Wear模拟器进行开发,必须要注意配置,必须将Use Host GPU打钩,否则,动态自定义的卡片会显示不了,变成黑色的一块块,上图. 三. 自定义卡片 效果图 图1~4卡片展示:可设置卡片高度,可调整显示内容的样式 图5卡片展示:可实现动画

Android零基础入门第16节:Android用户界面开发概述

相信通过前面15期的学习,Android的开发环境已经基本掌握了,如果仍有问题,欢迎到Android零基础入门技术讨论微信群交流,从本期开始正式来一步一步踏入Android开发之路. Android应用开发的一项内容就是用户界面的开发.Android提供了非常丰富的用户界面组件,借助于这些用户界面组件,开发者可以非常方便地进行用户界面开发,而且可以开发出非常优秀的用户界面. 一.界面UI元素介绍 Android应用是运行于手机系统上的程序,这种程序给用户的第一印象就是用户界面.接下来从以下几个方

实现学校信息增删改查-第一节添加学校名称

SSM框架实现学校信息增删改查-第一节添加学校名称 大家好!第一次写文 语句可能有些生涩,看到我不足的地方可以给我留言~ 好了,开始第一节,一个简单的添加学校名称功能~ 可以先看一下前端html代码,运行程序看一些界面效果 超级简易的一个添加页面,首先我们要知道添加是根据学校id添加信息的,请看代码哦 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

Android零基础入门第33节:Android事件处理概述

通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件.选框的状态切换事件. 一.Android事件处理 Android提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理. 基于监听的事件处理:主要做法就是为Android界面组件绑定特定的事件监听器,前面小节已经见到大量这种事件处理的示例. 基于回调的事件处理:主要做法就是重写Android组件特定的回调方法, 或者重写Activity的回调方法.Android为绝大部分界面组件都提供了事件

第一节.安装Android Studio(Ubuntu)

安卓开发系列教程--目录 最后编辑于2016-04-21 本节介绍在Ubuntu 14.04 LTS 下安装Android Studio 2.0 .如果你的开发环境为Windows 7,请转到------. 本节目录: 安装JDK 安装Android SDK 安装Android Studio 新建项目并在虚拟设备AVD上运行第一个安卓APP 1. 安装并配置JDK 1.1 从ORACLE 官网下载最新版本的JDK Downloads -> Popular Downloads. Java SE -

Android NDK开发指南---Application.mk文件和android.mk文件

https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https://android.googlesource.com/platform/ndk/+/4e159d95ebf23b5f72bb707b0cb1518ef96b3d03/docs/ANDROID-MK.TXT https://android.googlesource.com/platform/ndk/+/4

【Android本地开发技术:编译脚本】Android.mk

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 一 Android.mk文件的作用和特点 1.1 Android.mk文件作用 该文件用来描述编译系统(build system)的,即一个微型的GNU Makefile片段,会由编译系统解析一次或多次. 1.2 Android.mk文件特点 该文件用来将源文件组织成模块,模

Windows下Android+NDK开发环境搭建(JDK[8u45]+Eclipse+Android SDK[r24.1.2]+ADT+NDK[r10d])

一.Android开发环境搭建 1.安装JDK. (1)简介:JDK,即Java Development Kit,是Java语言的软件开发工具包.JRE,即Java Runtime Environment,是Java的运行环境,是面向Java的使用者而非开发者. (2)下载:点击打开链接(Oracle官网),选择对应系统的版本,我下载的是jdk-8u45-windows-i586.exe. (3)安装:双击进行安装,程序刚安装时设置的安装目录为JDK的安装目录,中途需要设置JRE的安装目录.为进