基本信息
源码名称:Android IM聊天
源码大小:1.42M
文件格式:.zip
开发语言:Java
更新时间:2016-05-07
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍
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();
}
}
}
}