다음을 통해 공유


Xamarin.Android TextureView

클래스는 TextureView 하드웨어 가속 2D 렌더링을 사용하여 비디오 또는 OpenGL 콘텐츠 스트림을 표시할 수 있도록 하는 보기입니다. 예를 들어 다음 스크린샷은 디바이스의 카메라에서 라이브 피드를 표시하는 것을 보여 TextureView 줍니다.

디바이스 카메라의 라이브 이미지 예제 스크린샷

SurfaceView OpenGL 또는 비디오 콘텐츠를 표시하는 데 사용할 수도 있는 클래스와 달리 TextureView는 별도의 창으로 렌더링되지 않습니다. 따라서 TextureView 다른 보기와 같은 보기 변환을 지원할 수 있습니다. 예를 들어 회전은 TextureView 속성을 설정 Rotation 하기만 하면 되고, 속성을 설정하여 투명도를 설정하는 Alpha 등의 작업을 수행할 수 있습니다.

따라서 이제 다음 코드와 TextureView 같이 카메라에서 라이브 스트림을 표시하고 변환하는 등의 작업을 수행할 수 있습니다.

public class TextureViewActivity : Activity,
    TextureView.ISurfaceTextureListener
{
    Camera _camera;
    TextureView _textureView;

    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        _textureView = new TextureView (this);
        _textureView.SurfaceTextureListener = this;

        SetContentView (_textureView);
    }

    public void OnSurfaceTextureAvailable (
        Android.Graphics.SurfaceTexture surface,
        int width, int height)
    {
        _camera = Camera.Open ();
        var previewSize = _camera.GetParameters ().PreviewSize;
        _textureView.LayoutParameters =
            new FrameLayout.LayoutParams (previewSize.Width,
                previewSize.Height, (int)GravityFlags.Center);

        try {
            _camera.SetPreviewTexture (surface);
            _camera.StartPreview ();
        } catch (Java.IO.IOException ex) {
            Console.WriteLine (ex.Message);
        }

        // this is the sort of thing TextureView enables
        _textureView.Rotation = 45.0f;
        _textureView.Alpha = 0.5f;
    }
    …
}

위의 코드는 Activity의 OnCreate 메서드에 인스턴스를 만들고 TextureView 활동을 TextureView'sSurfaceTextureListener로 설정합니다. 활동은 SurfaceTextureListener인터페이스를 구현합니다 TextureView.ISurfaceTextureListener . 사용 준비가 되면 시스템에서 메서드를 SurfaceTexture 호출 OnSurfaceTextAvailable 합니다. 이 메서드에서는 전달된 텍스처를 가져와 SurfaceTexture 카메라의 미리 보기 질감으로 설정합니다. 그런 다음 위 예제와 같이 설정과 Alpha같은 Rotation 일반적인 보기 기반 작업을 자유롭게 수행할 수 있습니다. 디바이스에서 실행되는 결과 애플리케이션은 다음과 같습니다.

이미지를 표시하는 디바이스에서 실행되는 앱의 예

이 기능을 사용 TextureView하려면 하드웨어 가속을 사용하도록 설정해야 합니다. 이 가속은 기본적으로 API 수준 14입니다. 또한 이 예제에서는 카메라를 사용하므로 AndroidManifest.xml 사용 권한과 android.hardware.camera 기능을 모두 android.permission.CAMERA 설정해야 합니다.