// throw on failure public static AndroidDebugBridge Create(string pathToAdbExe) { AndroidDebugBridge result = new AndroidDebugBridge(pathToAdbExe); result.StartTracking(); return(result); }
//--------------------------------------------------------------------------------------------- // Construction // --------------------------------------------------------------------------------------------- public DeviceTracker(AndroidDebugBridge bridge) { this.bridge = bridge; this.Devices = new List <Device>(); this.serverFailedConnects = 0; this.serverRestarts = 0; this.threadStarter = new HandshakeThreadStarter("Device List Monitor", DeviceTrackingThread); }
//--------------------------------------------------------------------------------------------- // Construction // --------------------------------------------------------------------------------------------- public DeviceTracker(AndroidDebugBridge bridge) { this.bridge = bridge; this.Devices = new List<Device>(); this.serverFailedConnects = 0; this.serverRestarts = 0; this.threadStarter = new HandshakeThreadStarter("Device List Monitor", DeviceTrackingThread); }
static void Main(string[] arguments) { AndroidDebugBridge bridge = new AndroidDebugBridge(); try { bridge.DeviceConnected += (sender, e) => System.Console.WriteLine($"Device connected: {e.Device.SerialNumber}\t{e.Device.State}"); bridge.DeviceDisconnected += (sender, e) => System.Console.WriteLine($"Device disconnected: {e.Device.SerialNumber}\t{e.Device.State}"); bridge.ServerStartedOrReconnected += (sender, b) => System.Console.WriteLine($"ADB server started or reconnected"); bridge.ServerKilled += (sender, b) => System.Console.WriteLine($"ADB server killed"); bridge.StartTracking(); Device device = AdbHelper.Instance.GetDevices(AndroidDebugBridge.AdbServerSocketAddress)[0]; var props = device.Properties; // AdbHelper.Instance.Connect(AndroidDebugBridge.AdbServerSocketAddress, "192.168.0.22", 5555); } finally { bridge.StopTracking(); } }
public AndroidDebugBridgeEventArgs(AndroidDebugBridge bridge) { this.Bridge = bridge; }
// throw on failure public static AndroidDebugBridge Create(string pathToAdbExe) { AndroidDebugBridge result = new AndroidDebugBridge(pathToAdbExe); result.StartTracking(); return result; }
// Stop the monitor running. This is idempotent public void Stop() { this.started = false; this.StopCommandQueueListener(); this.ReleaseDeviceNotificationHandles(); this.eventRaiser.DeviceArrived -= OnDeviceArrived; this.eventRaiser.DeviceRemoveComplete -= OnDeviceRemoveComplete; this.bridge?.StopTracking(); this.bridge = null; }
// Start the monitor running public void Start() { try { Log.ThresholdLevel = LogLevel.Debug; this.bridge = AndroidDebugBridge.Create(); this.bridge.DeviceConnected += (sender, e) => { this.IgnoreADBExceptionsDuring(() => EnsureUSBConnectedDevicesAreOnTCPIP("ADB device connected")); }; this.bridge.ServerStartedOrReconnected += (sender, e) => { this.IgnoreADBExceptionsDuring(() => { lock (this.deviceConnectionLock) { // Ensure any USB-connected devices are on TCPIP bool? anyDevices = EnsureUSBConnectedDevicesAreOnTCPIP("ADB server started"); // If the server isn't in fact connected to ANYONE (maybe the server stopped // while no USB device was connected; closing Android Studio stops the server) // then try to connect it to the last TCPIP device we used if (anyDevices.HasValue && !anyDevices.Value) { ReconnectToLastTCPIPDevice(); } } }); }; this.eventRaiser.DeviceArrived += OnDeviceArrived; this.eventRaiser.DeviceRemoveComplete += OnDeviceRemoveComplete; foreach (Guid guid in this.deviceInterfacesOfInterest) { GetUSBDeviceNotificationsFor(guid); } this.IgnoreADBExceptionsDuring(() => EnsureUSBConnectedDevicesAreOnTCPIP("BotBug start")); this.StartCommandQueueListener(); this.started = true; } catch (Exception) { Stop(); throw; } }