微信营销论坛

普通会员

45

帖子

0

回复

88

积分

楼主
发表于 2019-01-10 10:36:52 | 查看: 2458 | 回复: 0

本人带领技术团队也开发了一套完整的群控系统,下面就微信群控系统的实现原理,以及部分核心代码供大家参考。

不同于市场上的其他群控系统,我们研发的群控系统是可以运行在任何电脑上的,不用再购买另外一台服务器,对群控系统的操作便捷性以及实用性都做了极大的优化。该系统的实现主要分为几个部分,一是pc端操作软件,二是adb底层传输,三是手机端模拟点击,四是,手机端底层劫持。如果是想控制授权,还在再加一个部分就是web服务器端授权系统。

pc端操作软件,主要是把所有手机的界面投射到电脑上,实现手机和电脑的同步操作,以及一些自动化操功能。其中比较核心的问题是手机界面实时投射到电脑上,网上有很多介绍使用asm等方法实现,也有介绍各种截图传输方式的。但这里我想告诉大家大部分方式都不能实现实时传输,都会延迟几秒钟。如果是正常的截图传输的方式很多时候都是感觉很卡顿。

解决这个问题就是要用到adb了,adb相当于电脑和手机的传输通道,群控系统的实现主要环节就在于adb的各种命令的应用。但正常的adb是无法完成所有的功能的,在本项目的开发过程中,我们在Linux平台上下载Google的Android源码,修改了adb的文件后,重新编译生成我们自己想要的adb。

手机界面的实时传输在我们项目中用的是socket传输的,在进行了各种优化之后,传输不会有任何延迟,无任何卡顿现象。

手机端主要是模拟点击和底层劫持,模拟点击实现这里我们使用的是uiautomator,当然,这里模拟点击实现的方式各不先同,大家可以选择一种自己熟悉的方式来实现。底层劫持的话主要用到xposed,在全国定位,自动摇一摇等功能时都要用到底层劫持,还有就是为了减少执行的步骤,打开微信的时候直接跳到微信的某个页面,都会用到底层劫持。

以下是手机端的核心实现代码,主要是手机端视频流的获取,实时向pc端传输。实时投屏的具体实现。利用socket实时传输,每秒传送的帧数可以自由控制,在实际的实现过程中,我们大概用到的是每秒30帧左右就十分流畅。核心代码为:

new Thread(new Runnable() {

    public void run() {

        try {

            if(popUp)

            screenshot = Utilities.bitmapMatrix(screenshot);

            else

                screenshot = Utilities.bitmapMatrix1(screenshot);

            baos = new ByteArrayOutputStream();

            screenshot.compress(Bitmap.CompressFormat.JPEG, 30, baos);

            data = baos.toByteArray();

            dos.writeInt(data.length);

            dos.write(data);

            if (baos != null) {

                baos.flush();

            }

        } catch (Exception e) {


        } finally {

            if (baos != null) {

                try {

                    baos.close();

                    baos = null;

                } catch (IOException ioe) {

                }

            }

            screenshot.recycle();

            screenshot = null;

            data = null;

        }

        try {

            if (baos != null) {

                baos.close();

                baos = null;

            }

            if (screenshot != null) {

                screenshot.recycle();

                screenshot = null;

                data = null;

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        System.gc();

    }}).run();

public static Bitmap ReceiveVarData(Socket s)
       {
           string ss = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");
           try
           {
               int total = 0;
               int recv = 0;
               byte[] datasize = new byte[4];
               recv = s.Receive(datasize, 0, 4, 0);
               if (recv == 0)
               {
                   //已经断开连接,需要重新连接
                   return null;
               }
               byte[] datasize3 = new byte[4];
               for (int i = 0; i < 4; i++)
               {
                   datasize3[i] = datasize[3 - i];
               }
               int size = BitConverter.ToInt32(datasize3, 0);


               int dataleft = size;
               byte[] data = new byte[size];
               MemoryStream fs = new MemoryStream();


               while (total < size)
               {
                   recv = s.Receive(data, total, dataleft, 0);


                   if (recv == 0)
                   {
                       //已经断开连接,需要重新连接
                       data = null;
                       return null;
                       // break;  
                   }
                   // fs.Write(data, 0, recv);
                   total += recv;
                   dataleft -= recv;
               }
               fs.Write(data, 0, size);
               Bitmap ImgBitmap = new Bitmap(fs);
               fs.Close();
               // fs.Flush();
               // return data;
               string ss1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");


               return ImgBitmap;
           }
           catch (Exception e)
           {
               return null;
           }
       }


我们推出全新微信二次开发SDK,本SDK适用于微信营销软件研发、微信营销手机研发、微信手机群控系统研发、云控系统研发、微信客服系统研发、微信营销系统研发、微客微商营销工具研发等。快速实现微信的二次开发,轻松开发出上述软件功能,接入简单、兼容性好、拓展性强,始终支持微信官方最新版本,并定时维护升级,可按需定制!咨询请加微信tangjinjinwx

sdk包括微信加好友功能API,微信群发功能API,微信群管理功能API,微信营销功能API,微信聊天对话功能API,微信营销辅助工具API等,此sdk适用于微信营销软件研发、微信营销手机研发、微信手机群控系统研发、云控系统研发、微信客服系统研发、微信营销系统研发、微商营销工具研发等。目前使用聚播微信二次开发SDK为基础开发的某知名产品已出货2万余台手机端!

详细接口请参考http://www.yunlauncher.com/Blog/articles/119.html



您需要登录后才可以回帖 登录 | 立即注册

微信营销论坛,一个只关注手机微信营销的论坛! 浙ICP备13012843号-1