zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Serverless 工程实践 | Serverless 应用开发观念的转变
    如何高效学习 Kubernetes 知识图谱?
    互动赠新书|当云原生遇到混合云:如何实现“求变”与“求稳”的平衡
    5 款阿里常用代码检测工具,免费用!
    AI与传统编译器
    OpenArkCompiler方舟编译
    传统编译原理
    LLVM基础技术图例
    双极型与低频大功率晶体管
    TVM,Relay,Pass
  • 原文地址:https://www.cnblogs.com/ondream/p/3056486.html
Copyright © 2011-2022 走看看