Android开发——Notification 通知

        最近在看消息推送,从服务端向客户端推送消息。虽然现在有C2DM,AndroidPN,还有第三方的推送平台,但是使用别人的总不如自己来搭建平台。在研究啦,希望有研究过的前辈可以指点下。

       

        消息推送必然要用到Notification。现总结如下:

 

        要实现手机状态栏的通知,必然要使用两个类:NotificationManager和Notification。

        NotificationManager:状态栏通知的管理类,负责发送、清楚通知等,它是一个系统Service,必须通过getSystemService()方法来获取。 

 

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

        NotificationManager常用方法:

 

        public void cancelAll() 移除所有通知(只是针对当前Context下的Notification)

        public  void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的所有Notification)

        public  void notify(String tag ,int id, Notification notification) 将通知加入状态栏,标签为tag,标记为id

        public  void notify(int id, Notification notification) 将通知加入状态栏,标记为id

 

 

        Notification:具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。

 

// 创建一个Notification  
Notification notification = new Notification();  

        Notification的一些参数:

 

       

        DEFAULT_ALL    使用所有默认值,比如声音,震动,闪屏等等

        DEFAULT_LIGHTS 使用默认闪光提示

        DEFAULT_SOUNDS 使用默认提示声音

        DEFAULT_VIBRATE 使用默认手机震动

【说明】:加入手机震动,一定要在manifest.xml中加入权限:

<uses-permission android:name="android.permission.VIBRATE" />

 

 

 // 设置显示在手机最上边的状态栏的图标  
 notification.icon = R.drawable.notification;  
 // 当notification被放到状态栏上的时候,会有一个提示内容  
 notification.tickerText = "注意了,我被扔到状态栏了"; 
 // 添加声音提示  
 notification.defaults=Notification.DEFAULT_SOUND;
// audioStreamType的值必须AudioManager中的值,代表着响铃的模式
// audioStreamType 当声音响起时,所用的音频流的类型  
 notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;  
 //定义自己的声音提示
 notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");//使用sd卡的铃声
   //使用系统自带的铃声
 notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
 //声音循环播放,知道用户响应为止
 notification.flags|=notification.FLAG_INSISTENT;
 //使用默认的闪光
 notification.defaults|=Notification.DEFAULT_LIGHTS; 
 //使用默认的震动
 notification.defaults|=Notification.DEFAULT_VIBRATE; 

        以上是通知显示在状态栏上的一些属性设置内容。当用户下拉状态栏,并且点击通知后,我们要显示通知的具体内容。

Intent intent = new Intent(this, NotificationDetailActivity.class);  
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG                             _ONE_SHOT);  
 // 下拉状态栏,出现消息的提示内容, 
notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent); 

 

 

        当点击通知提示之后,跳转到通知具体内容的activity:NotificationDetailActivity。

        notification.setLatestEventInfo的参数如下:

 

        第二个参数:下拉状态栏时显示的消息标题

        第三个参数:下拉状态栏时显示的消息内容

        第四个参数:点击该通知时执行页面跳转      

        

// 把Notification传递给NotificationManager  
notificationManager.notify(1, notification);

        参数设置完成后,NotificationManager将通知加入状态栏。NotificationManager里的notify(id,notification)中的id是用来唯一标识我们当前的这个notification的标识符通过cancel方法删除通知时,传递的就是这个值。

 

    //删除通知 
    private void clearNotification(){
        // 启动后删除之前我们定义的通知  
     NotificationManager notificationManager = (NotificationManager) this
                .getSystemService(NOTIFICATION_SERVICE);  
        notificationManager.cancel(1); 
    }

 

### DeepSeek 企业级本地知识库部署配置 #### 部署前准备 为了成功部署DeepSeek作为企业级本地知识库解决方案,需先确认硬件条件满足最低需求并安装必要的软件环境。推荐选用具备良好性能的服务器设备来保障系统的稳定运行[^2]。 #### Docker环境搭建 采用Docker容器化技术可以简化部署过程中的依赖管理问题。按照官方文档指示,在目标机器上安装最新版本的Docker引擎以及Compose工具。这一步骤对于确保后续操作顺利至关重要[^1]。 #### 获取镜像与初始化设置 访问指定链接下载预构建好的DeepSeek镜像文件,并依照指引完成初次启动时的基础参数设定工作,比如端口映射、卷挂载路径等选项的选择。这些初始配置决定了后期使用体验的好坏程度[^3]。 ```bash docker pull deepseek:latest docker run -d --name=deepseek \ -p 8080:8080 \ -v /path/to/data:/data \ deepseek ``` #### 构建个性化知识库 进入已部署应用界面后,可通过图形化向导轻松导入各类结构化或非结构化的数据源至内部存储系统内;亦支持手动上传特定格式(如TXT, PDF)的企业资料文档以扩充现有内容体系规模。 #### API集成开发指导 针对希望进一步定制功能模块或者对接第三方业务逻辑场景下的用户群体而言,《Deepseek R1模型本地部署API实战指南》提供了详尽的技术说明文档,帮助工程师们快速掌握RESTful风格的服务接口调用方法论及其应用场景实例分析。 #### 性能优化建议 随着索引量的增长可能会遇到查询效率下降的情况发生,此时可以通过调整Elasticsearch集群配置项或是引入缓存机制等方式来进行针对性改进措施实施,从而维持较高的响应速度水平不变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值