protected void initializeAdbConnection ( ) { // Get a device bridge instance. Initialize, create and restart. try { AndroidDebugBridge . init ( true ) ; } catch ( IllegalStateException e ) { // When we keep the adb connection alive the AndroidDebugBridge may // have been already // initialized at this point and it generates an exception. Do not // print it. if ( ! shouldKeepAdbAlive ) { logger . error ( "The IllegalStateException is not a show " + "stopper. It has been handled. This is just debug spew. Please proceed." , e ) ; throw new NestedException ( "ADB init failed" , e ) ; } } bridge = AndroidDebugBridge . getBridge ( ) ; if ( bridge == null ) { bridge = AndroidDebugBridge . createBridge ( AndroidSdk . adb ( ) . getAbsolutePath ( ) , false ) ; } long timeout = System . currentTimeMillis ( ) + 60000 ; while ( ! bridge . hasInitialDeviceList ( ) && System . currentTimeMillis ( ) < timeout ) { try { Thread . sleep ( 50 ) ; } catch ( InterruptedException e ) { throw new RuntimeException ( e ) ; } } // Add the existing devices to the list of devices we are tracking. IDevice [ ] devices = bridge . getDevices ( ) ; logger . info ( "initialDeviceList size {}" , devices . length ) ; for ( int i = 0 ; i < devices . length ; i ++ ) { logger . info ( "devices state: {},{} " , devices [ i ] . getName ( ) , devices [ i ] . getState ( ) ) ; connectedDevices . put ( devices [ i ] , new DefaultHardwareDevice ( devices [ i ] ) ) ; } bridge . addDeviceChangeListener ( new DeviceChangeListener ( connectedDevices ) ) ; }
Initializes the AndroidDebugBridge and registers the DefaultHardwareDeviceManager with the AndroidDebugBridge device change listener .