Androidでサーフェスからデータを読み取る方法は何ですか?

Androidで、Surfaceオブジェクトを使用してSurface内のデータを読み取ることができます。具体的な手順は以下の通りです:

  1. Surfaceのインスタンスを取得します。SurfaceHolder.CallbackのsurfaceCreated()メソッドでSurfaceオブジェクトを取得することができ、このメソッドはSurfaceが作成されたときに呼び出されます。
@Override
public void surfaceCreated(SurfaceHolder holder) {
    Surface surface = holder.getSurface();
    // 在这里可以对Surface进行读取操作
}
  1. Canvasオブジェクトを作成します。Canvasオブジェクトは、SurfaceHolderのlockCanvas()メソッドを使用して取得することができます。
SurfaceHolder holder = surfaceView.getHolder();
Canvas canvas = holder.lockCanvas();
  1. Surfaceからデータを読み取る。Canvasの描画メソッドを使用してSurface上に図形を描画し、データを取得することができます。
// 在Canvas上绘制图形
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawCircle(100, 100, 50, paint);

// 读取Surface中的数据
Bitmap bitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
int pixel = bitmap.getPixel(x, y);
// 可以根据需要,将获取的像素数据进行处理
  1. SurfaceをアンロックしてCanvasを解放してください。データを読み込んだ後は、SurfaceHolderのunlockCanvasAndPost()メソッドを使用してSurfaceをアンロックし、Canvasオブジェクトを解放する必要があります。
holder.unlockCanvasAndPost(canvas);

上記の手順を通じて、AndroidでSurfaceにあるデータを読み取ることができます。Surfaceにあるデータを読み取る前に、Surfaceが完全に作成されるのを待つ必要があります。

bannerAds