zoukankan      html  css  js  c++  java
  • android开发(20) 使用adb建立pc和android设备之间的连接。usb连接方式。

      

    1.背景

    在我开发过的android应用中,大多都需要和 远程服务端 进行交互,需要从服务端获得数据或者上传数据。那样我们的app(android 应用程序,以下简写)直接访问互联网上的服务器。当然有wifi的时候,我们就介入wifi路由,再接入服务端。图示如下:

    情景1:

    android设备  <--->   位于互联网的服务器

    情景2:

    android设备  <--->  WIFI路由(可能是家用的小路由等)  <--->   位于互联网的服务器

    上面的情景基本满足我们的需要了。然后,我们不得不考虑到一些问题:

    1. PC(个人电脑)仍然是我们进入互联网的主要入口。
    2. android 设备毕竟没有pc上操作更方便

    于是我们考虑到另外的情景

    情景3:

    android设备  <--->  PC(个人电脑)  <--->   位于互联网的服务器

    这个情景里,我们的android应用程序(android app)首先和pc上的桌面应用程序(desktop app)进行交互,桌面应用程序和互联网应用程序(web app)交互。

    比如我们要下载 “某个应用安装到手机上”,我们可以再 电脑上的应用程序上操作,搜索我们想要的程序,点击下载(从远程下载到本地pc),然后安装(从pc安装应用到android 手机)。我们常见到的“豌豆荚”,“腾讯手机助手”等都是这样的使用方式。

    2.实现

    如果要实现情景3.我们需要开发:

    1.一个桌面应用程序,desktop app。

      用于:从互联网提取数据,并将数据传输到android 手机内。

    2.一个运行在android设备的 android app

         用于:接收来自desktop app的数据。接受来自desktop app的指令,执行相关操作,返回消息到pc。

    2.1桌面应用程序的实现

    要做桌面应用,当然还是用winform(.net方向)来实现了。想建立pc和手机之间的同步,我们需要依托adb来实现。我们看看adb是什么?

    Android Debug Bridge
    
    概述
      adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。
      adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 它的主要功能有:
      * 运行设备的shell(命令行)
      * 管理模拟器或设备的端口映射
      * 计算机和设备之间上传/下载文件
      * 将本地apk软件安装至模拟器或android设备

    要使用adb,我们可以在我们的sdk目录下找到它。

    位于 android-sdk\platform-tools 下的几个文件

    adb.exe

    AdbWinApi.dll

    AdbWinUsbApi.dll

    我们需要这3个文件。拷贝到我们的winrom工程下。

    在.net winfrom中,我们需要 调用adb.exe来完整一系列的操作。我们一般使用process类来启动新的进程。如下:

    1.列出当前所有连接到pc的android 设备。(以得到一个设备ID)

    2.安装某个apk(android 应用程序包)到手机。

    3.发送广播以启动手机内的某个服务。

    4.在pc上映射端口。该端口将某个android的端口,应该到pc的端口,然后我们就可以使用这个端口和设备进行通讯了。

    我封装了一个process执行adb.exe的类,参考我的博客:

    http://www.cnblogs.com/vir56k/archive/2012/12/03/2799810.html

    2.1 Android应用的实现

    我们需要开一个 守护程序,来监听来自pc的指令,以执行相关操作的相应。我们需要:

    1.编写一个广播接收器,以收到某个 广播消息时,启动 监听服务。

    2.编写一个监听服务。在服务里启动监听服务,我们需要监听来自某个端口的消息,这个端口是手机和pc之间的同路。由于android 设备的特点,我们需要用java nio来实现监听,以提高性能。

    3.实现监听服务里的消息响应,根据具体的业务需要,完成和pc之间的消息响应。

    -----

    不提供源代码下载。

    参考:http://blog.csdn.net/wufenglong/article/details/5778862

    http://wenku.baidu.com/view/89bee443be1e650e52ea99c5.html

  • 相关阅读:
    HDU 1022 Train Problem I
    HDU 1702 ACboy needs your help again!
    HDU 1294 Rooted Trees Problem
    HDU 1027 Ignatius and the Princess II
    HDU 3398 String
    HDU 1709 The Balance
    HDU 2152 Fruit
    HDU 1398 Square Coins
    HDU 3571 N-dimensional Sphere
    HDU 2451 Simple Addition Expression
  • 原文地址:https://www.cnblogs.com/vir56k/p/2804520.html
Copyright © 2011-2022 走看看