Xamarin.Android TextureView
La TextureView
classe è una visualizzazione che usa il rendering 2D accelerato dall'hardware per consentire la visualizzazione di un flusso di contenuto Video o OpenGL. Ad esempio, lo screenshot seguente mostra la TextureView
visualizzazione di un feed live dalla fotocamera del dispositivo:
A differenza della SurfaceView
classe , che può essere usata anche per visualizzare contenuto OpenGL o video, il rendering di TextureView non viene eseguito in una finestra separata.
Pertanto, TextureView
è in grado di supportare trasformazioni di visualizzazione come qualsiasi altra visualizzazione. Ad esempio, la rotazione di un TextureView
oggetto può essere eseguita impostando semplicemente la relativa Rotation
proprietà, la relativa trasparenza impostandone la Alpha
proprietà e così via.
Pertanto, con è TextureView
ora possibile eseguire operazioni come visualizzare un flusso live dalla fotocamera e trasformarlo, come illustrato nel codice seguente:
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;
}
…
}
Il codice precedente crea un'istanza TextureView
nel metodo dell'attività OnCreate
e imposta l'attività come .TextureView
SurfaceTextureListener
Per essere , SurfaceTextureListener
l'attività implementa l'interfaccia TextureView.ISurfaceTextureListener
. Il sistema chiamerà il OnSurfaceTextAvailable
metodo quando SurfaceTexture
è pronto per l'uso. In questo metodo, prendiamo l'oggetto SurfaceTexture
passato e lo impostiamo sulla trama di anteprima della fotocamera. È quindi possibile eseguire normali operazioni basate sulla visualizzazione, ad esempio l'impostazione di Rotation
e Alpha
, come nell'esempio precedente. L'applicazione risultante, in esecuzione in un dispositivo, è illustrata di seguito:
Per usare , è necessario abilitare l'accelerazione TextureView
hardware, che sarà per impostazione predefinita a livello API 14. Inoltre, poiché questo esempio usa la fotocamera, sia l'autorizzazione android.permission.CAMERA
che la android.hardware.camera
funzionalità devono essere impostate nella AndroidManifest.xml.