pc 应用 通过 usb adb 与 android客户端通讯

这回公司要求要实现类似碗豆夹这类的与pc应用进行通讯备份通讯录,短信,应用,并对这些信息进行编辑的功能。 
这里主要用到了 adb,socket,pc 应用通过 usb 联接 android 然后通过发送广播来启动 android 里的服务器端程序。 
这是采用 c/s 的通讯模式,android 端应用是服务器,pc端的是客户端。pc应用启动android端后通过 tcp 协议进行 

通讯。

监听代码

        private void doListen() {
                mServerSocket = null;
                try {
                        mServerSocket = new ServerSocket(mServerPort);

                        mMainThreadFlag = true;
                        while (mMainThreadFlag) {
                                Socket client = mServerSocket.accept();

                                // 开启线程处理客户端请求并发送响应
                                ServerCmdTransfor sCmdHandler = new ServerCmdTransfor(this.mContext, client);
                                mHdList.add(sCmdHandler);
                                new Thread(sCmdHandler).start();
                        }
                } catch (IOException e1) {
                        e1.printStackTrace();
                }
        }
/**
         * 处理客户端请求并发送响应 这些规则都是由产品经理协商好前后端的通讯协议
         */
        private class ServerCmdTransfor extends TCPServerTransfor implements Runnable {


                public Handler mNotifyHandler = null;
                ServerCmdTransfor(Context context, Socket socket) {
                        super(context, socket);
                }

                @Override
                public void run() {
                        Util.log(TAG, Thread.currentThread().getName()
                                        + " ServerCmdTransfor start");
                        CmdData data = null;

                        // 先接收请求
                        data = readCMD();
                        Util.log(TAG, Thread.currentThread().getName()
                                        + " ServerCmdTransfor readCMD ret " + data);
                        if (data != null) {
                                // 根据cmdId特殊处理
                                if (data.cmdId == CmdData.COMMAND_SMS_RECEIVE_REQ) {
                                        // 手机-->PC端的推送
                                        doNotify();
                                } else {
                                        // 处理
                                        data = TCPServer.this.mCmdHd.processReqCreateResp(data);

                                        Util.log(TAG, Thread.currentThread().getName()
                                                        + " ServerCmdTransfor processReqCreateResp ret "
                                                        + data);
                                        // 然后发送响应
                                        if (data != null) {
                                                boolean ret = sendCMD(data);
                                                Util.log(TAG, Thread.currentThread().getName()
                                                                + " ServerCmdTransfor sendCMD ret " + ret);
                                        }
                                }
                        }
                        try {
                                mSocket.close();
                                Util.log(TAG, Thread.currentThread().getName()
                                                + " ServerCmdTransfor close");
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }

更多的移动互联网的发展趋势拓者设计吧效果图移动互联网应用相关的资料请到互联网的一点事www.yidin.net 留言

android QQ群:222392467

资料:

http://www.yidin.net/discuz/forum.php?mod=viewthread&tid=216&extra=page%3D1

http://www.yidin.net/?p=9725

原文地址:https://www.cnblogs.com/ondream/p/3056486.html