精华内容
下载资源
问答
  • 1.当USB连接安装设备时,USB连接流程 onPreferenceChange -> DevelopmentSettings.java 点击后响应 writeUsbConfigurationOption -> manager.setCurrentFunction -> setCurrentFunction -> ...

    1.当USB连接安装设备时,USB连接流程

     onPreferenceChange -> DevelopmentSettings.java 点击后响应
    	writeUsbConfigurationOption ->
    	  manager.setCurrentFunction ->
    		setCurrentFunction -> UsbManager.java
    		  mService.setCurrentFunction ->
    			setCurrentFunction -> UsbService.java
    			  mDeviceManager.setCurrentFunctions ->
    				setCurrentFunctions -> UsbDeviceManager.java
    				   mHandler.sendMessage -> //MSG_SET_CURRENT_FUNCTIONS
    					 handleMessage ->
    					   setEnabledFunctions ->
    						 trySetEnabledFunctions -
    展开全文
  • 因为安卓系统和手机型号的不同,USB调试所在位置稍有不同,部分机型甚至采用了隐藏设置,跑跑车这里分享了安卓系统下各种手机的USB调试模式设置教程,从此让你的电脑与手机可以自由连接。一、安卓2.1 ~ 2.3.7 系统...

    安卓手机usb调试在哪里这个经常问倒一些机友,因为安卓系统和手机型号的不同,USB调试所在位置稍有不同,部分机型甚至采用了隐藏设置,跑跑车这里分享了安卓系统下各种手机的USB调试模式设置教程,从此让你的电脑与手机可以自由连接。

    一、安卓2.1 ~ 2.3.7 系统打开USB调试模式方法

    1、点击手机Menu键(菜单键),在弹出的菜单中选择 设置(Setting), 或在应用程序中找到设置程序点击进入,然后进入设置界面的“应用程序”即可找到USB调试模式,我们勾选上即可。如下图:

    手机设置-应用程序-开发-勾选usb调试

    (手機設置-應用程序-開發-勾選usb除錯)

    (Settings-Application settings-Development-Enable Android debugging)

    0351c27c143fbb4d52d7f9831fccd335.png

    二、安卓4.0 ~ 4.1.2 系统打开USB调试模式方法

    点击手机Menu键(菜单键),在弹出的菜单中选择 设置(Setting), 或在应用程序中找到 设置 程序点击进入,进入设置界面后找到“开发人员选项”即可找到USB调试模式,我们同样勾选上即可。

    手机设置-开发人员选项-usb调试

    (設置-開發人員選項-usb除錯)

    (Settings--Developer options-USB debugging)

    2e09901223faab406d93fbcc974c779f.png

    三、安卓4.2系统以及安卓4.3,安卓4.4系统打开USB调试模式方法

    1、同样的点击手机Menu键(菜单键),在弹出的菜单中选择 设置(Setting), 或在应用程序中找到“设置 程序点击进入“ 关于手机”如下图:

    e97bdfbea257d29c8e6f8c7a0dab2c01.png

    2、然后这里需要注意的是安卓4.2的USB调试模式默认是隐藏的,我们需要连续点击七次“版本号 ”再返回“设置”菜单界面选择“开发者选项”才可以找到USB调试模式设置,如下图:

    0c76d552db92b40c510dccf152791b7f.png

    3、再点击打开右上角的开关, 即可打开USB调试模式。

    a419b4089fc63479c5bbca1d7a388701.png

    四、miui系统打开USB调试模式方法

    miui系统2.3,系统设置-安装和调试-usb调试;

    8eb99c308eb4500e105687adb84d9733.png

    miui系统4.0,设置-开发人员选项-usb调试;

    9dc90f5f697b05005888e28e88aa2b82.png

    五、乐蛙ui系统,设置-安装开发调试-USB调试;

    86e6c2ecc7aae484b8ddc0ab0358de9d.png

    六、特色机型

    部分三星机型,如I5508,在通过USB连接到电脑后,手机端提示选择“USB设置”模式,请选择“Kies”,选择此模式后相当于打开了“USB调试”开关。

    部分索爱机型,在“应用程序”界面下,有“PC Companion”的选项,勾选了此选项,就可以使用索爱官方PC套件PCCompanion进行连接,但无法同时与应用助手for Android进行连接,所以要使用手机助手之类的软件连接时,请把此项取消。

    更有部分手机系统无usb调试选项,默认即为开启。

    展开全文
  • Android 6.0 以及之后的版本,google默认设计直接配置USB连接模式为 :仅充电; 项目开发需要配置USB的 默认连接方式为:MTP 模式; 废话不多说,直接给方案,不同平台源码有少许差异,请知悉! Android 6.0 ...

     Android 各版本 设置 USB 默认连接 MTP 模式 ( Android  6.0+ ) 

     

    Android 6.0 以及之后的版本,google默认设计直接配置USB连接模式为 :仅充电;

    项目开发需要配置USB的 默认连接方式为:MTP 模式;

     

    废话不多说,直接给方案,不同平台源码有少许差异,请知悉!

     

    Android 6.0 Before

    modify /device/mediatek/common/device.mk

    # default usb function ifeq ($(strip $(MTK_MASS_STORAGE)),yes) 
    ADDITIONAL_DEFAULT_PROPERTIES += persist.sys.usb.config=mass_storage 
    //修改上面成想要的功能,如 ADDITIONAL_DEFAULT_PROPERTIES += persist.sys.usb.config=mtp
    

    Android 6.0 +

    modify   frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java。

    public class UsbDeviceManager {
                      ···省略很多代码···
            private boolean mConfigured;
            //modified in 2017-05-22 start
            //解锁数据,连接电脑,就能看到默认连接模式为MTP
            private boolean mUsbDataUnlocked = true;
            //modified in 2017-05-22 end
            private String mCurrentFunctions;
            private String mDefaultFunctions;
    
                    ······
    
             @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case MSG_UPDATE_STATE:
                        mConnected = (msg.arg1 == 1);
                        mConfigured = (msg.arg2 == 1);
                        mUsbConfigured = mConfigured;
                        if (!mConnected) {
                            //modified in 2017-05-22 start
                            //default usb connect mode as mtp
                            // When a disconnect occurs, relock access to sensitive user data
                            //断开连接的时候,保持当前连接模式,下次连接的时候还是MTP
                            mUsbDataUnlocked = true;
                            //modified in 2017-05-22 end
                        }
                        updateUsbNotification();
                        updateAdbNotification();
                        if (UsbManager.containsFunction(mCurrentFunctions,
                                UsbManager.USB_FUNCTION_ACCESSORY)) {
                            updateCurrentAccessory();
                        } else if (!mConnected) {
                            //modified  in 2017-05-22 start
                            //change default usb connect mode as mtp,do not restore
                            // 这里不恢复默认连接方式,保持保持当前的连接模式
                            setEnabledFunctions(null, true);
                            //modified  in 2017-05-22 end
                        }
                        if (mBootCompleted) {
                            updateUsbStateBroadcastIfNeeded();
                            updateUsbFunctions();
                        }
    
                          ······
        }


     

    Android 7 +

    Modify

    1.修改frameworks/base/services/usb/java/com/android/server/usb/UsbService.java

    public class UsbService extends IUsbManager.Stub {
                    ······
            final IntentFilter filter = new IntentFilter();
            filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
            filter.addAction(Intent.ACTION_USER_SWITCHED);
            filter.addAction(Intent.ACTION_USER_STOPPED);
            //add by xx in 2017-06-12 for bug 169853 start
            //注册三个广播
            filter.addAction(Intent.ACTION_USER_PRESENT);
            filter.addAction(Intent.ACTION_SCREEN_OFF);
            filter.addAction(Intent.ACTION_SCREEN_ON);
            //add by xx in 2017-06-12 for bug 169853 end
            filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
            mContext.registerReceiver(mReceiver, filter, null, null);
    
                    ······
    
        private BroadcastReceiver mReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
                final String action = intent.getAction();
                if (Intent.ACTION_USER_SWITCHED.equals(action)) {
                    setCurrentUser(userId);
                } else if (Intent.ACTION_USER_STOPPED.equals(action)) {
                    synchronized (mLock) {
                        mSettingsByUser.remove(userId);
                    }
                } else if (DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED
                        .equals(action)) {
                    if (mDeviceManager != null) {
                        mDeviceManager.updateUserRestrictions();
                    }
                //add by xx in 2017-06-12 for bug 169853 start
                //处理三个广播
                }else if (Intent.ACTION_USER_PRESENT.equals(action)) {
    
                    if (mDeviceManager != null) {
                        mDeviceManager.usbDataUnlocked(true);//这个方法系统有的
                        mDeviceManager.setUserPresent();//这个方法是添加的
                    }
                } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
                    if (mDeviceManager != null) {
                        mDeviceManager.updateScreentSate(true);//这个方法是添加的,为了更新屏幕状态
                    }
                } else if (Intent.ACTION_SCREEN_ON.equals(action)) {
                  if (mDeviceManager != null) {
                        mDeviceManager.updateScreentSate(false);//这个方法是添加的,为了更新屏幕状态
                    }
                //add by xx in 2017-06-12 for bug 169853 end
                }
            }
        };
    }


    2.接下来修改frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java

    public class UsbDeviceManager {
            ·····
        //添加两个全局变量,作为标识
        //modified by xx in 2017-06-12 for bug 169853 start
        private boolean mUserPresent = false;//用户是否结果到前台
        private boolean screenOff = false;//屏幕是否是熄屏
        private boolean changeByUser = false;//切换USB模式的时候,是这里代码切换的,还是用户点击切换的。
        //modified by xx in 2017-06-12 for bug 169853 end
    
                ·····
        //添加这两个方法,在UsbService.java中用到,更新这边的状态
        //modified by xx in 2017-06-12 for bug 169853 start
        public void setUserPresent(){
            mUserPresent = true;
        }
    
        public void updateScreentSate(boolean state){
            screenOff = state;
            if(!screenOff) {
                 mUserPresent = false;
            }
            if(mHandler != null){
                mHandler.updateUsbMode();
            }
        }
    
        public void usbDataUnlocked(){
            changeByUser  = false;
            mHandler.sendMessage(MSG_SET_USB_DATA_UNLOCKED, true);
        }
        //modified by xx in 2017-06-12 for bug 169853 end
    
                ·····
    
          //更新USB连接状态
          public void updateState(String state) {
                int connected, configured;
    
                if ("HWDISCONNECTED".equals(state)) {
                    connected = 0;
                    configured = 0;
                    mHwDisconnected = true;
                    //add by xx in 2017-08-03 for swtich usb mode start
                    changeByUser = false;
                    //add by xx in 2017-08-03 for swtich usb mode end
                } else if ("DISCONNECTED".equals(state)) {
                    connected = 0;
                    configured = 0;
                    mHwDisconnected = false;
    
                    //modified by xx in 2017-06-12 for bug 169853 start
                    //当熄屏的情况下,更新用户不在前台的标识
                    if(screenOff){
                        mUserPresent = false;
                     }
                     //modified by xxx in 2017-06-12 for bug 169853 end
    
                } else if ("CONNECTED".equals(state)) {
                    connected = 1;
                    configured = 0;
    
                        ·····
    
    
            private final class UsbHandler extends Handler { 
    
                            ·····
    
            //在收到更新USB状态的消息之后,更新USB模式,当然要根据用户是否在前台进行判断
             @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case MSG_UPDATE_STATE:
                        mConnected = (msg.arg1 == 1);
                        mConfigured = (msg.arg2 == 1);
                        mUsbConfigured = mConfigured;
                        //modified by xx in 2017-06-12 for bug 169853 start
                        //update usb state first
                        updateUsbMode();
                        if (mUserPresent && !changeByUser) {   //用户在前台的
                            mUsbDataUnlocked = true;//解锁数据,那么连接电脑就能看到连接模式为MTP了
                        }
                        //modified by xx in 2017-06-12 for bug 169853 end
    
                        if (!mConnected) {
                            // When a disconnect occurs, relock access to sensitive user data
                            mUsbDataUnlocked = false;
                        }
                        updateUsbNotification();
                        updateAdbNotification();
                        if (UsbManager.containsFunction(mCurrentFunctions,
                                UsbManager.USB_FUNCTION_ACCESSORY)) {
                            updateCurrentAccessory();
                        } else if (!mConnected) {
                        }
                                ·····//省略代码
                    case MSG_SET_USB_DATA_UNLOCKED:
                        //add by xx in 2017-08-03 for swtich usb mode start
                        if(!changeByUser && mUsbDataUnlocked) return;
                        //add by xx in 2017-08-03 for swtich usb mode end
                        setUsbDataUnlocked(msg.arg1 == 1);
                        break;
                    }
                                ·····
                //在UsbHandler类中的方法,主要是因为用到USB状态值:mConnected
                //add by xx in 2017-06-12 for bug 169853 start
                private void updateUsbMode(){
                    if(!mConnected && screenOff){
                        mUserPresent = false;
                    }
                }
                //add by xx in 2017-06-12 for bug 169853 end
            }
                    ·····
       }
       //省略其他代码
       public void setCurrentFunctions(String functions) {
            if (DEBUG) Slog.d(TAG, "setCurrentFunctions(" + functions + ")");
            //add by xx in 2017-08-03 for swtich usb mode start
            changeByUser = true;
            //add by xx in 2017-08-03 for swtich usb mode end
            mHandler.sendMessage(MSG_SET_CURRENT_FUNCTIONS, functions);
        }
        //省略其他代码
    }


     

    Android  8.0 +

     modify  /frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java

    @Override
            public void handleMessage(Message msg) {
              ...
               case MSG_UPDATE_STATE:
                  ...
                     if (!mConnected) {
                                // restore defaults when USB is disconnected
                                setEnabledFunctions(null, !mAdbEnabled, false);                         
                   setEnabledFunctions(UsbManager.USB_FUNCTION_MTP, false, true); //chc 
       add
                            
                         }
                ...             
         case MSG_BOOT_COMPLETED:
                        mBootCompleted = true;
                        if (mPendingBootBroadcast) {
                            updateUsbStateBroadcastIfNeeded(false);
                            mPendingBootBroadcast = false;
                        }
                        //setEnabledFunctions(null, false, false);
                        
                        setEnabledFunctions(UsbManager.USB_FUNCTION_MTP, false, true); //chc add
                        
                        if (mCurrentAccessory != null) {
                            getCurrentSettings().accessoryAttached(mCurrentAccessory);
                        }
                        if (mDebuggingManager != null) {
                            mDebuggingManager.setAdbEnabled(mAdbEnabled);
                        }
                        break;
           }
    

    连接电脑,看电脑上MTP的图标显示之后,然后将延迟进行相应的调整
     

    Android 9.0 

    modify   

    --- a/frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java
    +++ b/frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java
    @@ -824,7 +824,7 @@ public class UsbDeviceManager implements ActivityManagerInternal.ScreenObserver
                                         && mScreenUnlockedFunctions != UsbManager.FUNCTION_NONE) {
                                     setScreenUnlockedFunctions();
                                 } else {
    -                                setEnabledFunctions(UsbManager.FUNCTION_NONE, false);
    +                                setEnabledFunctions(UsbManager.FUNCTION_MTP, false);
                                 }
                             }
                             updateUsbFunctions();
    @@ -1012,7 +1012,9 @@ public class UsbDeviceManager implements ActivityManagerInternal.ScreenObserver
                             && mScreenUnlockedFunctions != UsbManager.FUNCTION_NONE) {
                         setScreenUnlockedFunctions();
                     } else {
    -                    setEnabledFunctions(UsbManager.FUNCTION_NONE, false);
    +                   Slog.e(TAG, "finishBoot");
    +                    //setEnabledFunctions(UsbManager.FUNCTION_NONE, false);
    +                   setEnabledFunctions(UsbManager.FUNCTION_MTP, false);
                     }
                     if (mCurrentAccessory != null) {
                         mUsbDeviceManager.getCurrentSettings().accessoryAttached(mCurrentAccessory);


    --------------------- 

    展开全文
  • alps\frameworks\base\services\usb\java\com\android\server\usb\UsbDeviceManager.java private void setScreenUnlockedFunctions() { // setEnabledFunctions(mScreenUnlockedFunctions, false); ...

    alps\frameworks\base\services\usb\java\com\android\server\usb\UsbDeviceManager.java

            private void setScreenUnlockedFunctions() {
             //   setEnabledFunctions(mScreenUnlockedFunctions, false);
    	      setEnabledFunctions(UsbManager.FUNCTION_MTP, false);
            }//将解锁后usb模式改为MTP,默认是UsbManager.FUNCTION_NONE

     

    展开全文
  • android 9.0 10.0 USB连接模式默认充电连接模式修改为默认设置为MTP模式
  • 开发者选项中选择USB连接模式: onPreferenceChange -> DevelopmentSettings.java 点击后响应 writeUsbConfigurationOption -> manager.setCurrentFunction -> set...
  • android系统中,UsbManager调用接口,会...UsbHostManager是手机作为一个host,比如键盘、鼠标通过usb连接手机。而UsbDeviceManager是手机与电脑连接 USB的连接方式都是在UsbDeviceManager.java中处理的 接下来看下
  • Android USB默认连接模式为MTP

    千次阅读 2018-04-14 11:01:48
    很多时候,手机项目开发,客户都要求配置USB的默认连接方式,但是在Android 6.0以及之后的版本就直接配置USB连接模式,看到的USB连接模式还是仅充电,而这是google的默认设计。那么对于这个问题,也看了很多网上的...
  • Android 11 Framework 修改默认usb连接模式为MTP模式 Android 11 Framework 修改默认usb连接模式为MTP模式修改Framework层源码编译修改后的源码更新到手机系统 目标: 对Framework定制开发,修改Framework层代码,...
  • 如果我们要将安卓手机连接到电脑上,从而传输文件、下载应用或ROOT等,都需要打开手机的USB调试模式安卓系统的版本有很多,它们的打开方法也各不相同,下面给大家介绍各版本安卓手机打开USB调试模式的方法。步骤...
  • 如果我们需要将安卓手机连接到电脑上,比如传输文件、下载应用或者ROOT提权等操作,那么就需要手机打开USB调试模式,不过安卓系统的版本比较多,所以打开的方法也不相同,Android手机USB调试在哪?安卓手机如何打开...
  • Android 连接USB默认选中MTP模式

    千次阅读 2020-10-29 15:07:26
    Android 连接USB默认选中MTP模式 需求分析 Android系统默认连接USB会显示:正在通过USB为此设备充电,并且无法在电脑查看存储内容。需要实现的效果:Android 连接USB默认选中MTP模式连接USB显示:正在通过USB...
  • 安卓手机USB数据线连接不上电脑怎么办在生活中,有...2、手机USB连不上电脑的`解决方法不用安装任何东西,你把手机连接电脑后,点击手机设置——应用程序——开发者选项(USB模式)——USB调试打钩,手机有个“打开US...
  • 目前大部分刷机等工具都是采用 Adb 方式连接,所以需要您在设备上打开USB调试模式Android 设备打开USB调试模式总共有三种不同方法,根据系统版本而不同,以下为 Android 所有系统版本对应的打开方法壹2.1 ~ 2.3.7 ...
  • Android设备USB调试模式打开方法,电脑通过豌豆荚连接手机或者平板不成功,最新豌豆荚版本6.8.*
  • 我正在尝试学习Android USB主机/附件连接.我读Android设备可以行为usb主机或USB配件.因此我创建了两个项目,其中一个是usb主机项目,另一个是usb附件项目.我将这些项目安装到两个不同的Android设备上.其中一个有usb...
  • Android Q:找到UsbDeviceManager,这里在finishBoot(也就是启动后)设置usb模式为 MTP模式,同时在处理消息时如果为默认模式NONE则将其更改为MTP模式。 2 修改方案 修改文件为:frameworks/base/services/usb/...
  • 亲测可以使用, ...如果没有出现你的手机驱动名称,请确认手机USB连接是否正常,是否开启USB调试模式,驱动是否正确安装(可通过91助手或360能否连接来测试:但是运行此软件的时候,不要同时开启他们,以免冲突)
  • 很多小伙伴在使用安卓手机的时候不知道在对手机权限进行设置、授权的时候需要用到连接电脑,并开启手机的usb调试模式安卓系统怎么打开USB调试?安卓手机USB调试在哪?其实开启USB调试模式非常简单,下面,小编给...
  • android usb host 模式下开发 usb 口被device 占用如何连接PC查看logcat 通常是通过usb 与PC端连接 可以在eclipse中查看logcat, 此时是 adb usb 模式下与PC连接的,但是如果使用usb host 模式,开发设备就是usb ...
  • 如果我们要将安卓手机连接到电脑上,从而传输文件、下载应用或ROOT等,都需要打开手机的USB调试模式安卓系统的版本有很多,它们的打开方法也各不相同,下面给大家介绍各版本安卓手机打开USB调试模式的方法。步骤...
  • 在这篇教学中,小蛙会详细向大家讲解USB调试模式的开启及关闭方法,...对于安卓4.2或更高的版本第一步:在设备上找到【设置】;第二步:点击【关于设备】;第三步:找到【系统版本号】并连续敲7次;第四步:返回【...
  • 我们都知道,安卓手机用数据线连接手机时,需要打开USB调试,才可以管理手机多媒体,对手机进行root、刷机等操作,安卓4.3的用户可能会奇怪,熟悉的USB调试藏到哪里去了呢?接下来,我们就一起找出来这个调皮的...
  • 这种情况只在android 4.2(包括4.2)以上的系统上才会出现,当我们买回新手机或升级新系统后,连上电脑准备下应用或恢复数据时,我们打开设置却始终找不到常用的USB调试,对了,那个开发者选项哪去了?其实,在android...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,626
精华内容 8,650
关键字:

安卓设置usb连接模式