android wear 运动程序,Android Wear 之 为通知添加动作

为通知添加动作

这里将会使用三种通知动作:

为通知添加标准动作

为通知添加自定义动作

为通知添加语音动作

说白了就是和我们点击手机上的通知效果一样。比如点击通知打开一个界面,开一个服务啥的。基本就是这个功能。

一、为通知添加标准动作

接着上一章来,添加一个延迟意图用来跳转界面。通过NotificationCompat.Builder的setContentIntent()方法,为通知添加标准动作。也就是点击通知后会打开一个新的界面。

/** * 点击事件 *@param view */

public void send(View view){

Intent intent = new Intent(this,SecondActivity.class);//跳转界面

PendingIntent pendingIntent = PendingIntent//延迟意图

.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

NotificationManagerCompat manager = NotificationManagerCompat.from(this);//通知管理器

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);//通知构造器

builder.setContentTitle("来自手机的消息通知");//设置标题

builder.setDefaults(Notification.DEFAULT_ALL);//设置通知属性

builder.setLargeIcon(//设置大图标

BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));

builder.setAutoCancel(true);//设置自关闭

builder.setContentIntent(pendingIntent);//设置标准动作

builder.setSmallIcon(R.mipmap.ic_launcher);//设置小图标

manager.notify(0, builder.build());//发送通知

}

【运行效果】

0818b9ca8b590ca3270a3433284dd417.png

二、为通知添加自定义动作

这里将使用NotificationCompat.Builder的extend()方法,为通知添加自定义动作。同样延迟意图不变,还是打开SecondActivity界面。

/** * 点击事件 * @param view */

public void send(View view){

Intent intent = new Intent(this,SecondActivity.class);//跳转界面

PendingIntent pendingIntent = PendingIntent//延迟意图

.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

NotificationManagerCompat manager = NotificationManagerCompat.from(this);//通知管理器

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);//通知构造器

builder.setContentTitle("来自手机的消息通知");//设置标题

builder.setDefaults(Notification.DEFAULT_ALL);//设置通知属性

builder.setLargeIcon(//设置大图标

BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));

builder.extend(new android.support.v4.app.NotificationCompat.WearableExtender()

.addAction(new android.support.v4.app.NotificationCompat.Action.Builder

(R.mipmap.ic_launcher,"自定义动作",pendingIntent)//自定义动作

.build()));

builder.setSmallIcon(R.mipmap.ic_launcher);//设置小图标

manager.notify(0, builder.build());//发送通知

}

【运行效果】

0818b9ca8b590ca3270a3433284dd417.png

三、为通知添加语音动作

这个其实也是自定义动作,只不过增加了调用手表语音传递语音信息的功能。(这里用的是虚拟机,所以我就回传了emoji。如果是穿戴设备的话,会开启设备的语音识别功能,随后穿戴设备会将识别的文字数据传递给要开启的界面)

1.MainActivity界面中的发送通知代码部分

/** * 点击事件 * @param view */

public void send(View view){

Intent intent = new Intent(this,SecondActivity.class);//跳转界面

PendingIntent pendingIntent = PendingIntent//延迟意图

.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

NotificationManagerCompat manager = NotificationManagerCompat.from(this);//通知管理器

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);//通知构造器

builder.setContentTitle("来自手机的消息通知");//设置标题

builder.setDefaults(Notification.DEFAULT_ALL);//设置通知属性

builder.setLargeIcon(//设置大图标

BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));

builder.extend(new android.support.v4.app.NotificationCompat.WearableExtender()

.addAction(new android.support.v4.app.NotificationCompat.Action.Builder

(R.mipmap.ic_launcher,"语音动作",pendingIntent)//添加动作

.addRemoteInput(new RemoteInput.Builder("voice")

.setLabel("随便说句话")//语音识别界面的提示标签

.build())

.build()));

builder.setSmallIcon(R.mipmap.ic_launcher);//设置小图标

manager.notify(0, builder.build());//发送通知

}

2.SecondActivity界面展示返回结果代码部分

public class SecondActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);

//获取Bundle

Bundle remoteInputResults = RemoteInput.getResultsFromIntent(getIntent());

CharSequence replyMessage = "";

if (remoteInputResults != null) {//如果Bundle不为空,则有数据返回

replyMessage = remoteInputResults.getCharSequence("voice");//获取数据

}

((TextView) findViewById(R.id.test)).setText("返回结果:" + replyMessage);//展示返回结果

}

}

【运行效果】

0818b9ca8b590ca3270a3433284dd417.png

※注意事项

在点击自定义动作的时候,通知并没有关闭。那么如何关闭呢?只需要使用NotificationManagerCompat(通知管理器)的cancel()方法就可以关闭指定的通知。(在cancel()传入的参数要与notify()方法中的参数一致)

在使用手表的语音识别功能时,手机要保持连网的状态。否则是不会有识别结果的。

使用AndroidWear让手表截图,只对真机有效,对虚拟机是没有效果的。当手机接到截图成功的通知后,请用邮件发送截取的图片结果。因为无论是使用微信还QQ都是空白或者是找不到文件路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值