服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

实例讲解移动qq在线平台(二)


实例讲解移动qq在线平台

实例讲解移动qq在线平台(二)(图一)

 实例讲解移动qq在线平台(二)(图二)

实例讲解移动qq在线平台(二)(图三)

实例讲解移动qq在线平台(二)(图四)

该平台是基于wtk2.3demo--snap mobile sample_community修改而成,界面汉化,以及一些功能做了局部调整。现在做实例讲解,主要让大家能深入理解这个snapmobilesample

实例讲解移动qq在线平台(二)(图五)

看看我们要完成的的流程:

1.初始化

2.登陆

3.加载信息

4.查找用户

5.添加好友

6.聊天对话

7.好友上线

8.下线通知

9.离开

 

可以根据本文档提供的源代码,逐步理解它的构架和运作机制。

 


 

1.初始化

community类初始化

    static void initialize() {

        /***com.nokia.sm.ui.view初始化***/

        view.initialize();

        /***好友列表框架初始化***/

        buddyview.initialize();

        /***软按钮初始化***/

        buttonlistview.initialize();

        /***发送信息框架初始化***/

        chat.initialize();

        /***确认信息框架初始化***/

        dialog.initialize();

        /*** 登陆框架初始化***/

        login.initialize();

        /***社区在线显示初始化***/

        rankingview.initialize();

    }

2.登陆

连接对象发送统一登陆信息

try {

     /***

      *连接对象执行extendedlogin命令发送(用户名,密码,游戏类名,在线显示属性)

      *来统一登陆snap, impsweb服务器,

      *同时服务器会返回好友列表和在线显示信息给returnvalues

       */

   returnvalues = comm.extendedlogin(

itemlist.getstring("user"),

itemlist.getstring("pass"),

itemlist.getinteger("gcid"),

itemlist.getstring("presence")

);                        

   } catch (exception e) {

        string msg = ""     + "cannot contact server. please verify "

                            + "that properties snap-mobile-host and "

                            + "snap-mobile-port point to a snap mobile "

                            + "server. app will close in a few seconds.";

        /***显示出错信息***/

         showerror(msg, true);

         /***延迟10***/

         try {thread.sleep(10000);}

         catch (interruptedexception ie) {}

}

 

3.加载信息

获取好友列表

 if (lasterror == null && cmd.equals("extendedlogin")) {

         /***获取服务器id  ***/

     websessionid = returnvalues.getstring("websessionid");

     impssessionid = returnvalues.getstring("impssessionid");

     snapsessionid = returnvalues.getstring("snapsessionid");

         /*** 获取用户id***/

     snapuserid = returnvalues.getstring("snapuserid");

         /***获取好友列表***/

      buddylist.set(returnvalues.getlist("buddylist"));

         //system.out.println(snapuserid+":");

  }

4.查找用户

该文档是利用rankinglist来实现在线用户显示的

 if (errormessage != null) {

     community.showerror(errormessage, false);

 } else {          

     list = results.getlist("rankinglist");

     idname = "username";

     table.clear();

     for (i=0; i

       il = (itemlist)list.elementat(i);

       id = il.getstring(idname);

       rank = il.getinteger("rank");

       score = il.getinteger("value"); 

      //system.out.println(""+buddylist.aisavailable.tostring() );          

       online =community.snapuserid.equals(string.valueof(score));

       row = new tablerow(new object[] {"" + rank, id, "" + online}, separator_list);

       row.setfont(table_font);

       row.setbackgroundimage(new image[] {null, slimon});

       row.setdimension(slimon.getwidth(), slimon.getheight());

       table.add(row);

}

5.添加好友

buddylist类主要实现更新列表,添加好友

    /*******************更新好友列表**********************/

    private void updatelisteners() {

        notifylisteners(new event(this, event.item_deselected, null));

    }

    /***********************更新在线显示******************/

    public synchronized void updatepresence(string name, boolean available) {

        buddy buddy = get(name);

        if (buddy != null) {

            aisavailable = buddy.isavailable();       

            buddy.setavailable(available);

            if (!aisavailable && available) onlinebuddycount++;

            if (aisavailable && !available) onlinebuddycount--;

            repaint();

            updatelisteners();

        }

    }

    /****************************添加好友***********************/

    public synchronized void add(buddy buddy) {

        if (buddy.isavailable()) {

            onlinebuddycount++;

        }

        list.addelement(buddy);

        repaint();

        updatelisteners();

    }

    /*************************检索好友***********************/

    public buddy get(int index) {

        return (buddy)list.elementat(index);

    }

    /***********************获取列表长度********************/

    public int size() {

        return list.size();

    }

    /*******************提取列表上的好友名单********************/

    public synchronized buddy get(string name) {

        for (int i=0; i

            buddy buddy = (buddy)list.elementat(i);

            if (name.equals(buddy.getname())) {

                return buddy;

            }

        }

        return null;

    }

    /***************************移除好友***********************/

    public synchronized void remove(string name) {