这回公司要求要实现类似碗豆夹这类的与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

更多相关文章

  1. Android(安卓)之 Window、WindowManager 与窗口管理
  2. android 字节数据的转换与处理
  3. 成为android工程师的31+个小技巧
  4. android click 和onTouch 事件处理机制 (转)
  5. Android(安卓)应用进程启动流程
  6. 动态下发 so 库在 Android(安卓)APK 安装包瘦身方面的应用
  7. 详解Android广播机制
  8. Android基础入门知识
  9. Android(安卓)Bmob后端云—数据库、服务器!

随机推荐

  1. Android(安卓)Studio(2.3.3)配置Kotlin笔记
  2. Android拍照、相册选取、裁剪图片
  3. Android(安卓)Binder总结
  4. [Android]JNI进阶--问题集
  5. Android:requestWindowFeature应用程序窗
  6. vlc-android编译流程
  7. android 面试
  8. android 设置程序安装位置
  9. Android(安卓)在JNI中执行Java方法--C/C+
  10. keytool-importkeypair 使用