package com.xmpp.client;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ChatManagerListener;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smackx.filetransfer.FileTransfer;
import org.jivesoftware.smackx.filetransfer.FileTransfer.Status;
import org.jivesoftware.smackx.filetransfer.FileTransferListener;
import org.jivesoftware.smackx.filetransfer.FileTransferManager;
import org.jivesoftware.smackx.filetransfer.FileTransferRequest;
import org.jivesoftware.smackx.filetransfer.IncomingFileTransfer;
import org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer;
import com.xmpp.client.util.TimeRender;
import com.xmpp.client.util.XmppTool;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
public class FormClient extends Activity {
private MyAdapter adapter;
private List<Msg> listMsg = new ArrayList<Msg>();
private String pUSERID;
private EditText msgText;
private ProgressBar pb;
public class Msg {
String userid;
String msg;
String date;
String from;
public Msg(String userid, String msg, String date, String from) {
this.userid = userid;
this.msg = msg;
this.date = date;
this.from = from;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.formclient);
this.pUSERID = getIntent().getStringExtra("USERID");
ListView listview = (ListView) findViewById(R.id.formclient_listview);
listview.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
this.adapter = new MyAdapter(this);
listview.setAdapter(adapter);
this.msgText = (EditText) findViewById(R.id.formclient_text);
this.pb = (ProgressBar) findViewById(R.id.formclient_pb);
//message listener
ChatManager cm = XmppTool.getConnection().getChatManager();
final Chat newchat = cm.createChat("test2@sam", null);
cm.addChatListener(new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean able) {
chat.addMessageListener(new MessageListener() {
@Override
public void processMessage(Chat chat2, Message message) {
//message from user [test2@sam]
if(message.getFrom().contains("test2@sam")){
String[] args = new String[] { "test2", message.getBody(), TimeRender.getDate(), "IN" };
android.os.Message msg = handler.obtainMessage();
msg.what = 1;
msg.obj = args;
msg.sendToTarget();
}else{
// orther user / group / admin of the openfire
// do work...
}
}
});
}
});
//send file
Button btattach = (Button) findViewById(R.id.formclient_btattach);
btattach.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(FormClient.this, FormFiles.class);
startActivityForResult(intent, 2);
}
});
//send message
Button btsend = (Button) findViewById(R.id.formclient_btsend);
btsend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String msg = msgText.getText().toString();
if(msg.length() > 0){
listMsg.add(new Msg(pUSERID, msg, TimeRender.getDate(), "OUT"));
adapter.notifyDataSetChanged();
try {
newchat.sendMessage(msg);
} catch (XMPPException e) {
e.printStackTrace();
}
}
msgText.setText("");
}
});
//receive file
FileTransferManager fileTransferManager = new FileTransferManager(XmppTool.getConnection());
fileTransferManager.addFileTransferListener(new RecFileTransferListener());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==2 && resultCode==2 && data!=null){
String filepath = data.getStringExtra("filepath");
if(filepath.length() > 0){
sendFile(filepath);
}
}
}
private void sendFile(String filepath) {
// ServiceDiscoveryManager sdm = new ServiceDiscoveryManager(connection);
final FileTransferManager fileTransferManager = new FileTransferManager(XmppTool.getConnection());
final OutgoingFileTransfer fileTransfer = fileTransferManager.createOutgoingFileTransfer("test2@sam/Spark 2.6.3");
final File file = new File(filepath);
try {
fileTransfer.sendFile(file, "Sending");
} catch (Exception e) {
e.printStackTrace();
}
new Thread(new Runnable() {
@Override
public void run() {
try{
while (true) {
Thread.sleep(500L);
Status status = fileTransfer.getStatus();
if ((status == FileTransfer.Status.error)
|| (status == FileTransfer.Status.complete)
|| (status == FileTransfer.Status.cancelled)
|| (status == FileTransfer.Status.refused)) {
handler.sendEmptyMessage(4);
break;
}else if(status == FileTransfer.Status.negotiating_transfer){
//..
}else if(status == FileTransfer.Status.negotiated){
//..
}else if(status == FileTransfer.Status.initial){
//..
}else if(status == FileTransfer.Status.negotiating_stream){
//..
}else if(status == FileTransfer.Status.in_progress){
handler.sendEmptyMessage(2);
long p = fileTransfer.getBytesSent() * 100L / fileTransfer.getFileSize();
android.os.Message message = handler.obtainMessage();
message.arg1 = Math.round((float) p);
message.what = 3;
message.sendToTarget();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private FileTransferRequest request;
private File file;
class RecFileTransferListener implements FileTransferListener {
@Override
public void fileTransferRequest(FileTransferRequest prequest) {
System.out.println("The file received from: " + prequest.getRequestor());
file = new File("mnt/sdcard/" + prequest.getFileName());
request = prequest;
handler.sendEmptyMessage(5);
}
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
String[] args = (String[]) msg.obj;
listMsg.add(new Msg(args[0], args[1], args[2], args[3]));
adapter.notifyDataSetChanged();
break;
case 2:
if(pb.getVisibility()==View.GONE){
pb.setMax(100);
pb.setProgress(0);
pb.setVisibility(View.VISIBLE);
}
break;
case 3:
pb.setProgress(msg.arg1);
break;
case 4:
pb.setVisibility(View.GONE);
break;
case 5:
final IncomingFileTransfer infiletransfer = request.accept();
AlertDialog.Builder builder = new AlertDialog.Builder(FormClient.this);
builder.setTitle("receive file")
.setCancelable(false)
.setPositiveButton("Receive",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
try {
infiletransfer.recieveFile(file);
} catch (XMPPException e) {
e.printStackTrace();
}
handler.sendEmptyMessage(2);
Timer timer = new Timer();
TimerTask updateProgessBar = new TimerTask() {
public void run() {
if ((infiletransfer.getAmountWritten() >= request.getFi
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android应用源码之AdXmpp(Openfire+asmack+spark)-IT计算机-毕业设计.zip (73个子文件)
Android应用源码之AdXmpp(Openfire+asmack+spark)
AdXmpp
bin
classes.dex 1013KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
folder.png 4KB
fileback.png 3KB
p12.png 11KB
filetype.png 3KB
icon.png 4KB
drawable
incoming.9.png 2KB
im.png 5KB
outgoing.9.png 2KB
drawable-mdpi
icon.png 2KB
classes
com
xmpp
client
FormClient$Msg.class 737B
R$layout.class 577B
FormLogin$2.class 2KB
FileAdapter$ViewHolder.class 484B
R$id.class 1KB
R$drawable.class 602B
FormClient$MyAdapter.class 2KB
FormFiles.class 3KB
FormClient$5.class 2KB
FormLogin$1.class 1KB
R$attr.class 331B
FormClient$1$2.class 1KB
R.class 510B
FormClient$3.class 1005B
FormClient$2.class 1KB
FormClient$2$1.class 2KB
FormClient$1$1$1.class 2KB
FormClient$1$1.class 2KB
FormLogin.class 2KB
FormClient$4.class 2KB
FormClient$1.class 3KB
FormClient$RecFileTransferListener.class 2KB
FileAdapter.class 3KB
R$string.class 389B
util
XmppTool.class 1KB
TimeRender.class 767B
TransferUtils.class 3KB
FormFiles$1.class 2KB
FormClient.class 6KB
resources.ap_ 48KB
AdXmpp.apk 471KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
folder.png 7KB
fileback.png 3KB
p12.png 11KB
filetype.png 3KB
icon.png 4KB
drawable
incoming.9.png 2KB
im.png 7KB
outgoing.9.png 2KB
values
strings.xml 104B
drawable-mdpi
icon.png 3KB
layout
formlogin.xml 3KB
formclient_chat_in.xml 1KB
formclient.xml 2KB
formclient_chat_out.xml 2KB
frmfiles.xml 368B
frmfiles_row.xml 543B
assets
gen
com
xmpp
client
R.java 3KB
proguard.cfg 1KB
src
com
xmpp
client
FormClient.java 10KB
FileAdapter.java 3KB
FormLogin.java 3KB
FormFiles.java 2KB
util
TransferUtils.java 2KB
TimeRender.java 395B
XmppTool.java 806B
.project 842B
.classpath 417B
lib
asmack.jar 1.09MB
project.properties 360B
AndroidManifest.xml 1KB
共 73 条
- 1
资源评论
芝麻粒儿
- 粉丝: 5w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现用有限元法计算电磁场的Matlab工具 .rar
- 基于matlab实现有限元算法 计算电磁场问题 边界条件包括第一类边界和第二类边界.rar
- 基于matlab实现用于计算不同车重下的电动汽车动力性和经济性.rar
- 基于matlab实现遗传算法求解多车场车辆路径问题 有多组算例可以用.rar
- 浏览器.apk
- 基于matlab实现是一个matlab中的power system 中搭建的一个模型
- 基于JSP毕业设计-教学管理系统(源代码+论文).zip
- 基于JSP毕业设计-家政管理系统-毕业设计.zip
- 基于Python实现淘宝商品评论采集(含逆向)源代码
- 基于matlab实现多目标进化算法NSGAⅡ&Matlab讲解.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功