您的位置:首页 > 理论基础 > 计算机网络

Linux下实现Android手机数据传输及网络共享

2013-05-26 11:59 393 查看
Linux发展比Windows晚了几年,但它的开源理念,使得其发展迅猛发展,衍生出很多版本。如今Linux已经不再只有命令行操作,X-window做的已经很好了,3D效果也非常的出色,接触的人也越来越多了。
最近几天,我也有想把真机改成Linux系统的冲动,在安装之前,我要把一些常用的,在Linux系统上实现,毕竟功能上如果不能满足日常生活需要,那就没有什么意义了。相信现在很多人都已经在使用android的智能手机了,为了方便备份和管理手机,在windows下出现了许多android手机的管理软件,如豌豆荚、91、360、金山、、、等等,而且还可以通过数据线共享网络。虽然android是基于linux的内核,但在linux下管理android手机的方法并不多。毕竟windows下的驱动驱动,不能安装到Linux系统中去,经过对管理软件的工作原理分析,成功的在Linux下实现相同的功能。虽然我最近学习的是Red Hat,但我没有选择在这个平台上进行操作,总不能以后再工作的时候,用服务器连接自己的手机玩吧!所以我选择了非常流行的Ubuntu这个版本,软件都是比较新的,界面做的非常的漂亮,而且更行周期很快。下面就介绍一下具体操作步骤:一、QtADB 管理Android手机1、所需的软件Qtadb 32位:http://down.51cto.com/data/807793Qtadb 64位:http://down.51cto.com/data/807794appt和adb文件:http://down.51cto.com/data/8078132、解压上边的几个软件到用户主目录中的QtADB_0.8.1_linux32文件夹(也可以自定目录),并修改权限为777:打开终端输入$sudo chmod 777adb QtADB aapt3、我的手机是HTC G12,连接手机,运行lsusb命令,找到手机所在的那一行:

如我的手机是最后一行,记住ID后面的数字,即0bb4。4在终端中执行下列命令:$sudo gedit/etc/udev/rules.d/51-Android.rules创建文件,添加如下内容(不同厂商的标识不一样,请按照自己的手机更改,):#IncredibleSUBSYSTEM=="usb", SYSFS{"HighTech Computer Corp."}==" 0bb4", MODE="0666", OWNER="<gong>" (OWNER可以不写,据说系统版本是Ubuntu10.04要这样写)或写入内容为:#Incredible SUBSYSTEM=="usb",ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ffc",MODE="0666", OWNER="<gong>" (据说系统版本是Ubuntu 10.10和11.10要这样写)

我是用的是Ubuntu 12.04 LTS版本,没有添加这个文件也可以正常识别手机,然后要给这个文件增加权限(只加上读的权限也可以):$sudo chmod a+rx /etc/udev/rules.d/51-android.rules重启udev,执行以下命令:sudo /etc/init.d/udevrestart #如过版本不对不能运行这个命令的话,重启电脑进入Linux系统也行,Ubuntu 12.04无需执行此命令。5、在终端中cd切换到解压的3个文件的目录QtADB_0.8.1_linux32文件夹下,下依次执行以下命令$sudo ./adb kill-server$sudo ./adb start-server #必须以管理员身份执行,不然无法读取设备记住,一定要加sudo来执行这些命令,才能显示出当前连接到电脑的android设备 ^_^

如果未使用sudo来执行这写命令就会出现以下信息提示:

有了上边的“HT13PTJ15264 device”信息,QtADB就可以正常连接手机了。6、执行QtADB就可以了:$./QtADB

没有连接网络的话,机器会报错的,但不影响程序的连接管理功能使用。

如果需要管理短信的功能,则需要在手机上安装此软件:QtADB.apk。attp这个软件基本用不上,当需要自己将文件打包成APK文件时,才会用的上。7、每次使用的时候都要切换目录,比较烦麻烦,可以设置环境,在~/.bashrc最后添加上PATH=$PATH:/home/gong/QtADB_0.8.1_linux32,这个文件只对当前用户有效。如需要sudo执行的文件,则需要执行visudo,在里边的路径里添加所需要的路径。或者自己编写一个脚本,在里边写好要执行路径及命令,使用的时候执行一下,就可以使用了。在文件夹里,双击鼠标QtADB也可以运行。

至此,手机跟电脑的网络连接已经打通,理论上他们之间已经可以互相传数据。当然使用手机终端ssh和ftp也可以实现设备间的数据传输,也很方便。二、Android手机通过USB数据线共享,访问Internet网络既然Android手机通过USB数据线,可以共享电脑的网络,那么,在Linux下,也应该可以实现,那就实验一下吧!1、连手机时选internet共享或internet传输。这个的不足之处是,internet共享要求手机能上网; internet传输手机会搜索电脑端的软件,linux下没有这软件,所以在几分钟后连接就会被关掉,因而这些办法没有实用价值,那就需要我们自己解决这个问题。1、手机需要安装虚拟终端和busybox,虚拟终端可以让我们在手机中键入命令,但功能有限,busybox提供了更多的系统所不支持的命令,弥补了虚拟终端的缺陷。在手机的虚拟终端中键入命令:#echo 6 >/sys/devices/platform/msm_hsusb/usb_function_switch这样激活的usb0网卡简单可靠,这个命令要有root权限才起作用,电脑端的网卡就激活了。

这时候,电脑中就多了一个网络连接,Wiredconnection2如图:

3、使用netcfg命令查看手机中的usb0网卡有没有激活,运行netcfg,看看有没有以下信息:usb0 up 192.168.99.184 255.255.255.255.0 0x00001043如果没有执行#netcfg usb0 up看到usb0 up,说明就手机端的usb0网卡已经激活打开了。4、电脑端如果没有获取到IP地址就用命令dhclient获取一下,或自己设置一下,与手机设置成同一网段5、在手机中键入busybox ifconfig就可以看到IP地址,我的为192.168.99.184然后进行测试,用电脑ping 手机的ip,同时用手机ping电脑的ip,都通了就没有问题了。

在电脑中开启NAT功能$sudo echo 1>/proc/sys/net/ipv4/ip_forward然后就可以享用高速的以太网了,进行网上冲浪了。三、手机共享电脑的网络成功了,那就在研究一下电脑的共享手机的网络吧!这才是我要研究的重点,因为这是我最需要的功能。我上课的教室里没有连接外网,只能进行局域网访问。教室中能搜所到无线网,但学习用的主机却没有无线网卡,所以无法享用的、这份免费的大餐。没有外网,是多么让人郁闷的一件事啊,那就自己创造一个上网的条件吧!买一个无线网卡有点不值得,用的时候不多,毕竟移动设备基本都自带wif模块。我的HTC G12可以上无线网,哈哈,那就把它变成电脑的无线网卡吧!1、方法和上边的差不多,手机默认支持Windows与mac os,不能使用以上设置,那就自己手动激活吧,在手机端输入:#echo 6 >/sys/devices/platform/msm_hsusb/usb_function_switch2、然后激活手机端的USB网卡,输入以下命令:#netcfg usb0 up3、在手机中开启NAT功能$sudo echo 1>/proc/sys/net/ipv4/ip_forward4、电脑端设置如果没有获取到IP地址,执行sudo dhclient usb0,给usb0网卡申请IP,我这里得到的是192.168.42.74,手动设置一下也可以。测试一下,手机与电脑能不能连通,有时候要手动添加一下路由表才可以上网。然后电脑就可以享用这免费的WIFI了,折腾了小半天,原来是这么回事。有内网和WIFI外网的话,就非常好用,机子里面的网卡上内网,安卓手机当无线网卡上外网,互相不影响,又完全分开。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐