`
xsuo
  • 浏览: 123297 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Gtalk基本功能完成

阅读更多

Gtalk基本功能完成

上传源代码,供大家参考!
ContactsActivity(Gtalk好友列表)
import com.google.android.gtalkservice.IGTalkService;

import com.google.android.gtalkservice.IGTalkSession;

import com.google.android.gtalkservice.Presence;

import android.view.View;

import android.app.Activity;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.DeadObjectException;

import android.os.IBinder;

import android.provider.Im;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;



public class GtalkActivity extends Activity implements View.OnClickListener {

    private EditText login_User = null;

    private EditText login_Pwd = null;

    private IGTalkSession mGtalkSession = null;

    private Button Btn_Login = null;

    private Button Btn_Exit = null;

    private static final int contactsActivity = 0;

    public static IGTalkService xmppservice;

    

    @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        setContentView(R.layout.main);

        

        //EditText: account,password

        login_User = (EditText)this.findViewById(R.id.login_et_user);

        login_Pwd = (EditText)this.findViewById(R.id.login_et_pwd);

        

        //Button: login,exit

        Btn_Login = (Button)this.findViewById(R.id.btn_login);

        Btn_Exit = (Button)this.findViewById(R.id.btn_exit);

        

        Btn_Login.setOnClickListener(this);

        Btn_Exit.setOnClickListener(this);

    }

    

    //display message on screen 

    private void logMessage(CharSequence msg) {

		 Toast.makeText(GtalkActivity.this,msg,

				        Toast.LENGTH_SHORT).show();

		

	}

    

    

    //service connection

    private ServiceConnection mConnection = new ServiceConnection(){

		public void onServiceConnected(ComponentName className, IBinder service) {

			  xmppservice = IGTalkService.Stub.asInterface(service);

			  try {

				//enter account,password  

				mGtalkSession = xmppservice.createGTalkSession(login_User.getText().toString(),login_Pwd.getText().toString());

				mGtalkSession.requestRoster();

				if(mGtalkSession == null){

                	logMessage(getText(R.string.xmpp_session_not_found));

                    return;

                	

                }

                if(mGtalkSession != null){

                	boolean b = false;

                	try {

        				b = mGtalkSession.isConnected();

        			} catch (DeadObjectException ex) {

        				logMessage("***Check Current State meets Error! Exception->" + ex);

        			}

                	if(b){

                		//connection state

                		switch(mGtalkSession.getConnectionState()){

                			case 4: // login successfully

                				logMessage("successfully logged in to the XMPP server!");

                				break;

                			case 5:

                				mGtalkSession.setPresence(new Presence(Im.PresenceColumns.AVAILABLE, "Am here now!"));

                				createContact();

                				logMessage("the client requested roster from the server.");

                		        break;

                			case 0: // network problem

                				logMessage("***ConnectionState.IDLE -> not connected!");

        						break;	

                				

                			case 2: // connecting....

                				logMessage("connecting to the server.");

        						break;



        					case 3:

        						logMessage("connected to the server, but not authenticated yet.");

        						break;

        						

        					case 1:

        						logMessage("in a pending state for automatic reconnection.");

        						break;

                			

        					default:

                				logMessage("Unknown ConnectionState!");

        						break;

                		}

                	}

                }

                

			} catch (DeadObjectException e) {

			

				e.printStackTrace();

			}

		}

        

         //service disconnected

		public void onServiceDisconnected(ComponentName componentname) {

			xmppservice = null;

		}

    	

    };

	     //tow buttons bindservic/eunbindservice 

        public void onClick(View view) {

        	if(view == Btn_Login){

			   bindService((new Intent()).setComponent(com.google.android.gtalkservice.GTalkServiceConstants.GTALK_SERVICE_COMPONENT), 

			   		     mConnection,Context.BIND_AUTO_CREATE);

		   }

		   if(view == Btn_Exit){   

			   unbindService(mConnection);

			   xmppservice = null;

			   logMessage("ServiceDisconnected");

			   

		   }

	    }

   

        private void createContact() {

		    Intent contact = new Intent(this,ContactsActivity.class);

		    startSubActivity(contact, contactsActivity);

		}

		

		protected void onActivityResult(int requestCode, int resultCode, String data, Bundle extras) {

	    	super.onActivityResult(requestCode, resultCode, data, extras);

	        

	        switch(requestCode) {

	        case contactsActivity:

	            break;

	        }

	    }



}
MessageSender (发消息)
import com.google.android.gtalkservice.IChatSession;

import com.google.android.gtalkservice.IGTalkService;

import com.google.android.gtalkservice.IGTalkSession;

import android.app.Activity;

import android.database.Cursor;

import android.os.Bundle;

import android.os.DeadObjectException;

import android.provider.Im;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

import android.widget.TextView;

import android.widget.Toast;

import android.view.View;



public class MessageSender extends Activity implements View.OnClickListener {

    private EditText senderEdit = null;

    private ListView mesgList = null;

    private Button sendButn = null;

    private TextView recevieView = null;

    IGTalkSession mXmppSession = null;

    IGTalkService xmppService;

    private String user = null;

	@Override

	protected void onCreate(Bundle icicle) {

		super.onCreate(icicle);

		setContentView(R.layout.message);

		

		recevieView = (TextView)this.findViewById(R.id.recipient);

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

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

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

		sendButn.setOnClickListener(this);

		

		Bundle extras = getIntent().getExtras();

		if (extras != null) {

			user = extras.getString(ContactsActivity.KEY_Name);

	//		logMessage("***********user************"+user);

            if(user != null){

            	recevieView.setText(user);

            	

            	Cursor cursor = managedQuery(Im.Messages.CONTENT_URI, null,

                        null, null, null);

                ListAdapter adapter = new SimpleCursorAdapter(this,

                        android.R.layout.simple_list_item_1,

                        cursor, 

                        new String[]{Im.MessagesColumns.BODY},

                        new int[]{android.R.id.text1});



                this.mesgList.setAdapter(adapter);

            }

            

            

            

		}

		

		

		

	}

     

	private void logMessage(CharSequence msg) {

        Toast.makeText(MessageSender.this, msg,

                Toast.LENGTH_SHORT).show();

    }

	

	public void onClick(View view) {

		if(view == sendButn ){

			try{

				xmppService = GtalkActivity.xmppservice; 

				if(xmppService == null){

					

					logMessage("xmppService is null");

				}

				try {

					mXmppSession = xmppService.getDefaultSession();

					

				} catch (DeadObjectException e) {

					// TODO Auto-generated catch block

					e.printStackTrace();

				}

				if(mXmppSession == null){

					logMessage("mXmppSession is null");

					return;

				}

				

			 IChatSession ichatsession = mXmppSession.createChatSession(user);

			 if(ichatsession == null) 

           	{

           		logMessage("Fail to create chat session. Return.");

           		return;

           	}

			ichatsession.sendTextMessage(senderEdit.getText().toString()); 

			} catch (DeadObjectException e) {

				e.printStackTrace();

			}

				

		}

		

	}

   

}
AndroidGtalk.rar (59.1 KB)
AndroidGtalk.rar (59.1 KB) 下载次数: 0
2008-6-17 22:37
分享到:
评论
1 楼 常思己过 2011-09-05  
楼主,下载链接出现问题,可否修改下

相关推荐

    Openfire_spark_安装手册.pdf

    通过以上步骤,可以有效地完成Openfire服务器和Spark客户端的安装配置,实现基本的即时通讯功能,并能够进一步扩展高级功能和服务。这份手册为用户提供了全面的技术指导和支持,使得即使是缺乏技术背景的SMB用户也...

    WebIM(Openfire+Spark+Smack)

    XMPP不仅用于传统的个人IM应用,如QQ、MSN Messenger和Gtalk(Gtalk是XMPP协议的实现),还可在企业环境中提升沟通效率,甚至在游戏中集成通信功能,增强用户体验。 Spark是一款基于XMPP的Java即时通讯客户端,它...

    Android程序员入门

    - Eclipse安装完成后,需要配置相关开发工具来支持Android开发。 ### 第三章:下载和安装Android SDK - Android SDK是开发Android应用所需的软件开发工具包,包含编译器、调试器和必要的API库。 - SDK的下载和安装...

    Android程序员入门(中文版)

    - Gtalk:集成Google Talk聊天服务,实现即时通讯功能。 #### 五、总结 本书旨在为初学者提供全面的Android开发指南,从基础知识到高级主题均有涉及。通过实践案例加深对各个知识点的理解,帮助读者快速掌握...

    Android程序员入门(中文版)

    - **使用Google API的Gtalk**:Gtalk是Google的一款即时通讯软件,在Android中也可以通过API调用来实现聊天功能。 - **实现聊天功能**:利用XMPP协议实现消息收发。 - **应用程序:找一个朋友**:通过SQLite数据库...

    XMPP基础实现博文整理

    综上所述,XMPP协议和Smack库为开发实时通信应用提供了强大的工具,通过理解这些基本概念和实践,开发者能够构建出高效、稳定的IM系统。在实际项目中,结合其他相关的服务和工具,如Openfire和Spark,可以进一步提升...

    Openfire_spark安装手册.pdf

    ### Openfire + Spark 安装及配置指南 #### 第一章 Java领域的IM解决方案 在Java领域内,一种常用的即时通信(IM)解决...这套方案不仅适用于企业内部通信,还可以扩展支持更多的外部即时通信服务,如MSN、GTalk等。

    (国内某大型集团的内部资料)Android编程指南 程序员入门(中文版)

    介绍了如何利用Google提供的API实现即时通讯功能,重点在于Gtalk服务的集成与使用方法。 #### 6. 第十一章:应用程序 —— 找一个朋友 这一章节通过实例演示了如何开发一个寻找附近好友的应用程序,包括网络通信、...

    Android开发编程从入门到精通——Android程序员必备

    通过集成Google Talk(GTalk)功能,可以让应用具备即时通讯能力,从而增强其社交属性。 **9.2 编译和运行Google API** 本节将介绍如何在Android应用中使用Google API,并完成编译和运行的过程。 #### 十、应用程序...

    Android入门教程

    Android系统内置了GTalk服务,开发者可以通过Google提供的API实现即时通讯功能。同时,Android提供了HttpURLConnection、Volley、Retrofit等网络通信库,方便开发者实现网络数据的获取和发送。 九、SQLite数据库 ...

    Android编程指南+程序员入门(中文版).pdf

    在搜索新功能的界面中,选择“New local Site...”,指定ADT插件的本地目录,完成安装后配置ADT。 #### 2. 创建与运行Android项目 - **使用ADT创建新项目**:通过“File>New>Project>Android>Android Project”...

    安卓内置APK程序中英文对照表-方便大家给系统瘦身.pdf

    53. **gtalkservice**: GTALK服务 - 提供GTALK即时通讯功能。 54. **HTMLViewer**: HTML查看器 - 支持查看HTML格式的文档。 55. **hidialer.apk**: 智能拨号 - 提供智能搜索和快速拨号功能。 56. **himarket.apk*...

    Android中的XMPP应用

    通过对这些代码的学习,开发者可以了解到如何有效地利用XMPP API完成即时通信应用的核心功能。 ##### 2.3 实践建议 - **熟悉XML格式**:由于XMPP是基于XML的数据交换协议,因此熟悉XML的基本语法对于理解XMPP的...

Global site tag (gtag.js) - Google Analytics