首页 文章 精选 留言 我的

精选列表

搜索[SpringBoot4],共10000篇文章
优秀的个人博客,低调大师

Android Smack_4_2_0.jar 使用

Android Studio依赖或者官网下载 // XMPP通信 compile 'org.igniterealtime.smack:smack-im:4.2.0' compile 'org.igniterealtime.smack:smack-tcp:4.2.0' compile "org.igniterealtime.smack:smack-android-extensions:4.2.0" compile "org.igniterealtime.smack:smack-android:4.2.0" 服务器连接 /** * 连接服务器 * @return 连接服务器对象 */ public void connect() { try { XMPPTCPConnectionConfiguration configuration = XMPPTCPConnectionConfiguration.builder().setXmppDomain(XMPP_DOMAIN) // 设置域名 .setHostAddress(InetAddress.getByName(XMPP_HOST)) // 设置主机 .setPort(5222) // 设置端口 .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) // 禁用SSL连接 .setCompressionEnabled(false) // 禁用SSL连接 //.setSendPresence(false) // 设置为离线状态 .setDebuggerEnabled(true) // 开启调试模式 .build(); // 设置需要经过同意才可以添加好友 Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual); AbstractXMPPConnection connection = new XMPPTCPConnection(configuration); connection.connect();// 连接, 可设置监听 connection.addConnectionListener(new XMPPConnectionListener()); this.mConnection = connection; } catch (UnknownHostException e) { e.printStackTrace(); } catch (XmppStringprepException e) { e.printStackTrace(); } catch (InterruptedException | IOException | XMPPException | SmackException e) { e.printStackTrace(); } } 其中XMPPConnectionListener类实际上是实现ConnectionListener接口。 /** * 服务器连接监听 * Created by mazaiting on 2017/9/19. */ public class XMPPConnectionListener implements ConnectionListener { @Override public void connected(XMPPConnection connection) {} @Override public void authenticated(XMPPConnection connection, boolean resumed) {} @Override public void connectionClosed() {} @Override public void connectionClosedOnError(Exception e) {} @Override public void reconnectionSuccessful() {} @Override public void reconnectingIn(int seconds) {} @Override public void reconnectionFailed(Exception e) {} } 关闭连接则使用 /** * 关闭连接 */ public void disConnect() { checkConnect(); if (mConnection.isConnected()) mConnection.disconnect(); mConnection = null; } 登录 /** * 登录服务器 * @param userName 用户名 * @param passWord 密码 * @return 是否登录成功。 true 成功; false 失败。 */ public boolean login(String userName, String passWord) { checkConnect(); // 检查是否连接 try { if (!mConnection.isAuthenticated()){ // 判断是否登录 mConnection.login(userName, passWord); addListener(); // 设置一些监听 return true; } return false; } catch (XMPPException | SmackException | InterruptedException | IOException e) { Logger.e("登录出错"); e.printStackTrace(); return false; } } 注册 在注册时非安全链接,无法注册的情况,采取smack.jar内部代码,越过非安全链接的判断。 /** * 创建用户 * @param userName 用户名 * @param passWord 密码 * @param attributes 属性 */ public void createAccount(String userName, String passWord, Map<String, String> attributes) throws SmackException.NotConnectedException, InterruptedException, XMPPException.XMPPErrorException, SmackException.NoResponseException { if (StringUtils.isNullOrEmpty(userName)) { throw new IllegalArgumentException("Username must not be null"); } if (StringUtils.isNullOrEmpty(passWord)) { throw new IllegalArgumentException("Password must not be null"); } attributes.put("username", userName); // 设置用户名 attributes.put("password", passWord); // 设置密码 Registration reg = new Registration(attributes); reg.setType(IQ.Type.set); // 设置类型 reg.setTo(mConnection.getXMPPServiceDomain());// 设置发送地址 createStanzaCollectorAndSend(reg).nextResultOrThrow(); } private StanzaCollector createStanzaCollectorAndSend(IQ req) throws SmackException.NotConnectedException, InterruptedException { StanzaCollector collector = mConnection.createStanzaCollectorAndSend(new StanzaIdFilter(req.getStanzaId()), req); return collector; } 获取当前用户 /** * 获取当前用户 */ public EntityFullJid getCurrentUser() { return mConnection.getUser(); } 获取好友列表 /*** * 获取好友列表 */ public void getFriendList() { checkConnect(); Roster roster = Roster.getInstanceFor(mConnection); Set<RosterEntry> entries = roster.getEntries(); Logger.e(entries.size() + ""); for (RosterEntry entry : entries) { Logger.e(entry.toString()); } } 添加角色监听 /** * 添加关于角色的监听 */ private void addRosterListener() { // 获取当前角色 Roster roster = Roster.getInstanceFor(mConnection); // 接收到好友信息变化 mReceiverFriendStatusListener = new ReceiverFriendStatusListener(); roster.addRosterListener(mReceiverFriendStatusListener); // 接收到添加好友信息 mAddFriendMessageListener = new AddFriendMessageListener(); roster.addSubscribeListener(mAddFriendMessageListener); } /** * 获取到其他人添加自己的信息监听 * Created by mazaiting on 2017/9/19. */ public class AddFriendMessageListener implements SubscribeListener { @Override public SubscribeAnswer processSubscribe(Jid from, Presence subscribeRequest) { // TODO添加好友请求 Logger.e("processSubscribe"); return null; } } /** * 可以接收到其他人是否删除了自己,好友在线状态改变 * Created by mazaiting on 2017/9/19. */ public class ReceiverFriendStatusListener implements RosterListener { @Override public void entriesAdded(Collection<Jid> addresses) { Logger.e("entriesAdded"); } @Override public void entriesUpdated(Collection<Jid> addresses) { Logger.e("entriesUpdated"); } @Override public void entriesDeleted(Collection<Jid> addresses) { Logger.e("entriesDeleted"); } @Override public void presenceChanged(Presence presence) { Logger.e("presenceChanged"); } } 设置当前用户状态 /** * 设置在线、离线等状态 */ public void setOnLine(Presence.Type type) { try { checkConnect(); if (isOnLine != type) { Presence presence = new Presence(type); //presence.setStatus("Gone fishing");// 设置状态消息 mConnection.sendStanza(presence); isOnLine = type; } } catch (Exception e) { e.printStackTrace(); } }

优秀的个人博客,低调大师

收藏了4年的Android 源码分享

Android超过2个G的源代码集合~~几乎涵盖了所有功能效果的实现,一应俱全~~应有尽有~~ 360云盘地址:Android 各类源码集合汇总(提取码:f930) 另外,附上Github上及自己整理的一些代码集合~~ Android手势处理集合框架 源码 Android 一个简单的缓存框架 源码 Android 一个流畅的PDF阅读器 源码 Android 利用精简Zxing实现条形码/二维码 扫描Demo Android 水波特效(录音功能) 源码 SlidMenu 侧滑菜单、ViewPager滑动切换 等常用Android框架 源码 Android 日间/夜间模式 主题切换 Android 二维码扫描 源码 Android 酷炫倒计时 源码 Android POP3邮箱源码 Android 自定义下载按钮从点击到下载完成动画特效 源码 Android 自定义下拉列表 源码 Android 自定义带有删除功能的EditText源码 Android 自定义时间(日期)选择器 源码 Android 仿微信联系人的字母索引ListView Android 仿QQ消息列表(ListView)滑动删除效果源码 Android 高仿今日头条客户端TopNews 源码 Android 仿QuickNews新闻客户端源码 Android 高仿网易云音乐客户端的Home页面切换Tabhost 源码 Android 仿iOS实现Activity滑动关闭/返回 源码 Android 高仿建行手机客户端圆形旋转菜单 源码 Android 仿QQ侧滑菜单,实现左右侧滑 源码 Android 仿QQ联系人分组滑动到顶部固定住直到下一个分组到达顶端 源码 Android 仿iOS的时间选择器Picker控件,有时间选择和选项选择,并支持一二三级联动效果 源码 Android 高仿QQ空间侧滑Menu效果且实现插件式换肤功能 源码 Android 仿支付宝 密码输入框 源码 Android 高仿58同城 表格展开效果 源码 Android 高仿IOS的各种弹窗效果 源码 Android 高仿微信(拍小视频) 下拉出现眼睛的动画效果 源码 Android 仿新浪微博个人中心的下拉回弹ScrollView源码 Android 仿微信、云播雷达扫描动画效果源码 Android 高仿QQ侧边栏效果。实现侧边栏的缩小的放大 Android 仿QQ空间说说 评论/回复 效果源码 Android 仿IOS日期控件效果源码 Android 实现搜索框的自动补全功能 源码 Android 实现联动ViewPager。两个ViewPage实现同步滑动~ 源码 Android 实现带动画效果的CheckBox 源码 Android 实现可以拖动排序子控件的自定义布局 源码 Android 实现带有“粘性”功能的viewpager 源码 Android 实现阶梯式展开菜单特效 源码 Android 实现多线程断点续传下载 源码 Android 自定义进度条(多种效果) 源码 Android 实现图片/背景(半部分&全部)圆角 源码 Android 实现画布涂鸦功能 源码 Android ImageView实现照片墙效果(卡片式滑出效果) 源码 Android 照片墙效果(实现照片叠加和滑出效果) 源码 Android 图片照片墙的加载和滑动特效(实现图片叠加和滑出效果) 源码 Android 相册随机展示相片特效 源码 Android GridView图片拖拽效果 源码 Android 最牛的三维侧边栏效果(9GAG) 源码 Android 卡片式滑动切换的ListView 源码 Android 各种图表(折线图 柱状图)效果实现集合 源码

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册