freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

xmpp協(xié)議的使用(編輯修改稿)

2025-06-10 05:01 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 osterEntry entry : entries) { (() + + () + + () + + ().size())。 Presence presence = (())。 ( + () + + ())。 User user = newUser()。 (())。 (())。 (())。 (().size())。 (())。 (())。 (user)。 } ()。 } 單人聊天模塊第一次修改:在主界面點(diǎn)擊選擇一個(gè)用戶,進(jìn)入聊天Activity,ActivityChat先獲取傳過來的用戶,創(chuàng)建聊天類并對(duì)該用戶設(shè)置消息監(jiān)聽ChatManager chatmanager = () .getChatManager()。 // get user Intent intent = getIntent()。 String user = (user)。 (user:+ user)。 // new a session newChat= (user, null)。 // 監(jiān)聽聊天消息 (newChatManagerListenerEx())。 // send message try{ (im bird man)。 } catch(XMPPException e) { //TODOAutogenerated catch block ()。 }監(jiān)聽類public classChatManagerListenerEx implementsChatManagerListener { @Override public voidchatCreated(Chat chat, booleanarg1) { //TODOAutogenerated method stub (ml)。 } } public classMessageListenerEx implementsMessageListener { @Override public voidprocessMessage(Chat arg0, Message message) { String result = () + :+ ()。 (result)。 msg = ()。 = 0。 Bundle bd = newBundle()。 (msg, result)。 (bd)。 (msg)。 } } 所獲取到的消息都是通過handler來更新UIpublicHandler handler= newHandler() { @Override public voidhandleMessage( msg) { switch() { case0: { String result = ().getString(msg)。 (() + \n+ result)。 } break。 default: break。 } } }。 aaa跟bbb 的聊天第二次修改:第一次的測(cè)試,發(fā)現(xiàn)如果多個(gè)人之間都成為好友,那么他們之間的聊天就出現(xiàn)了接收不到的信息,當(dāng)然在跟spark測(cè)試時(shí),spark可以收到android端的信息,不過android客戶端是收到這個(gè)信息,不過卻沒有顯示出來,具體原因還不太清楚。因此在第二次修改我改成監(jiān)聽所有聊天信息包,然后再分析包的歸屬,分發(fā)到對(duì)應(yīng)的聊天窗口。 這里就是監(jiān)聽到包后打印的消息,打印出了jid和消息內(nèi)容public classXmppMessageManager implementsChatManagerListener { privateXMPPConnection _connection。 privateChatManager manager = null。 public voidinitialize(XMPPConnection connection) { _connection = connection。 manager = ()。 (this)。 } @Override public voidchatCreated(Chat chat, booleanarg1) { //TODOAutogenerated method stub (newMessageListener() { public voidprocessMessage(Chat newchat, Message message) { // 若是聊天窗口存在,將消息轉(zhuǎn)往目前窗口 // 若窗口不存在,創(chuàng)建新的窗口 .println(() + :+ ())。 if(!(())) { ((), newchat)。 } else{ } } })。 } }主要就是重寫了ChatManagerListener類的監(jiān)聽,分發(fā)處理暫時(shí)沒有想好怎么寫。接著在后臺(tái)啟動(dòng)service就可以開始監(jiān)聽,行了第一次修改那些可以去掉了^0^。 多人聊天模塊也是在主界面的菜單進(jìn)入ActivityMultiChat,該界面顯示所創(chuàng)建的房間,點(diǎn)擊就跳轉(zhuǎn)到ActivityMultiRoom 。獲取所有房間比較簡(jiǎn)單,只需執(zhí)行下面這段代碼hostrooms = (,)。跳轉(zhuǎn)到后獲取要加入的房間的jid,并創(chuàng)建監(jiān)聽。jid = getIntent().getStringExtra(jid)。 //后面服務(wù)名稱必需是創(chuàng)建房間的那個(gè)服務(wù) String multiUserRoom = jid。 try{ muc = newMultiUserChat(, multiUserRoom)。 // 創(chuàng)建聊天室,進(jìn)入房間后的nickname ()。 (TAG, join success)。 } catch(XMPPException e) { //TODOAutogenerated catch block ()。 } ChatPacketListener chatListener= newChatPacketListener(muc)。 (chatListener)。 監(jiān)聽大概的流程跟單人聊天差不多,都是handler來操作。不過多人聊天是重寫了PacketListener。具體如下(不過該方法是監(jiān)聽房間的信息,也就是說顯示的是以房間為名字的消息):classChatPacketListener implementsPacketListener { privateString _number。 privateDate _lastDate。 privateMultiUserChat _muc。 privateString _roomName。 publicChatPacketListener(MultiUserChat muc) { _number= 0。 _lastDate= newDate(0)。 _muc= muc。 _roomName= ()。 } @Override public voidprocessPacket(Packet packet) { Message message = (Message) packet。 String from = ()。 if(() != null) { DelayInformation inf = (DelayInformation) ( x, jabber:x:delay)。 Date sentDate。 if(inf != null) { sentDate = ()。 } else{ sentDate = newDate()。 } (TAG, Receive old message: date= + () + 。 message= + ())。 msg = ()。 = RECEIVE。 Bundle bd = newBundle()。 (from, from)。 (body, ())。 (bd)。 (msg)。 } } } 下載模塊在主界面對(duì)著用戶名長(zhǎng)按,進(jìn)入下載activity。進(jìn)入activityFileTransfer,點(diǎn)擊傳輸按鈕即可將文件傳輸給之前選擇的用戶,當(dāng)然這里做得比較簡(jiǎn)單,并沒有拒絕功能,一旦發(fā)現(xiàn)有文件就接受。FileTransferManager transfer =newFileTransferManager( )。 String destination =user。 OutgoingFileTransfer out = transfer .createOutgoingFileTransfer(destination +/Smack)。那用戶是如何監(jiān)聽到有文件并且接受呢?在進(jìn)入主界面的時(shí)候就已經(jīng)開始了一個(gè)service(fileListenerService),該服務(wù)創(chuàng)建文件的監(jiān)聽類(XmppFileManager),監(jiān)聽類主要繼承FileTransferListener 重寫里面的fileTransferRequest方法。File saveTo。 // set answerTo for replies and send() answerTo= ()。 if(!(Environment .getExternalStorageState())) { send(External Media not mounted read/write)。 return。 } else if(!()) { send(The directory + () + is not a directory)。 return。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1