androidpn的一次亲密接触(二)

简单看了一下源码的实现,这里贴一点个人觉得比叫重要的代码。

 

XmppManager.java

  • 构造方法:
Java代码  收藏代码
  1. public XmppManager(NotificationService notificationService)  

 

 在这里主要是从共享引用中取得xmpp服务器地址和端口号、用户名和密码。

 

  • 内部类
Java代码  收藏代码
  1. private class ConnectTask implements Runnable  

 

 这个内部类主要实现的是连接服务器的操作。通过connection.connect();实现连接服务器。通过如下语句实现发送连接消息。

 

Java代码  收藏代码
  1. ProviderManager.getInstance().addIQProvider("notification",  
  2.                             "androidpn:iq:notification",  
  3.                             new NotificationIQProvider());  

 最后通过xmppManager.runTask();执行任务队列中的任务。

 

  • 内部类
Java代码  收藏代码
  1. private class RegisterTask implements Runnable  
这个内部类主要实现的是在服务器上注册用户的操作。如果没有注册,随即生成用户名和密码注册到服务器上。同样通过connection.sendPacket(registration);发送消息实现注册功能。
  • 内部类
Java代码  收藏代码
  1. private class LoginTask implements Runnable  
这个内部类主要实现的是用户的登录操作。通过注册到服务器上的用户名和密码登录到服务器上。最后通过connection.addPacketListener(packetListener, packetFilter);实现消息的监听。最后一样通过xmppManager.runTask();在消息队列中执行任务(执行这个线程)。这个类就是实现服务器推动的主要类。
上述为客户端的实现。总的来说客户端仍然是通过xmpp协议实现消息的传输。值得注意的是在NotificationService这个类中(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);方法取得了系统的消息的相关服务。主要为类是取得设备的ID,但我在源码中没有看到使用这个设备ID的地方。很是不解,看来还是需要继续深入的研究。
哈哈。到现在为止,总共完成了对openfire开发环境、openfire插件的制作、smack和openfire通信、androidpn的部署方式以及androidpn的使用方法的研究调研工作。对这些方面都是停留在皮毛,希望以后可以通过实际应用可以学到更加深层次的东西。对了,听一位业内人士说,xmpp是很复杂的,希望以后我能更加了解一

转载于:https://www.cnblogs.com/zmissm/archive/2013/05/10/3071552.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指针知识学习[总]

printf("p %p.\n", p); // %p打印指针和%x打印指针,打印出的值是一样的 printf("p 0x%x.\n", p); 一、指针是什么? 1、指针变量和普通变量的区别 指针的实质就是个变量,它跟普通变量没有任何本质区别。指针完整的名字…

php excel 分页,excel分页线怎么增加

增加excel分页线的方法:首先依次点击“工作簿视图-分页预览”;然后点击要在其下方插入分页符的这一行;最后在“页面布局”选项卡上的“页面设置”组中,单击“分隔符”即可。本文操作环境:Windows7系统,Micr…

C# 中的委托和事件

PDF 浏览:http://www.tracefact.net/Document/Delegates-and-Events-in-CSharp.pdf文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS2003下会报…

php7 有ext skel吗,PHP扩展开发系列02 - 老司机起步之函数

上一篇扩展开发引导文章中。创建了编写扩展的三个基本文件。或许你会有个疑问PHP没有类似的自动生成项目框架的工具吗? 当然有。这篇文章就开始介绍使用 "php-ext-cli" 工具来生成扩展项目文件注意这里的 "php-ext-cli" 本身没有这玩意&#xf…

(转载)说说char

char一直都在使用并且大量的使用,但是,大部分都是在单一平台上,那样没有太多的问题,在windows上大量直接使用wchar_t来解决中文的问题。并且在使用跨平台时也大多直接使用了Qt的QString来节省了很多的麻烦,但是现在项目…

WPF 正確理解ContentPresenter

2019独角兽企业重金招聘Python工程师标准>>> 我們先由下圖來看類層次,可知ContentControl繼承Control,ContentPresenter繼承FrameworkElement(Control也繼承FrameworkElement); 同樣的,ItemsControl繼承Control,ItemsPresenter繼承FrameworkElement. 在Control類並…

java动态交叉表,SqlServer如何生成动态交叉表查询

为了说明问题,我们用SqlServer自带的事例数据库(Northwind)来进行验证,所有的例子请放到Northwind中运行,我可能会省略Use语句,所引用的表,都是Northwind中的,下面我就不再说明了这里指的交叉表&#xff0c…

Canvas Clock

这两天在看html5的canvas,实现了上面那个东西 需要注意的地方: 1.canvas的sava()和restore()理解和使用 2.canvas的translate scale rotate ..的使用,每个变化都应该清楚圆心和角度..看:http://blog.sina.com.cn/s/blog_8fab526c01015tqs.htm…

CentOS 6.3 下用ntfs-3g挂载Windows NTFS分区

2019独角兽企业重金招聘Python工程师标准>>> 默认情况下,CentOS 6.3不支持Widows NTFS硬盘分区读写,要想把NTFS格式的磁盘挂载到CentOS 6.3下面需要安装第三方的插件ntfs-3g,这里我们采用编译安装插件。 1、安装编译器&#xff0c…

C++的const修饰

2019独角兽企业重金招聘Python工程师标准>>> C的const修饰 ‍const的两个用途‍ (1)可以定义 const 常量 (2)const 可以修饰函数的参数、返回值. const的好处 (1)便于进行类型检查,…

心率变异性 matlab,心率变异性好的功率谱分析方面的问题

本帖最后由 天路 于 2018-2-25 21:16 编辑本人正在学习心率变异性方面的内容,但是按照文献上的方法做出来的结果并不是很理想,文献上说的是心率变异性的频率的范围是0.4以内,但是我做的功率谱上显示频率分布在整个频域内,试了很多…

决策树php,决策树模型组合之随机森林与GBDT

前言:决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等。但是同时,单决策树又有一些不好的地方,比如说容易over-fitti…

关于uboot的简介——uboot的目录结构

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 不同版本的uboot,或者同一版本不同人员移植的uboot,目录结构和文件内容都会有所不同,也就是说,可以根据需要去添加、删除或者更改目录结构。在以三星的…

Photoshop绘制植物大战僵尸中的食人花

本人意见:我打算使用本文中的食人花形象作为我的一次讲课中的主要参考。我想说明的是,通过FLASH和PS都能够轻松地绘制出如本文所描述的食人花卡通效果。独立游戏开发者如果安排好时间,完全可以通过1-2个月掌握FLASH和PS绘制(想精通…

uboot源码——uboot启动内核过程总结

总结的思维导图,其下载地址:Uboot启动.mmap_免费高速下载|百度网盘-分享无限制 第一阶段:汇编阶段,即start.S文件的工作。 第二阶段:C代码阶段,即start_armboot函数的工作。 值得一提的是,star…

虚拟化运行[OpenStack] VMWare产品介绍

最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--虚拟化运行 世界上最早研制虚拟化软件的厂商之一。目前是是寰球桌面到数据中心虚拟化解决方案的引导厂商。中文名“威睿”,纽约证券交易所代码:VMW。总部设在加利福尼亚州的帕…

内核源码——kernel启动过程的思维导图

参考博客 内核源码——汇编阶段的head.S文件_天糊土的博客-CSDN博客___head汇编 内核源码——C语言阶段的start_kernel函数_天糊土的博客-CSDN博客_start_kernel 思维导图 kernel启动过程的思维导图下载地址:内核启动过程.mmap

oracle的等保,3.Oracle 检查(部分)

这是3级等保中oracle的检查方法,剩下的检查项可通过询问的方式进行检查。1.身份鉴别a.1 查看数据库用户select username,account_status from dba_users;b.1 检查用户的profileselect username,account_status,profile from dba_users;b.2 检查密码策略select profi…

Linux字符设备驱动剖析

以下内容整理于Linux字符设备驱动剖析,如有侵权请告知删除 。 一、应用层的程序 应用程序一般都是open打开设备文件,read、write、ioctl设备文件,最后close设备文件退出。 int main(int argc ,char *argv[]) { unsigned char val[1] 1; …

php处理form多文件上传,ajax利用FormData、FileReader实现多文件上传php获取

前台代码(注意,不需要用到form标签):a. html部分:b. js部分:c. 完整代码:function loadDoc(file,data,asynctrue){if(window.XMLHttpRequest){ // code for IE7, Firefox, Chrome, Opera, Safarixmlhttpnew XMLHttpReq…