基本信息
源码名称:Android IM聊天
源码大小:1.42M
文件格式:.zip
开发语言:Java
更新时间:2016-05-07
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
AndroidIM聊天
AndroidIM聊天
package com.meiyou.chatroom;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class ChatActivity extends Activity {
private static final int PORT = 4444; //端口号
private EditText et_input; //输入消息
private TextView tv_content; //显示消息
private BufferedReader in; //输入流
private PrintWriter out; //输出流
private Handler handler;
private Button bt_send;
private Socket s;
private static final int APPEND_MSG = 1;// Handler 状态常量: 更新收到的消息
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
// Handler 接收线程消息,并更新UI
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch(msg.what) {
case APPEND_MSG:
//新消息显示在最上边
// tv_content.setText(msg.obj "\n" tv_content.getText().toString());
tv_content.append(msg.obj "\n");
break;
default:
break;
}
}
};
setViews();
connectServer(); //连接服务器
setListener();
}
private void connectServer() {
new Thread(){
public void run() {
try {
String ip = getIntent().getStringExtra("ip");
String name = getIntent().getStringExtra("name");
s = new Socket(ip, PORT);
in = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));
out = new PrintWriter(new OutputStreamWriter(s.getOutputStream(), "UTF-8"));
//首先发送自己的昵称
out.println(name);
out.flush();
//然后循环接收聊天室的内容
String line;
while((line = in.readLine()) != null) {
//发消息
Message.obtain(handler, APPEND_MSG, line).sendToTarget();
}
} catch (Exception e) {
Log.e("chat", "聊天时异常..");
}
};
}.start();
}
private void setListener() {
bt_send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final String msg = et_input.getText().toString(); //获取输入的消息
et_input.setText(""); //发送完毕之后,清空输入框
//新建一个线程用于发送消息,因为网络可能会不给力,不管给不给力,处理网络都应该新建一个线程
new Thread(){
public void run() {
out.println(msg);
out.flush();
};
}.start();
}
});
}
private void setViews() {
bt_send = (Button) findViewById(R.id.bt_send);
et_input = (EditText) findViewById(R.id.et_input);
tv_content = (TextView) findViewById(R.id.tv_content);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
// Activity 结束的时候,断开 Socket 连接
if(!s.isClosed()){
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}