直接上代码,看注释应该很好理解,只是提供一种思路,不对的请大神指正:
public class PresenceService extends Service {private _ConnectionControl cc = _ConnectionControl.getCC();//单例模式  保存了当前的链接@Overridepublic IBinder onBind(Intent arg0) {return null;}@Overridepublic void onCreate() {super.onCreate();}@Overridepublic void onDestroy() {super.onDestroy();Log.i("onDestroy", "PresenceService -- onDestroy");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.i("Presence", "PresenceService-----" + (cc.connection == null));if (cc.connection != null && cc.connection.isConnected()&& cc.connection.isAuthenticated()) {//已经认证的情况下,才能正确收到Presence包(也就是登陆)final String loginuser = cc.connection.getUser().substring(0,cc.connection.getUser().lastIndexOf("@"));//理解为条件过滤器   过滤出Presence包PacketFilter filter = new AndFilter(new PacketTypeFilter(Presence.class));PacketListener listener = new PacketListener() {@Overridepublic void processPacket(Packet packet) {Log.i("Presence", "PresenceService------" + packet.toXML());//看API可知道   Presence是Packet的子类if (packet instanceof Presence) {Log.i("Presence", packet.toXML());Presence presence = (Presence) packet;//Presence还有很多方法,可查看API String from = presence.getFrom();//发送方String to = presence.getTo();//接收方//Presence.Type有7中状态if (presence.getType().equals(Presence.Type.subscribe)) {//好友申请} else if (presence.getType().equals(Presence.Type.subscribed)) {//同意添加好友} else if (presence.getType().equals(Presence.Type.unsubscribe)) {//拒绝添加好友  和  删除好友} else if (presence.getType().equals(Presence.Type.unsubscribed)) {//这个我没用到} else if (presence.getType().equals(Presence.Type.unavailable)) {//好友下线   要更新好友列表,可以在这收到包后,发广播到指定页面   更新列表} else {//好友上线}}}};cc.connection.addPacketListener(listener, filter);}return super.onStartCommand(intent, flags, startId);}}

更多相关文章

  1. Android集成极光后部分机型收到通知
  2. Android(安卓)Preferences的使用
  3. Android(安卓)OpenGL ES和OpenGL一起学(二)------理解Viewport(视口
  4. 对Android(安卓)opengl ES世界坐标系和纹理坐标系的理解
  5. Android中关于数据库SQLite的insert插入操作的理解
  6. [置顶] android 深入理解AnsyncTask
  7. android,java优秀博客链接汇总分享。。。不定期更新
  8. 深入理解ActivityManagerService,你知道的不知道的全在这里!
  9. 关于android下audioflinger+alsa+a2dp+pcm+bluez+sbc编码理解

随机推荐

  1. Java层Binder使用(ServiceManager)
  2. Android(安卓)Widget开发模板[转]
  3. Android(安卓)NestedScrolling嵌套滑动机
  4. Android安装服务installd源码分析
  5. android渐隐动画,通过xml控制按钮的变化。
  6. Android(安卓)studio(Windows)快捷键
  7. Android中webview加载网页无法点击或滚动
  8. border-radius在Android下的几个BUG
  9. linux下nessus的安装和使用
  10. stagefright 架构分析(六) 创建一个 Soft