アンドロイドで画面表示内容を取得する方法は何ですか?

Androidデバイスの画面の表示内容を取得するには、AndroidのMediaProjection APIを使用することができます。下記は簡単なサンプルコードです:

  1. 最初に、AndroidManifest.xmlファイルに以下の権限を追加してください。
<uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  1. 新しいActivityを作成し、そのonCreateメソッドに以下のコードを追加してください。
private static final int REQUEST_CODE_MEDIA_PROJECTION = 1;
private MediaProjectionManager mMediaProjectionManager;
private MediaProjection mMediaProjection;
private VirtualDisplay mVirtualDisplay;
private ImageReader mImageReader;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);

    startActivityForResult(mMediaProjectionManager.createScreenCaptureIntent(), REQUEST_CODE_MEDIA_PROJECTION);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_MEDIA_PROJECTION) {
        if (resultCode == RESULT_OK) {
            mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data);

            // 获取屏幕的宽度和高度
            DisplayMetrics metrics = getResources().getDisplayMetrics();
            int width = metrics.widthPixels;
            int height = metrics.heightPixels;

            // 创建一个ImageReader对象,用于捕捉屏幕内容
            mImageReader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);
            mVirtualDisplay = mMediaProjection.createVirtualDisplay("ScreenCapture",
                    width, height, metrics.densityDpi,
                    DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
                    mImageReader.getSurface(), null, null);
        }
    }
}
  1. 画面表示内容を取得する必要がある場合、次のコードを追加してください。
Image image = mImageReader.acquireLatestImage();
if (image != null) {
    // 处理屏幕内容
    // ...

    // 释放Image资源
    image.close();
}

MediaProjection APIを使用する際には、ユーザーの許可が必要です。そのため、Activity内でstartActivityForResultメソッドを呼び出してユーザーの許可を取得する必要があります。許可が成功したら、ImageReaderオブジェクトを使用して画面の内容を取得できます。

bannerAds