• 《第一行代码》学习笔记32-多媒体(2)


    1.PendingIntent和Intent类似,都可以指明某个“意图”,启动活动,启动服务,发送广播等。
    不同之处:Intent倾向于立即执行某个动作,而PendingIntent倾向于在某个合适的时机去执行某个动作。可以这样理解,
    PendingIntent—>延迟执行的Intent。

    2.PendingIntent的用法:提供了几个静态方法获取实例,根据需求来选择使用getActivity(),getBroadcast()还是getService()。
    这几个方法接收参数相同,第一个依旧是Context;第二个一般用不到,传入0;第三个是一个Intent对象,通过这个对象构建出
    PendingIntent的“意图”;第四个确定PendingIntent的行为,有FLAG_ONE_SHOT,FLAG_NO_CREATE,
    FLAG_CANCEL_CURRENT 和 FLAG_UPDATE_CURRENT。

    3.通知加上点击功能后的代码全貌:

    Intent intent = new Intent(this, NotificationActivity.class);
    PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    
    Notification.Builder builder = new Notification.Builder(MainActivity.this);
    builder.setSmallIcon(R.mipmap.ic_launcher);
    builder.setTicker("This is ticker text");
    builder.setWhen(System.currentTimeMillis());
    builder.setAutoCancel(false);
    builder.setContentTitle("This is content title");
    builder.setContentText("This is content text");
    builder.setContentIntent(pi);
    Notification n = builder.build();
    
    manager.notify(1,n);
    

    4.sound属性:在通知发出时播放一段音频,更好地告知用户有通知到来,其是Uri对象,指定音频文件时需要先获取到音频文件
    对应的URI。eg.手机的/system/media/audio/ringtones目录下有一个Basic_tone.ogg音频文件,代码指定:(本书用例废弃,现版已改动,未解决)

    Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
    notification.sound = sounder;
    

    vibrate属性:在通知到来时让手机振动,以毫秒为单位。(本书用例废弃,现版已改动,解决)
    eg.代码如下:

    Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
    vibrator.vibrate(500); //振动500ms
    

    5.通知到来时控制手机LED灯的显示:手机基本都会前置一个LED灯,当有未接电话或未读短信,手机又处于锁屏状态时,LED灯会
    不停地闪烁,提醒用户去看。使用ledARGB,ledOnMS,ledOffMS以及flags这几个属性来实现这种效果。
    (1)ledARGB用于控制LED灯的颜色,有红绿蓝三色可选;(2)ledOnMS用于指定LED灯亮起的时长,以毫秒为单位;(3)
    ledOffMS用于指定LED灯暗去的时长,也是以毫秒为单位;(4)flags指定通知的一些行为,包括LED灯这一选项。
    eg.当通知到来时,想要实现LED灯以绿色的灯光一闪一闪的效果,则代码:(本书用例废弃,现版已改动,未解决)

    notification.ledARGB = Color.GREEN;
    notification.ledOnMS = 1000;
    notification.ledOffMS = 1000;
    notification.flags = Notification.FLAG_SHOW_LIGHTS;
    

    6.不进行繁杂的设置,直接使用通知的默认效果,会根据当前手机的环境决定播放什么铃声,以及如何振动。(本书用例废弃,现版已改动,未解决)

    notification.defaults = Notification.DEFAULT_ALL;
    
  • 相关阅读:
    ext数据库读取动态添加window组件
    sony e系列笔记本的OFFICE的序列号
    ext panel 移除item失效的解决办法
    ExtJS xtype class对照表
    Dynamic Form interacting with an embedded Grid
    extjs动态列--editorGridPanel(2.2)
    Ext.form.DisplayField扩展组件:在formpanel中显示html格式的内容
    ExtJS 动态增加与删除items,动态设置textField可见与否
    Extjs formPanel 显示图片 + 上传
    EXTJS的数据存储机制
  • 原文地址:https://www.cnblogs.com/Iamasoldier6/p/5039195.html
Copyright © 2020-2023  润新知