Android — TextureView + SurfaceHolder.Callback

Я хотел знать, можно ли использовать SurfaceHolder.Callback (и, конечно, его обратные вызовы) в сочетании с TextureView?

Я имею в виду что-л. как следующее:

public class MainActivity extends AppCompatActivity implements  SurfaceHolder.Callback {

    private TextureView mTextureView;

    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {

    }

    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

    }
}

Будет ли это работать? Причина, по которой я спрашиваю, заключается в том, что всякий раз, когда я вижу SurfaceHolder.Callback, они используют SurfaceView.


person abdullah celik    schedule 22.08.2019    source источник


Ответы (1)


Нет, ты не можешь. Для TextureView следует использовать SurfaceTextureListener. Во многих смыслах эти обратные вызовы похожи на обратные вызовы SurfaceHolder.

Например, вместо

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    mPreviewSurface = holder.getSurface();
}

ты можешь написать

@Override
public void onSurfaceTextureAvailable(SurfaceTexture texture, int width, int height) {
    mPreviewSurface = new Surface(texture);
}

См. https://github.com/google/ExoPlayer/issues/98. Спасибо @BrentM.

person Alex Cohn    schedule 27.08.2019