手机上基于位置的社交应用越来越多了, 以找人为目的以不能满足需求,(找到人不说话(不能说话),倒还不如不找。) 所有,即使通讯也在日益火爆着。
Xmpp 不多说,百度谷歌一大把。 (密聊好像就是用这个。我不是很确定。)
服务器端采用openfire
客户端 用smack
下面开始,只做客户端,
首先创建连接,就和我们创建DBHelper 连接类差不多。
public static final String PASSWORD = "123456"; // 密码
public static final String VERSIONNAME = "android1.0"; // 版本号
static Connection xConnection;
/**
* 创建连接
*
* @param userid
* @param password
* @throws XMPPException
*/
public static Connection xmppConn(Context context) throws XMPPException
{
// xConnection.isConnected() == false
if (xConnection == null)
{
final ConnectionConfiguration connectionConfig = new ConnectionConfiguration("服务器地址", 5222);
connectionConfig.setCompressionEnabled(false);
connectionConfig.setSASLAuthenticationEnabled(false);
XMPPConnection.DEBUG_ENABLED = true;
xConnection = new XMPPConnection(connectionConfig);
}
return xConnection;
}
好了,这样算是创建好连接了, 下一步就是登录。
final Connection connection = MyXMPPConnection.xmppConn(getApplicationContext());
// 得到连接对象
final boolean isConn = connection.isConnected(); //是否连接成功 成功返回true,失败false
if (isConn == false) //
{
connection.connect(); // 这里才是连接
// 这里首先去登录,如果登录失败,然后再去注册一个,接着登录
connection.login("用户名", MyXMPPConnection.PASSWORD, MyXMPPConnection.VERSIONNAME); // 登录 参数说明(用户名,密码,版本号)
if (connection.isAuthenticated() == false)
{
connection.getAccountManager().createAccount("用户名", MyXMPPConnection.PASSWORD); // 注册
connection.login("用户名", MyXMPPConnection.PASSWORD, MyXMPPConnection.VERSIONNAME); // 登录
}
用户登录成功,接下来创建聊天室 。
ChatManager chatManager = conncetion.getChatManager();
String hostName = connection.getServiceName();
Chat newChat = chatManager.createChat(UserId + "@" + hostname + "/" + MyXMPPConnection.VERSIONNAME, msgListender); // 参数说明,聊天对象userid,消息监听器
newChat.sendMessage("我草,你日吗?");
这样就可以发送一条消息了。
只发不收不地道,下来添加接收消息监听器 :
其实就是上面创建聊天室的第二个参数,只需要写完它就OK了。
class msgListener implements MessageListener
{
public void processMessage(Chat arg0, org.jivesoftware.smack.packet.Message arg1)
{
// TODO Auto-generated method stub
if (arg1 instanceof org.jivesoftware.smack.packet.Message)
{
org.jivesoftware.smack.packet.Message messageIQ= (org.jivesoftware.smack.packet.Message)arg1;
if (((org.jivesoftware.smack.packet.Message) arg1).getType()==Type.chat)
{
//假如这个监听放在对方那边,不出意外这里body体里面就会是 --- 我草,你日吗 ?
String msgContext = messageIQ.getBody(); // 消息体
String msgFromAll = messageIQ.getFrom(); // 发送人
String msgToAll = messageIQ.getTo(); // 接收人
}
}
}
}
写完这些就可以实现基本的文字聊天,当然发表情也是可以的。
也是刚开始学这一块。
说的不对的地方别望大神别拍我。
并真心希望大神指导。
小弟谢过了。