Xamarin.Android TextureView

TextureView sınıfı, bir videonun veya OpenGL içerik akışının görüntülenmesini sağlamak için donanım hızlandırmalı 2B işleme kullanan bir görünümdür. Örneğin, aşağıdaki ekran görüntüsü cihazın kamerasından canlı akış görüntülemeyi gösterir TextureView :

Cihazın kamerasındaki canlı görüntünün örnek ekran görüntüsü

SurfaceView OpenGL veya video içeriğini görüntülemek için de kullanılabilen sınıfından farklı olarak, TextureView ayrı bir pencerede işlenmez. Bu nedenle, TextureView diğer görünümler gibi görünüm dönüştürmelerini destekleyebiliyor. Örneğin, yalnızca özelliğini, özelliğini ayarlayarak Rotation saydamlığını vb. ayarlayarak Alpha bir TextureView döndürme gerçekleştirilebilir.

Bu nedenle, artık aşağıdaki kodda TextureView gösterildiği gibi kameradan canlı akış görüntüleme ve dönüştürme gibi işlemler yapabiliriz:

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;
    }
    …
}

Yukarıdaki kod Activity'in yönteminde bir TextureView örnek oluşturur ve Activity öğesini 's SurfaceTextureListenerolarak TextureViewayarlar.OnCreate olmak SurfaceTextureListeneriçin, Activity arabirimini TextureView.ISurfaceTextureListener uygular. sistem, kullanıma hazır olduğunda SurfaceTexture yöntemini çağırırOnSurfaceTextAvailable. Bu yöntemde geçirileni SurfaceTexture alıp kameranın önizleme dokusuna ayarlayacağız. Ardından, yukarıdaki örnekte olduğu gibi ve Alphaayarını yapmak Rotation gibi normal görünüm tabanlı işlemleri gerçekleştirmekte serbestiz. Bir cihazda çalışan sonuçta elde edilen uygulama aşağıda gösterilmiştir:

Bir cihazda çalışan ve görüntü görüntüleyen uygulama örneği

kullanmak TextureViewiçin, donanım hızlandırması etkinleştirilmelidir ve api Düzeyi 14 itibarıyla varsayılan olarak bu değer olacaktır. Ayrıca, bu örnekte kamera kullanıldığı için hem izin hem android.hardware.camera de android.permission.CAMERA özellik AndroidManifest.xml ayarlanmalıdır.