最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

android平台即时通讯简单实现 源代码

来源:动视网 责编:小OO 时间:2025-09-28 00:59:59
文档

android平台即时通讯简单实现 源代码

androidƽ̨¼´Ê±Í¨Ñ¶¼òµ¥ÊµÏÖpackageorg.apache.android.xmpp;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.util.Log;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.Button;import
推荐度:
导读androidƽ̨¼´Ê±Í¨Ñ¶¼òµ¥ÊµÏÖpackageorg.apache.android.xmpp;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.util.Log;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.Button;import
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();

    }

}

文档

android平台即时通讯简单实现 源代码

androidƽ̨¼´Ê±Í¨Ñ¶¼òµ¥ÊµÏÖpackageorg.apache.android.xmpp;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.util.Log;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.Button;import
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top