본문 바로가기
프로그래밍/안드로이드

ADB를 이용하여 크롬 제어하기 with C#

by 완소루피 2024. 11. 12.
728x90
반응형

C#을 활용하여 ADB를 통해 안드로이드에서 구글 크롬을 실행하고 특정 사이트의 내용을 크롤링하는 과정을 단계별로 설명하는 교육 자료를 작성해 볼게요. 이 글은 초보자도 따라 할 수 있도록 소스 코드와 함께 각 과정을 순차적으로 설명하는 형태로 구성하겠습니다.

 

1. ADB와 C# 환경 설정

설명
C#으로 ADB 명령어를 실행하려면 System.Diagnostics 네임스페이스를 활용하여 명령어를 전달할 수 있습니다. 먼저 ADB가 제대로 설치되어 있고 환경 변수가 설정되어 있는지 확인합니다.

예제 코드

using System;
using System.Diagnostics;

public class ADBHelper
{
    public static string ExecuteAdbCommand(string command)
    {
        ProcessStartInfo processInfo = new ProcessStartInfo("adb", command)
        {
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };

        using (Process process = Process.Start(processInfo))
        {
            return process.StandardOutput.ReadToEnd();
        }
    }
}

 

이 코드는 ExecuteAdbCommand 메서드를 통해 ADB 명령어를 전달하고, 실행 결과를 반환하는 기본 틀입니다.

 

2. 기기 연결 확인

설명
우선, 연결된 안드로이드 기기가 ADB에서 인식되는지 확인합니다. 이를 통해 안드로이드 기기의 고유 ID를 가져올 수 있습니다.

예제 코드

public static void CheckConnectedDevices()
{
    string output = ADBHelper.ExecuteAdbCommand("devices");
    Console.WriteLine("Connected Devices:\n" + output);
}

 

이 코드는 연결된 디바이스의 리스트를 출력합니다.

 

 

3. 구글 크롬 실행하기

설명
안드로이드 기기에서 구글 크롬을 실행하기 위해 adb shell am start 명령을 사용합니다. 구글 크롬의 패키지명은 com.android.chrome이며, 특정 URL로 바로 접속할 수도 있습니다.

예제 코드

public static void LaunchChrome(string url)
{
    string command = $"shell am start -n com.android.chrome/com.google.android.apps.chrome.Main -d {url}";
    ADBHelper.ExecuteAdbCommand(command);
    Console.WriteLine("Chrome launched with URL: " + url);
}

 

이 코드를 통해 안드로이드에서 구글 크롬이 열리고 지정된 URL로 이동합니다.

 

4. 화면 캡처 및 크롤링에 필요한 데이터 가져오기

설명
지정된 웹 페이지의 내용을 크롤링하기 위해 화면 캡처 기능을 사용할 수 있습니다. 이 단계에서는 ADB를 통해 화면을 캡처하고, 이를 로컬로 저장합니다.

예제 코드

public static void CaptureScreenshot(string savePath)
{
    string command = $"shell screencap -p /sdcard/screenshot.png";
    ADBHelper.ExecuteAdbCommand(command);
    
    // Pull the screenshot to the local machine
    string pullCommand = $"pull /sdcard/screenshot.png {savePath}";
    ADBHelper.ExecuteAdbCommand(pullCommand);
    
    Console.WriteLine("Screenshot saved to: " + savePath);
}

 

이 코드는 캡처한 스크린샷을 로컬에 저장합니다. 스크린샷의 텍스트를 인식하고자 할 때는 OCR 라이브러리(e.g., Tesseract)를 활용할 수 있습니다.

 

5. OCR을 활용한 텍스트 인식

설명
화면의 내용을 텍스트로 변환하려면 OCR을 사용할 수 있습니다. Tesseract OCR 같은 라이브러리를 설치하고 텍스트 인식 작업을 수행합니다.

예제 코드

using Tesseract;

public static void ExtractTextFromImage(string imagePath)
{
    var ocrEngine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default);
    var img = Pix.LoadFromFile(imagePath);
    var result = ocrEngine.Process(img);
    
    Console.WriteLine("Extracted Text: \n" + result.GetText());
}

 

이 코드를 통해 캡처한 화면에서 텍스트를 추출할 수 있습니다. OCR을 이용하면 화면 내 텍스트를 수집하거나 특정 정보를 크롤링할 수 있습니다.

 

6. 자동화 및 최종 테스트

설명
전체 코드를 통합해 구글 크롬을 실행하고, 특정 페이지로 이동한 후 화면 캡처와 텍스트 인식을 자동으로 수행하도록 설정합니다.

최종 예제 코드

public static void Main()
{
    // 1. 기기 연결 확인
    CheckConnectedDevices();

    // 2. 구글 크롬 실행
    string url = "https://www.example.com";
    LaunchChrome(url);

    // 3. 화면 캡처 및 저장
    string savePath = "screenshot.png";
    CaptureScreenshot(savePath);

    // 4. OCR로 텍스트 추출
    ExtractTextFromImage(savePath);
}

 

이제 이 코드를 실행하면 연결된 안드로이드 기기에서 크롬이 실행되고, 지정된 URL의 스크린샷을 캡처한 후 텍스트를 추출합니다.

 

결론

이 포스트에서는 C#과 ADB를 통해 안드로이드 기기를 제어하고, 크롬을 통해 웹 페이지에 접근해 크롤링하는 방법을 단계별로 설명했습니다. 이를 통해 ADB의 강력한 기능과 C#의 활용성을 더 잘 이해할 수 있습니다.

728x90
반응형