基于openfire+smack开发Android即时聊天应用[四]-单人聊天、群聊、发送接收文件等

这篇文章主要介绍如何实现点对点单人聊天、多人的群聊、以及如何给对方发送文件,如何发送图片消息和语音消息等功能。

基于openfire+smack开发Android即时聊天应用[三]-账号信息、添加好友、JID理解等

这一篇文章主要介绍账号的属性及几个重要属性的理解,同时介绍如何添加好友,获取好友列表信息,最后介绍我对JID这个属性字段的几种理解。

基于openfire+smack开发Android即时聊天应用[二]-用户注册、登陆、修改密码、注销等

1. 开发准备

在官网上下载最新的Smack开发包,我下载的是smack4.1.4版本的,导入相应的jar包即可开始开发工作

基于openfire+smack开发Android即时聊天应用[一]—openfire安装部署

Java领域的即时通信解决方案可以考虑基于xmpp协议的openfire+smack+spark来实现,都是开源的。最近一直在研究这个,也做了一个简单的Android即时聊天客户端,支持文本、图片、语音消息。

Demo地址请见此系列文章最后一篇

Android开发问题汇总–持续更新

Android开发中遇到的小问题汇总,会持续更新。

提供网上一个Android开放问题汇总贴:https://github.com/JohnTsaiAndroid/AndroidTips

红米Note调用系统相机拍照后应用崩溃问题分析解决

这几天突然发现红米Note手机只要调用系统相机进行拍照时,我的应用必定会崩溃。这个问题折腾了好久才解决,现在记录下问题跟踪解决的过程和方法。(红米Note手机的系统太坑爹了%>_<%)

####解决办法
请直接从第7条开始看,1~5条为我的问题处理过程,第6条为问题原因分析。

Android基础之TableLayout中TextView文本无法自动换行

最近项目中用到了TableLayout布局,发现该布局下的TextView控件的内容无法达到自动换行的效果,布局代码如下:

Android基础之Activity生命周期

之前一直对Activity的生命周期不是很清楚,感觉很模糊。前两天也看了下任玉刚书里对Activity生命周期的讲解,今天特意写了个程序验证了下Activity的生命周期内各个回调的执行情况,为了避免多段时日又忘了,干脆对这次的理解总结下,俗话说好记性不如烂笔头,没事的时候可以回过头来再看看。

我们先来看一张非常经典的Activity生命周期流程图:

简单实用的Android ORM框架TigerDB

TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构。

该库主要包括如下几个要点:

  1. 根据实体对象自动建表、新增字段(SQLite不支持删除字段列)
  2. 支持注解配置表名、字段名、字段默认值、主键是否自增长以及哪些字段不作为数据表中的映射字段
  3. 直接映射实体对象到SQLite数据库,实现一行代码对SQLite数据库增删改查
  4. 支持在SDCard中新建数据库db
  5. 解决在onCreate,onUpgrade中执行数据库其他操作时出现的异常(java.lang.IllegalStateException: getDatabase called recursively)
  6. 支持原生SQL语句操作数据库

WordPress安装插件提示无法定位WordPress内容目录(wp-content)

在我刚把WordPress环境搭建好后,安装插件的时候提示如下错误信息:

WordPress安装插件提示无法定位WordPress内容目录(wp-content),最后找网上搜索之后,发现下面的方法可行:

在WordPress配置文件 wp-config.php最后加上如下代码:

1
2
3
//-----无法定位WordPress Content目录(wp-content)  解决方案---------begin  
if(is_admin()) {add_filter('filesystem_method', create_function('$a', 'return "direct";' ));define( 'FS_CHMOD_DIR', 0751 );}
//-----无法定位WordPress Content目录(wp-content) 解决方案---------end

原创文章,转载请出处注明。

下面是我的个人公众号,欢迎关注交流

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×