SharpAdb / AdvancedSharpAdbClient

AdvancedSharpAdbClient is a .NET library that allows .NET, Mono and Unity applications to communicate with Android devices. It's improved version of SharpAdbClient.
https://sharpadb.github.io
Apache License 2.0
203 stars 54 forks source link

How to construct a DeviceClient #91

Open itapi opened 9 months ago

itapi commented 9 months ago

What can we do for you?

I want to listen to a device connection,but I don't know how to obtain a "DeviceClient" object,so I can execute actions on it...I have the DeviceData but it doesn't help me much...

public async Task Start()
{
    StartServerResult startServerResult = await AdbServer.Instance.StartServerAsync(@"C:\Users\laptop\AppData\Local\Android\Sdk\platform-tools\adb.exe", false, CancellationToken.None);
    Trace.WriteLine(startServerResult); // result is already running

    DeviceMonitor deviceMonitor = null;

    deviceMonitor = new DeviceMonitor(new AdbSocket(new IPEndPoint(IPAddress.Loopback, AdbClient.AdbServerPort)));
    deviceMonitor.DeviceConnected += (sender, e) =>

    {
        Trace.WriteLine($"Device connected: {e.Device}");

        //need to obtain a DeviceClient object,to execute a swipe method.

    };
    deviceMonitor.DeviceDisconnected += (sender, e) => Trace.WriteLine($"Device disconnected: {e.Device}");
    deviceMonitor.DeviceChanged += (sender, e) => Trace.WriteLine($"Device state changed: {e.Device} {e.OldState} -> {e.NewState}");

    await deviceMonitor.StartAsync();

    // Additional code if needed
}
wherewhere commented 9 months ago

Screenshot_20240208-115529_Termux.png

itapi commented 9 months ago

@wherewhere thanks mate! I know that I can init a new adbclient,but I want to listen in the background for a incoming device connection and disconnection...and the device monitor classs provide me that function....how can I do it with adbclient?

wherewhere commented 9 months ago

DeviceClient doesn't use IAdbClient. It use IAdbSocket to monitor device list changing. So you need to init an AdbClient by yourself. You can save one as a static property and use it when device list changed.

itapi commented 9 months ago

@wherewhere thanks sir! Sorry to bother you,but can you please give me a code example for it?