视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
android平台即时通讯简单实现 源代码
2025-09-28 00:59:59 责编:小OO
文档
androidƽ̨¼´Ê±Í¨Ñ¶¼òµ¥ÊµÏÖ

package org.apache.android.xmpp;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import org.jivesoftware.smack.PacketListener;

import org.jivesoftware.smack.XMPPConnection;

import org.jivesoftware.smack.filter.MessageTypeFilter;

import org.jivesoftware.smack.filter.PacketFilter;

import org.jivesoftware.smack.packet.Message;

import org.jivesoftware.smack.packet.Packet;

import org.jivesoftware.smack.util.StringUtils;

import java.util.ArrayList;

public class XMPPClient extends Activity {

    private ArrayList messages = new ArrayList();

    private Handler mHandler = new Handler();

    private SettingsDialog mDialog;

    private EditText mRecipient;

    private EditText mSendText;

    private ListView mList;

    private XMPPConnection connection;

    /**

     * Called with the activity is first created.

     */

    @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        Log.i("XMPPClient", "onCreate called");

        setContentView(R.layout.main);

        mRecipient = (EditText) this.findViewById(R.id.recipient);

        Log.i("XMPPClient", "mRecipient = " + mRecipient);

        mSendText = (EditText) this.findViewById(R.id.sendText);

        Log.i("XMPPClient", "mSendText = " + mSendText);

        mList = (ListView) this.findViewById(R.id.listMessages);

        Log.i("XMPPClient", "mList = " + mList);

        setListAdapter();

        // Dialog for getting the xmpp settings

        mDialog = new SettingsDialog(this);

        // Set a listener to show the settings dialog

        Button setup = (Button) this.findViewById(R.id.setup);

        setup.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                mHandler.post(new Runnable() {

                    public void run() {

                        mDialog.show();

                    }

                });

            }

        });

        // Set a listener to send a chat text message

        Button send = (Button) this.findViewById(R.id.send);

        send.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                String to = mRecipient.getText().toString();

                String text = mSendText.getText().toString();

                Log.i("XMPPClient", "Sending text [" + text + "] to [" + to + "]");

                Message msg = new Message(to, Message.Type.chat);

                msg.setBody(text);

                connection.sendPacket(msg);

                messages.add(connection.getUser() + ":");

                messages.add(text);

                setListAdapter();

            }

        });

    }

    /**

     * Called by Settings dialog when a connection is establised with the XMPP server

     *

     * @param connection

     */

    public void setConnection

            (XMPPConnection

                    connection) {

        this.connection = connection;

        if (connection != null) {

            // Add a packet listener to get messages sent to us

            PacketFilter filter = new MessageTypeFilter(Message.Type.chat);

            connection.addPacketListener(new PacketListener() {

                public void processPacket(Packet packet) {

                    Message message = (Message) packet;

                    if (message.getBody() != null) {

                        String fromName = StringUtils.parseBareAddress(message.getFrom());

                        Log.i("XMPPClient", "Got text [" + message.getBody() + "] from [" + fromName + "]");

                        messages.add(fromName + ":");

                        messages.add(message.getBody());

                        // Add the incoming message to the list view

                        mHandler.post(new Runnable() {

                            public void run() {

                                setListAdapter();

                            }

                        });

                    }

                }

            }, filter);

        }

    }

    private void setListAdapter

            () {

ArrayAdapter adapter = new ArrayAdapter(this,

                R.layout.multi_line_list_item,

                messages);

        mList.setAdapter(adapter);

    }

}

package org.apache.android.xmpp;

import android.app.Dialog;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import org.jivesoftware.smack.ConnectionConfiguration;

import org.jivesoftware.smack.XMPPConnection;

import org.jivesoftware.smack.XMPPException;

import org.jivesoftware.smack.packet.Presence;

/**

 * Gather the xmpp settings and create an XMPPConnection

 */

public class SettingsDialog extends Dialog implements android.view.View.OnClickListener {

    private XMPPClient xmppClient;

    public SettingsDialog(XMPPClient xmppClient) {

        super(xmppClient);

        this.xmppClient = xmppClient;

    }

    protected void onStart() {

        super.onStart();

        setContentView(R.layout.settings);

        getWindow().setFlags(4, 4);

        setTitle("XMPP Settings");

        Button ok = (Button) findViewById(R.id.ok);

        ok.setOnClickListener(this);

    }

    public void onClick(View v) {

        String host = getText(R.id.host);

        String port = getText(R.id.port);

        String service = getText(R.id.service);

        String username = getText(R.id.userid);

        String password = getText(R.id.password);

        // Create a connection

        ConnectionConfiguration connConfig =

                new ConnectionConfiguration(host, Integer.parseInt(port), service);

        XMPPConnection connection = new XMPPConnection(connConfig);

        try {

            connection.connect();

            Log.i("XMPPClient", "[SettingsDialog] Connected to " + connection.getHost());

        } catch (XMPPException ex) {

            Log.e("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost());

            Log.e("XMPPClient", ex.toString());

            xmppClient.setConnection(null);

        }

        try {

            connection.login(username, password);

            Log.i("XMPPClient", "Logged in as " + connection.getUser());

            // Set the status to available

            Presence presence = new Presence(Presence.Type.available);

            connection.sendPacket(presence);

            xmppClient.setConnection(connection);

        } catch (XMPPException ex) {

            Log.e("XMPPClient", "[SettingsDialog] Failed to log in as " + username);

            Log.e("XMPPClient", ex.toString());

                xmppClient.setConnection(null);

        }

        dismiss();

    }

    private String getText(int id) {

        EditText widget = (EditText) this.findViewById(id);

        return widget.getText().toString();

    }

}下载本文

显示全文
专题