Android手机还有一个很有用的功能便是它的信息通知功能。比如网易云音乐的后台音乐播放条,类似手机管家的后台信息监控条

咳咳,音乐是随便找的(雾)
总之,这属于通知的高级用法了,再普通一点,QQ来消息时的通知同样属于通知,所以这篇博客学习一下Python调用Notification进行通知的初级用法--即普通通知。
【零】效果展示




【那个左上角和右边的黑色Python图标是自己找的,并不是自带的,所以如果测试请先自备素材】
同时,按下取消按钮后,将直接删除此通知,这里不再演示
【壹】API与方法介绍
此模块可能不适用于Android8.0以下的设备,毕竟国内的设备大部分都在Android 9 以上了吧,Virgo是很新的模块,所以要紧跟现在的形式,后期如果大家有需要可能会出一个兼容Android8.0以下设备的模块
[1]简单方法(为了方便大家使用,我封装好了两个方法,可以方便地实现通知功能)
from Virgo.android.core_components.NotificationManager import start_notification_jump, VNotificationManager, VNotification, create_channel
start_notification_jump:发送一条通知的函数
参数:
activity, 活动 channel, 渠道对象 channel_id, 渠道ID的字符串 noti_id: int, 通知ID,保证其唯一即可,可以用于取消通知时的查找标志 new_activity_name: str, 点击通知后打开的Activity的名称 small_icon_int: str, 左上角小图标的资源数值,可用self.R.drawable["name"]获取 text: str, 通知内容 title: str, 通知题目 small_icon_name=None, 另一种设置图标方式,需要传图标名称,系统会自动去drawable目录下查找 auto_cancel=None, 是否点击就消失? defaults=None, 附加感官值,可用来设置震动、闪光等,需要对应权限 when=None, 可用于设置通知时间,可不填;如果是立刻即可用int(time.time()) sub_text=None, 副内容(或者叫二级标题?) large_icon_tuple=None, 大图标的参数元组(图标名,activity) vibrate=None, 神奇的列表,可用于设置震动方式,详细看API文档sound=None, 提示声音名 sound_url=None, 提示声音网址 ongoing=None, 是否正在运行 progress_tuple=None, 进度条元组(max,now,if_clear) priority=None, 优先级 custom_view=None, 设置自定义布局,后面高级内容会介绍,略过 heads_view=None, 设置自定义布局,后面高级内容会介绍,略过 big_view=None 设置自定义布局,后面高级内容会介绍,略过
VNotificationManager:通知管理器,里面有相关变量 + 方法
VNotification:通知类
create_channel:创建【渠道】的方法,通知将通过此方法返回的渠道对象进行发送(Android8+后引入的,)
【贰】代码解析
干讲太啰嗦,直接上代码
class NotificationActivity(ControlActivity):
def __init__(self, APP):
super(NotificationActivity, self).__init__("TryNF", APP)
self.call_btn = None
self.cancel_btn = None
self.messages = []
self.channel = create_channel("chat", "用于进行普通的消息",
VNotificationManager.IMPORTANCE_MAX)
def show_noti(self):
now = int(time.time())
start_notification_jump(self, self.channel, "chat", now,
"RequestsTry",
self.R.drawable["python"],
"这是一条测试信息,用于测试Python能不能控制发送notification通知栏提示",
f"Python测试来啦!{now}", large_icon_tuple=("python", self),
priority=VNotification.PRIORITY_MAX, custom_view=)
self.messages.append(now)
def cancel_noti(self):
self.get_notification_manager().cancel(self.messages[-1])
def onCreate(self, savedInstanceState):
self.setContentView("trynf")
self.call_btn = self.findViewById("button_call_notification")
self.cancel_btn = self.findViewById("button_cancel_notification")
self.call_btn.setOnClickListener(
VOnClickListener().register_onClick(
lambda view: self.show_noti()
))
self.cancel_btn.setOnClickListener(
VOnClickListener().register_onClick(
lambda view: self.cancel_noti()
))