adb无线调试连接后能关闭手机关闭开发者选项项里的usb调试吗

焦油, 积分 129, 距离下一级还需 71 积分
焦油, 积分 129, 距离下一级还需 71 积分
焦油, 积分 129, 距离下一级还需 71 积分
主题 : 1|帖子 : 28|积分 : 129
本帖最后由 Uzmin_Tid 于
00:53 编辑
这个教程将引导你解决Adb无法连接的种种问题
请由A到E的顺序来阅读这份文档,当然,如果你尝试过前面的解决方案但是无效或是帮助文件让你这么做了,可以直接查阅下一条
红色字体:代表这是你要注意的地方
蓝色字体:代表这是个可以点击的网络连接
绿色字体:代表这是提示性文字
灰色斜体字 :代表在实际操作中,这个位置要填写一些其他的数据
所有教程都建立在你打开了USB调试模式的前提下!
A) 情况简明:“第一次就无法连接”(就是电脑需要安装驱动)
适用于:刚刚购买到手机以及从未用电脑连接你的1+的用户 (或者是手机不出现Usb调试认证的情况)
首先,请安装驱动,在处下载驱动并安装。(在安时如出现来自Windows的警告窗口,请选择“仍然继续”)
安装后,重启(电脑)再试一下。(请先在任务管理器结束所有&adb.exe&)
B)&&情况简明:“驱动正常,还是无法连接”
这种问题最常见于默认的ColorOS中,以下是解决方案(如果你不是ColorOS,请看第E条)
1.把手机的下拉框拖下来
2.在“文件传输选择”中选择“传照片”(默认为”传文件“)
3.再次测试Adb(请先在任务管理器结束所有&adb.exe&)
(这个非常有效)
C:还是无法连接?怎么办?!
这种情况常见于那些启用了各种各样的“手机管家”&手机助手&“豌豆荚”等第三方程序的电脑上
0.先把电脑里那些手机助手什么的关闭,或者是在设置里禁用了再关闭
1.首先进入任务管理器,转到进程一栏
2.选择显示所有用户的进程
3.找到一切按有Adb字样的程序,结束它们。
4.按下Win+R键 输入Cmd 回车 。输入& &&&Netstat -a -n -o|findstr “5037”
(上面的命令从N这个字母开始,到“ 这个标点结束)
5.看看还有没有进程占用着Adb的门户。如果有, 那么记录下Cmd中那行的最后一组数字(通常为4位数)
6.接着输入TASKKILL /PID把我替换成刚才的数字
<font color="#.再试试吧!(请先在任务管理器结束所有&adb.exe&)
D:实在不行?修改Adb_usb.ini
1.打开文件管理器进入到 %HOMEPATH%\.android 中2. 右键“我的电脑” ---管 ---找到里面的“设备管理器” --选择android设备,找到你的1+,选择“详细信息”---在下拉框中找到硬件ID
3.记录硬件id那一行中 Vid_&&后面跟着的4个字母或数字混合而成的id
4.在1中的目录中新建一个文件 叫做adb_usb.ini (注意扩展名,在Windows中的设置让拓展名显示!)
(你可以先新建一个文本文档,再把它命名为 adb_usb.ini)
5.在刚才的文件中,输入 0x你刚才的硬件id ( 如我的id是 4A36,那么我就要输入 0x4A36)
<font color="#.再试试吧!(请先在任务管理器结束所有&adb.exe&)
E:或者。。。不走常规路!
适用于那些CMmod在首次连接时不出现Adb认证窗口的情况。(或者其他什么情况,这个方法几乎适用于全部操作系统和手机)
先决条件:电脑和手机在同一网路下,并且可以互相访问,并且手机支持网络调试功能(重要!)。
0.你可以拔掉电脑连接手机的Usb线。
1.打开手机中的”网络调试“开关
2.在cmd中输入 adb connect 手机的ip& &(手机的ip可以在系统信息中找到,要手机和电脑连接同一路由器)
<font color="#.手机上出现Adb认证窗口,选择”永远同意“(你也可以不选)并确定。
<font color="#.成功后就可以直接输入指令
希望以上教程能够解答你的疑惑,这是本人亲自整理的一个解决方案。如有错漏,请站出来指正。
对了,你知道吗?Andriod的机器,如果在拨号盘中输入 *# 会重置你的手机(包括外置存储器)! 别去试这个,真的会重置的。
<p id="rate_2979" onmouseover="showTip(this)" tip="&加油 + 1
<p id="rate_525" onmouseover="showTip(this)" tip="很给力!&加油 + 1
<p id="rate_520" onmouseover="showTip(this)" tip="&加油 + 1
<p id="rate_94" onmouseover="showTip(this)" tip="赞一个!&加油 + 5
焦油, 积分 129, 距离下一级还需 71 积分
焦油, 积分 129, 距离下一级还需 71 积分
焦油, 积分 129, 距离下一级还需 71 积分
主题 : 1|帖子 : 28|积分 : 129
如果有问题可以在帖内提
焦油, 积分 81, 距离下一级还需 119 积分
焦油, 积分 81, 距离下一级还需 119 积分
焦油, 积分 81, 距离下一级还需 119 积分
主题 : 1|帖子 : 47|积分 : 81
用工具包root手机一直在fastboot界面啊
焦油, 积分 81, 距离下一级还需 119 积分
焦油, 积分 81, 距离下一级还需 119 积分
焦油, 积分 81, 距离下一级还需 119 积分
主题 : 1|帖子 : 47|积分 : 81
recovery下也不会刷啊
掺水油, 积分 404, 距离下一级还需 96 积分
掺水油, 积分 404, 距离下一级还需 96 积分
掺水油, 积分 404, 距离下一级还需 96 积分
主题 : 18|帖子 : 112|积分 : 404
都不行。。。。
焦油, 积分 129, 距离下一级还需 71 积分
焦油, 积分 129, 距离下一级还需 71 积分
焦油, 积分 129, 距离下一级还需 71 积分
主题 : 1|帖子 : 28|积分 : 129
recovery下也不会刷啊
1.请确认你用的是第三方REcovery()
2.确认的方法是看看Recovey是否是按钮型而不是文字型(按钮型的是原厂的Recovery,无法使用)
3.如果在刷入Reovery的时候卡在Fastboot。请联系我,我会吧我修改过的脚本发布出来(该问题目前只存在与理论)
4.在刷入第三方Recovery后,请到()下载Recovery版本的SU包 。并手动刷入。
柴油, 积分 6084, 距离下一级还需 3916 积分
柴油, 积分 6084, 距离下一级还需 3916 积分
柴油, 积分 6084, 距离下一级还需 3916 积分
主题 : 14|帖子 : 796|积分 : 6084
本帖最后由 TaboH 于
00:38 编辑
试试看!谢谢!
步驟B 真的有效,感謝!
---来自一加社区手机客户端
柴油, 积分 8346, 距离下一级还需 1654 积分
柴油, 积分 8346, 距离下一级还需 1654 积分
柴油, 积分 8346, 距离下一级还需 1654 积分
主题 : 12|帖子 : 3269|积分 : 8346
大神,厉害啊~
润滑油, 积分 1279, 距离下一级还需 721 积分
润滑油, 积分 1279, 距离下一级还需 721 积分
润滑油, 积分 1279, 距离下一级还需 721 积分
主题 : 3|帖子 : 292|积分 : 1279
步骤B果然神一般的存在
原油, 积分 18, 距离下一级还需 32 积分
原油, 积分 18, 距离下一级还需 32 积分
原油, 积分 18, 距离下一级还需 32 积分
主题 : 0|帖子 : 3|积分 : 18
hao1好啊,顶
一加手机1勋章
在线小达人
社区上线100天纪念勋章
一周年 纪念勋章
一加一周年纪念勋章
羊年纪念勋章
一加手机2勋章
猴年纪念勋章 猴年猴赛雷
马年纪念勋章 马上啥都有
元旦纪念勋章
圣诞节 勋章
圣诞节专属勋章
深圳市万普拉斯科技有限公司 版权所有(润滑油, 积分 1704, 距离下一级还需 296 积分
润滑油, 积分 1704, 距离下一级还需 296 积分
润滑油, 积分 1704, 距离下一级还需 296 积分
主题 : 13|帖子 : 212|积分 : 1704
本帖最后由 丶弹蛋蛋 于
07:59 编辑
机器昨天刚到,今天就迫不及待的要开始折腾了!
结果就杯具了!
1.驱动已经安装好了
QQ图片37.jpg (46.63 KB, 下载次数: 687)
驱动安装好了
18:30 上传
2.USB调试模式也开了!
QQ图片32.jpg (175.33 KB, 下载次数: 600)
调试开启了
18:30 上传
3.结果还是不行啊!
QQ图片15.png (27.74 KB, 下载次数: 668)
还是不行了
18:30 上传
已经折腾了我一天了!一点头绪都没有!
也没有找到几个跟我一样杯具的哥们!
以上问题有了最好的解决办法。
①手机连接电脑;
②打开电脑设备管理器,删除ADB驱动,删除便捷设备驱动;
③拔除手机,手机不要连接电脑;
④在电脑上用“一加万能工具包”安装XP/WIN7驱动;在安装ADB驱动;
⑤手机连接电脑,让手机自动搜索安装驱动。
一套流程后,问题解决!
<p id="rate_006" onmouseover="showTip(this)" tip="赞一个!&加油 + 2
<p id="rate_025" onmouseover="showTip(this)" tip="很给力!&加油 + 2
<p id="rate_809" onmouseover="showTip(this)" tip="很给力!&加油 + 1
<p id="rate_626" onmouseover="showTip(this)" tip="真的解决问题了,感谢分享经验!!.&加油 + 1
<p id="rate_146" onmouseover="showTip(this)" tip="感谢分享&加油 + 4
真的解决问题了,感谢分享经验!!.
93#汽油, 积分 18003, 距离下一级还需 1997 积分
93#汽油, 积分 18003, 距离下一级还需 1997 积分
93#汽油, 积分 18003, 距离下一级还需 1997 积分
主题 : 54|帖子 : 5914|积分 : 18003
神机,顶下。。。。
<p id="rate_247" onmouseover="showTip(this)" tip="神马都是浮云&加油 + 1
神马都是浮云
柴油, 积分 9617, 距离下一级还需 383 积分
柴油, 积分 9617, 距离下一级还需 383 积分
柴油, 积分 9617, 距离下一级还需 383 积分
主题 : 21|帖子 : 2239|积分 : 9617
rec的驱动。。。?装工具包的驱动
<p id="rate_247" onmouseover="showTip(this)" tip="神马都是浮云&加油 + 1
神马都是浮云
润滑油, 积分 1704, 距离下一级还需 296 积分
润滑油, 积分 1704, 距离下一级还需 296 积分
润滑油, 积分 1704, 距离下一级还需 296 积分
主题 : 13|帖子 : 212|积分 : 1704
rec的驱动。。。?装工具包的驱动
rec什么驱动,求指导
主题 : 82|帖子 : 12659|积分 : 63836
连接的时候,手机上会有一个提示框,需要打勾确定的。你遇到了么?
柴油, 积分 6641, 距离下一级还需 3359 积分
柴油, 积分 6641, 距离下一级还需 3359 积分
柴油, 积分 6641, 距离下一级还需 3359 积分
主题 : 2|帖子 : 411|积分 : 6641
本帖最后由 yijiaxinshou 于
18:37 编辑
晕,同样的问题,没碰到计算机MAC那个提示框。就是连不上。电脑倒是来回折腾说发现新的硬件。
搜索后发现,要用USB传图片模式,不能用USB传文件模式。提示框终于出来了!
润滑油, 积分 1002, 距离下一级还需 998 积分
润滑油, 积分 1002, 距离下一级还需 998 积分
润滑油, 积分 1002, 距离下一级还需 998 积分
主题 : 2|帖子 : 262|积分 : 1002
同样的问题,但是如果选择卡刷,也会蹦出ADB驱动错误,没有解决。
焦油, 积分 100, 距离下一级还需 100 积分
焦油, 积分 100, 距离下一级还需 100 积分
焦油, 积分 100, 距离下一级还需 100 积分
主题 : 0|帖子 : 31|积分 : 100
我也出现了同样的问题,最后结果是原先的Galaxy Nexus的驱动没有卸载,所以新的adb其实一直没有装成功,把原来的手机接上,卸载了便携设备驱动和android驱动,之后再 让找楼主 说的重装一遍就对了!
焦油, 积分 62, 距离下一级还需 138 积分
焦油, 积分 62, 距离下一级还需 138 积分
焦油, 积分 62, 距离下一级还需 138 积分
主题 : 0|帖子 : 36|积分 : 62
有可能是adb.exe被占用,把各种手机助手卸载一遍,就可以解决了
焦油, 积分 59, 距离下一级还需 141 积分
焦油, 积分 59, 距离下一级还需 141 积分
焦油, 积分 59, 距离下一级还需 141 积分
主题 : 1|帖子 : 46|积分 : 59
该用户从未签到
用你的办法已经解决,非常感谢。
元旦纪念勋章
一加手机1勋章
在线小达人
社区上线100天纪念勋章
一周年 纪念勋章
一加一周年纪念勋章
羊年纪念勋章
圣诞节 勋章
圣诞节专属勋章
马年纪念勋章 马上啥都有
一加手机X勋章
一加手机2勋章
国庆节 纪念勋章
国庆节签到活动勋章
二周年 纪念勋章
一加二周年纪念勋章
2014世界杯 纪念勋章
2014世界杯连续签到32天,给你一个证明自己是疯狂球迷的机会
ROM征名入围 纪念勋章
一加ROM征名活动入围纪念勋章
我是加油GG
祝加油GG男生节快乐
鸡年纪念勋章
猴年纪念勋章 猴年猴赛雷
深圳市万普拉斯科技有限公司 版权所有(Android系统移植与调试之-------)如何添加一个adb wifi无线调试的功能【开发者选项】-【Wifi调试】
首先弄懂怎么设置adb wifi无线调试的功能,如下所示。
1. 手机端开启adb tcp连接端口
:/$setprop service.adb.tcp.port 5555
:/$stop adbd
:/$start adbd
其中setprop是用来设置属性的,这里不需要root权限,su即可。可通过adb shell设置,亦可通过手机上安装的 terminal设置。
2. 电脑端的设置和使用
连接adb,其中phone_ipaddress和portnumber是指手机的ip和前面设置的监听端口号(如5555)
adb connect phone_ipaddress:portnumber
直接adb shell或adb -s 设备shell连接设备
如若要断开则如下:
adb disconnect phone_ipaddress:port
但是每次这样的去设置很繁琐,所以直接在设置中做一个开关就把手机端的设置做好,如下所示:
一、打开开关,并连接Wifi
二、打开开关,没有连接Wifi
三、未打开开关
这样就可以直接进行adb wifi调试了,手机端就不用每次都先用USB调试去设置修改的属性,才能激活adb wifi调试。
======================================================================================================
下面来具体说说实现的思路:
第一步:在【设置】--&【开发者选项】中做一个类似于【USB调试】的开关【Wifi调试】
第二步:【Wifi调试】开关打开就激活监听5555端口,用来进行adb wifi调试,【Wifi调试】开关关闭就不监听5555端口,这样就不能进行adb wifi调试
第三步:在第二步中打开关闭【Wifi调试】开关的时候,调用相应的接口进行设置
第四步:将第三步中要调用的接口写好
1、先在布局中加入该开关
首先找到布局文件,packages/apps/Settings/res/xml/development_prefs.xml,找到【USB调试】开关的相应代码,然后再里面加一个【Wifi调试】开关,代码如下:
&SwitchPreference
android:key=&enable_adb&
android:title=&@string/enable_adb&
android:summary=&@string/enable_adb_summary&/&&!-- added by ouyang start --&&SwitchPreference
android:key=&enable_wifi_adb&
android:title=&@string/enable_wifi_adb&
android:summary=&@string/enable_wifi_adb_summary&/& &!-- added by ouyang end --&上面代码中,第一个代码是【USB调试】开关的代码,第二个是我加的【Wifi调试】开关的代码,然后为什么的字符串做相应的国际化操作,代码如下:
packages/apps/Settings/res/values-zh-rCN/strings.xml 中加入:
&!-- added by ouyang start
&string name=&enable_wifi_adb&&Wifi调试&/string&
&string name=&enable_wifi_adb_openwifi&&Wifi没连接,请连接wifi&/string&
&string name=&enable_wifi_adb_summary&&连接Wifi后启用调试模式&/string&
&string name=&enable_wifi_adb_connected_summary&&Wifi调试已打开,在电脑端你可以输入以下命令进行调试:/n adb connect &xliff:g id=&ip_address&&%1$s&/xliff:g&:5555&/string&
&!-- added by ouyang end
packages/apps/Settings/res/values/strings.xml 中加入:
&!-- added by ouyang start
&string name=&enable_wifi_adb&&Wifi debugging&/string&
&string name=&enable_wifi_adb_openwifi&&Wifi is not connected,please turn wifi on and connect it&/string&
&string name=&enable_wifi_adb_summary&&Debug mode when Wifi is connected&/string&
&string name=&enable_wifi_adb_connected_summary&&adb wifi is on,from your computer run:/n adb connect &xliff:g id=&ip_address&&%1$s&/xliff:g&:5555&/string&
&!-- added by ouyang end
2、在packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java文件中,对刚才加入的【Wifi调试】开关进行相关的逻辑处理。
首先先定义开关的几个变量,如下:
//add by ouyang
private static final String ENABLE_WIFI_ADB = &enable_wifi_adb&;
private static final String ADB_WIFI_ENABLED_KEY = &ADB_WIFI_ENABLED&;
private static SwitchPreference mEnableWifiA
//add by ouyang
然后再onCreate()方法中初始化【Wifi调试】开关,如下:
mEnableAdb = findAndInitSwitchPref(ENABLE_ADB);
//add by ouyang
mEnableWifiAdb = findAndInitSwitchPref(ENABLE_WIFI_ADB);
然后在onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)方法中对【Wifi调试】开关的打开和关闭操作做逻辑处理。
if (preference == mEnableAdb) {
if (mEnableAdb.isChecked()) {
mDialogClicked =
if (mAdbDialog != null) dismissDialogs();
mAdbDialog = new AlertDialog.Builder(getActivity()).setMessage(
getActivity().getResources().getString(R.string.adb_warning_message))
.setTitle(R.string.adb_warning_title)
.setPositiveButton(android.R.string.yes, this)
.setNegativeButton(android.R.string.no, this)
mAdbDialog.setOnDismissListener(this);
Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.ADB_ENABLED, 0);
mVerifyAppsOverUsb.setEnabled(false);
mVerifyAppsOverUsb.setChecked(false);
/// M: ALPS, The &Developer options& status is opened.
onPreferenceTreeClick(null, mVerifyAppsOverUsb);
updateBugreportOptions();
//add by ouyang
else if (preference == mEnableWifiAdb) {
if (mEnableWifiAdb.isChecked()) {
Settings.Global.putInt(getActivity().getContentResolver(),ADB_WIFI_ENABLED_KEY, 1);
android.os.SystemProperties.set(&sys.connect.adb.wifi&,&1&);
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ipAddressString = (ipAddress & 0xFF ) + &.& +((ipAddress && 8 ) & 0xFF) + &.& +
((ipAddress && 16 ) & 0xFF) + &.& +( ipAddress && 24 & 0xFF) ;
Log.i(TAG, &ipAddress=&+ipAddress);
Log.i(TAG, &ipAddressString=&+ipAddressString);
if (&0.0.0.0&.equals(ipAddressString)) {
mEnableWifiAdb.setSummary(getResources().getString(R.string.enable_wifi_adb_openwifi));
mEnableWifiAdb.setSummary(getResources().
getString(R.string.enable_wifi_adb_connected_summary,ipAddressString));
Settings.Global.putInt(getActivity().getContentResolver(),ADB_WIFI_ENABLED_KEY, 0);
android.os.SystemProperties.set(&sys.connect.adb.wifi&,&0&);
mEnableWifiAdb.setSummary(getResources().getString(R.string.enable_wifi_adb_summary));
//add by ouyang
上面的代码主要是,
当【Wifi调试】开关打开的时候,保存一个原来表示该【Wifi调试】开关打开关闭的状态的值为1,然后调用接口android.os.SystemProperties.set(&sys.connect.adb.wifi&,&1&);如果wifi这个时候打开就显示相应的adb wifi命令,如ip地址为192.168.107.201的时候就显示,&Wifi调试已打开,在电脑端你可以输入以下命令进行调试:adb connect 192.168.107.201:5555&;如果wifi为打开,就提示&Wifi没连接,请连接wifi&
当【Wifi调试】开关关闭的时候,保存一个原来表示该【Wifi调试】开关打开关闭的状态的值为0,然后调用接口android.os.SystemProperties.set(&sys.connect.adb.wifi&,&0&);
ADB_WIFI_ENABLED_KEY这个状态值,在进入该Activity的时候,如果上次打开了【Wifi调试】开关,那么下次进来的时候就要显示【Wifi调试】开关是打开状态,否则是关闭状态。下面说说ADB_WIFI_ENABLED_KEY这个状态值的相关代码,如下:
在onResume()方法中,加入下面代码:
//add by ouyang
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
getActivity().registerReceiver(wifiBroadcastReceiver, filter);
boolean isAdbWifiChecked = Settings.Global.getInt(getActivity().getContentResolver(),ADB_WIFI_ENABLED_KEY, 0) != 0;
mEnableWifiAdb.setChecked(isAdbWifiChecked);
Log.i(TAG, &isAdbWifiChecked:& + isAdbWifiChecked);
//add by ouyang
代码的意思是,进入该Activity就动态的注册一个广播,用来监听Wifi的状态改变的,然后来动态的显示Android手机获取的IP地址。然后根据ADB_WIFI_ENABLED_KEY这个状态值来显示【Wifi调试】开关的打开关闭状态。
在updateAllOptions()方法中,也要去做下处理,代码如下:
/// M: CR ALPS. Lock and unlock screen, the &USB debugging& is unchecked.
boolean isChecked = (mAdbDialog != null && mAdbDialog.isShowing()) ? true :
(Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) != 0);
updateSwitchPreference(mEnableAdb, isChecked);
//add by ouyang
boolean isAdbWifiChecked = Settings.Global.getInt(cr,ADB_WIFI_ENABLED_KEY, 0) != 0;
updateSwitchPreference(mEnableWifiAdb, isAdbWifiChecked);
//add by ouyang
/// M: update usb preference again
mExt.customUSBPreference(mEnableAdb);
//add by ouyang
mExt.customUSBPreference(mEnableWifiAdb);
下面来说说上面动态注册的广播,代码如下:
BroadcastReceiver wifiBroadcastReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String TAG = &wifiBroadcastReceiver&;
boolean isAdbWifiChecked = mEnableWifiAdb.isChecked();
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo net = connectivityManager.getActiveNetworkInfo();
if (net == null) {
Log.i(TAG, &No net type&);
if (isAdbWifiChecked) {
mEnableWifiAdb.setSummary(getResources()
.getString(R.string.enable_wifi_adb_openwifi));
Log.i(TAG, &Net Type:& + net.getTypeName());
State wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
Log.i(TAG, &wifi connected&);
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ipAddressString = (ipAddress & 0xFF) + &.& + ((ipAddress && 8) & 0xFF) + &.&
+ ((ipAddress && 16) & 0xFF) + &.& + (ipAddress && 24 & 0xFF);
if (isAdbWifiChecked) {
mEnableWifiAdb.setSummary(
getResources().getString(
R.string.enable_wifi_adb_connected_summary, ipAddressString));
Log.i(TAG, getResources().getString(
R.string.enable_wifi_adb_connected_summary, ipAddressString));
} else if (wifi == State.DISCONNECTED || wifi == State.DISCONNECTING) {
Log.i(TAG, &wifi disconnected&);
if (isAdbWifiChecked) {
mEnableWifiAdb.setSummary(
getResources().getString(R.string.enable_wifi_adb_openwifi));
Log.i(TAG, getResources().getString(
R.string.enable_wifi_adb_connected_summary));
上面的代码主要是当【Wifi调试】开关打开的时候,来用动态表示Android手机的Wifi连接状态,如果wifi未连接,就提示&Wifi没连接,请连接wifi&,如果Wifi连接了,就动态的将从DHCP服务器获取的IP地址显示出来,如ip地址为192.168.107.201的时候就显示,&Wifi调试已打开,在电脑端你可以输入以下命令进行调试:adb connect 192.168.107.201:5555&
======================================================================================================
好吧,在packages/apps/Settings/,即Settings APP层面的代码写完了,下面来说说调用的两个接口怎么实现。
android.os.SystemProperties.set(&sys.connect.adb.wifi&, &1&);
android.os.SystemProperties.set(&sys.connect.adb.wifi&, &0&);
首先找到frameworks/base/core/java/android/os/SystemProperties.java文件,找到set(String key, String val)方法,代码如下,发现调用了native_set(key, val)方法。
* Set the value for the given key.
* @throws IllegalArgumentException if the key exceeds 32 characters
* @throws IllegalArgumentException if the value exceeds 92 characters
public static void set(String key, String val) {
if (key.length() & PROP_NAME_MAX) {
throw new IllegalArgumentException(&key.length & & + PROP_NAME_MAX);
if (val != null && val.length() & PROP_VALUE_MAX) {
throw new IllegalArgumentException(&val.length & & +
PROP_VALUE_MAX);
native_set(key, val);
native_set(key, val)方法定义如下:
private static native void native_set(String key, String def);
该接口类在初始化运行环境中注册对应的cpp接口android_os_SystemProperties.cpp,实际操作通过JNI调用的是cpp文件对应的接口:
frameworks/base/core/jni/AndroidRuntime.cpp
namespace android {
extern int register_android_os_SystemProperties(JNIEnv *env);
frameworks/base/core/jni/android_os_SystemProperties.cpp
static void SystemProperties_set(JNIEnv *env, jobject clazz,
jstring keyJ, jstring valJ)
const char*
const char*
if (keyJ == NULL) {
jniThrowNullPointerException(env, &key must not be null.&);
key = env-&GetStringUTFChars(keyJ, NULL);
if (valJ == NULL) {
/* NULL pointer not allowed here */
val = env-&GetStringUTFChars(valJ, NULL);
err = property_set(key, val);
env-&ReleaseStringUTFChars(keyJ, key);
if (valJ != NULL) {
env-&ReleaseStringUTFChars(valJ, val);
if (err & 0) {
ALOGE(&setproperty key=%s value=%s err=%d\n&, key, val, err);
jniThrowException(env, &java/lang/RuntimeException&,
&failed to set system property&);
好了,关于该android.os.SystemProperties.set()方法的分析,可以参考
https://blog.csdn.net/ameyume/article/details/8056492
https://www.blogjava.net/anymobile/articles/301989.html
下面直接写下面两个接口的实现
android.os.SystemProperties.set(&sys.connect.adb.wifi&, &1&);
android.os.SystemProperties.set(&sys.connect.adb.wifi&, &0&);
在device/lentek/lentk6735_66t_l1/E580/init.rc文件中加入下面的代码,其中E580是项目的名称。
#added by ouyang start connect adb with wifi
on property:sys.connect.adb.wifi=1
setprop service.adb.tcp.port 5555
start adbd
on property:sys.connect.adb.wifi=0
setprop service.adb.tcp.port &&
start adbd
#added by ouyang end connect adb with wifi
上面代码就是当调用
android.os.SystemProperties.set(&sys.connect.adb.wifi&, &1&);和sys.connect.adb.wifiandroid.os.SystemProperties.set(&sys.connect.adb.wifi&, &0&);接口的时候的具体实现,
即&sys.connect.adb.wifi&属性设置为1的时候,监听5555端口,
&sys.connect.adb.wifi&属性设置为0的时候,不监听任何端口
====================================================================================
好了,下面来再一次测一测该功能怎么样,重新打开wifi,重新打开【Wifi调试】开关,显示如下:
可以看出来,此时Android手机的IP地址是192.168.107.168,因此下面在PC端测试看是否可以用adb wifi无线调试,使用命令adb connect 192.168.107.168连接,adb disconnect 192.168.107.168断开连接,如下图所示:
C:\Documents and Settings\Administrator&adb connect 192.168.107.168
connected to 192.168.107.168:5555
C:\Documents and Settings\Administrator&adb shell
shell@lentk6735_66t_l1:/ $ ll
drwxr-xr-x root
10:15 acct
drwxrwx--- system
19:01 cache
lrwxrwxrwx root
08:00 charger -& /sbin/healthd
dr-x------ root
10:15 config
drwxr-xr-x root
10:15 custom
lrwxrwxrwx root
10:15 d -& /sys/kernel/debug
drwxrwx--x system
10:16 data
-rw-r--r-- root
08:00 default.prop
drwxr-xr-x root
-rw-r--r-- root
08:00 enableswap.sh
lrwxrwxrwx root
10:15 etc -& /system/etc
-rw-r--r-- root
-01 08:00 factory_init.project.rc
-rw-r--r-- root
-01-01 08:00 factory_init.rc
-rw-r--r-- root
-01-01 08:00 file_contexts
-rw-r----- root
-01 08:00 fstab.mt6735
-rwxr-x--- root
0-01-01 08:00 init
-rwxr-x--- root
08:00 init.aee.rc
-rwxr-x--- root
-01 08:00 init.c2k.rc
-rwxr-x--- root
-01 08:00 init.environ.rc
-rwxr-x--- root
-01 08:00 init.modem.rc
-rwxr-x--- root
-01-01 08:00 init.mt6735.rc
-rwxr-x--- root
-01-01 08:00 init.mt6735.usb.rc
-rwxr-x--- root
08:00 init.no_ssd.rc
-rwxr-x--- root
-01 08:00 init.project.rc
-rwxr-x--- root
-01-01 08:00 init.rc
-rwxr-x--- root
08:00 init.recovery.mt6735.rc
-rwxr-x--- root
-01 08:00 init.trace.rc
-rwxr-x--- root
-01 08:00 init.usb.rc
-rwxr-x--- root
08:00 init.xlog.rc
-rwxr-x--- root
08:00 init.zygote32.rc
-rwxr-x--- root
08:00 init.zygote64_32.rc
-rw-r--r-- root
-01 08:00 meta_init.c2k.rc
-rw-r--r-- root
-01 08:00 meta_init.modem.rc
-rw-r--r-- root
-01 08:00 meta_init.project.rc
-rw-r--r-- root
-01-01 08:00 meta_init.rc
drwxrwxr-x root
drwxrws--- root
18:59 nvdata
drwxrwx--x system
10:15 persist
dr-xr-xr-x root
08:00 proc
-rw-r--r-- root
-01 08:00 property_contexts
drwxrwx--- system
18:59 protect_f
drwxrwx--- system
18:59 protect_s
drwx------ root
18:05 root
drwxr-x--- root
08:00 sbin
lrwxrwxrwx root
10:15 sdcard -& /storage/sdcard0
-rw-r--r-- root
08:00 seapp_contexts
-rw-r--r-- root
08:00 selinux_version
-rw-r--r-- root
0-01-01 08:00 sepolicy
-rw-r--r-- root
-01-01 08:00 service_contexts
drwxr-x--x root
10:15 storage
dr-xr-xr-x root
drwxr-xr-x root
08:00 system
-rw-r--r-- root
-01 08:00 ueventd.rc
lrwxrwxrwx root
10:15 vendor -& /system/vendor
shell@lentk6735_66t_l1:/ $ exit
C:\Documents and Settings\Administrator&adb disconnect 192.168.107.168
发现可以正常的进行adb wifi 无线调试了。将【Wifi调试】开关【Wifi调试】开关关闭,再去连接的话,就会无法连接了。如下所示:
C:\Documents and Settings\Administrator&adb connect 192.168.107.168
unable to connect to 192.168.107.168:5555
C:\Documents and Settings\Administrator&}

我要回帖

更多关于 小米5关闭开发者选项 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信