Android TextureView Tutorial

Hvis du vil vise en live video stream eller innhold stream eksempel video eller en OpenGL scene, kan du bruke TextureView levert av android for å gjøre det.

For å bruke TextureView, alt du trenger å gjøre få sin SurfaceTexture.The SurfaceTexture kan deretter brukes til å gjengi innholdet. For å gjøre dette, trenger du bare å gjøre instantiate et objekt av denne klassen og implementere SurfaceTextureListener grensesnitt. Syntaksen er gitt nedenfor:
privat TextureView myTexture; public class MainActivity strekker aktivitet implementerer SurfaceTextureListener {beskyttet void onCreate (Bundle savedInstanceState) {myTexture = new TextureView (denne); myTexture.setSurfaceTextureListener (denne); setContentView (myTexture); }}

Etter det, hva du trenger å gjøre er å overstyre sine metoder. Metodene er oppført som følger −
Overridepublic void onSurfaceTextureAvailable (SurfaceTexture arg0, int arg1, int arg2) {}Overridepublic boolsk onSurfaceTextureDestroyed (SurfaceTexture arg0) {}Overridepublic annullere onSurfaceTextureSizeChanged (SurfaceTexture arg0, int arg1, int arg2 ) {}Overridepublic annullere onSurfaceTextureUpdated (SurfaceTexture arg0) {}

Alle visningen som vises i teksturen visningen kan roteres og dens alfa eiendom kan justeres ved hjelp av setAlpha Hotell og setRotation
metoder. Syntaksen er gitt nedenfor −
myTexture.setAlpha (1.0f); myTexture.setRotation (90.0f);

Bortsett fra disse metodene, det finnes andre metoder som er tilgjengelige i TextureView klasse. De er listet opp nedenfor −
Sr.NoMethod &description1 getSurfaceTexture ()

Denne metoden returnerer SurfaceTexture brukes av dette synet
2 getBitmap (int bredde, int høyde. )

Denne metoden returnerer Returnerer en Bitmap representasjon av innholdet i den tilknyttede overflatestruktur.
3 getTransform (Matrix transform)

Denne metoden returnerer transform forbundet med denne tekstur utsikt.
4 isOpaque ()

Denne metoden angir om dette synet er ugjennomsiktig.
5 lockCanvas ()

Denne metoden begynne å redigere pikslene i overflaten
6 setOpaque (boolsk ugjennomsiktig)

Denne metoden viser om innholdet i dette TextureView er ugjennomsiktig.
7 settransform (Matrix transform)

Denne metoden setter den trans å assosiere med denne teksturen utsikt.
8 unlockCanvasAndPost (lerret lerret)

Denne metoden har redigert piksler i overflaten.

Eksempel
< p> Eksempelet nedenfor viser bruken av TextureView klasse. Det kasser en enkel applikasjon som lar deg vise kamera inne i en tekstur utsikt og endre vinkel, orientering osv

For å eksperimentere med dette eksempelet, må du kjøre dette på en faktisk enhet på hvilket kamera er til stede.
StepsDescription1You vil bruke android studio IDE å lage en Android-applikasjon og navn det som TextureView under en pakke com.example.textureview. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge til aktivitet code.3Modify layout XML fil res /layout /activity_main.xml legge til GUI-komponent hvis required.5Run programmet og velge en som kjører Android-enhet, og installere programmet på den og verifisere resultatene.

Her er innholdet i src /com.example.textureview /MainActivity.java

pakken com.example.textureview;. import java.io.IOException, import android.annotation.SuppressLint, import android.app.Activity, import android.graphics.SurfaceTexture, import android.hardware.Camera; import android .os.Bundle, import android.view.Gravity, import android.view.Menu, import android.view.TextureView, import android.view.TextureView.SurfaceTextureListener, import android.view.View, import android.widget.FrameLayout; offentlig klasse MainActivity strekker aktivitet implementerer SurfaceTextureListener {private TextureView myTexture; private Kamera mCamera; SuppressLint ("NewApi")Override beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); myTexture = new TextureView (denne); myTexture.setSurfaceTextureListener (denne); setContentView (myTexture); }Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.main, menyen); return true; }SuppressLint ("NewApi")Override public void onSurfaceTextureAvailable (SurfaceTexture arg0, int arg1, int arg2) {mCamera = Camera.open (); Camera.Size previewSize = mCamera.getParameters () getPreviewSize (.); myTexture.setLayoutParams (nye FrameLayout.LayoutParams (previewSize.width, previewSize.height, Gravity.CENTER)); try {mCamera.setPreviewTexture (arg0); } Catch (IOException t) {} mCamera.startPreview (); myTexture.setAlpha (1.0f); myTexture.setRotation (90.0f); }Override Public boolean onSurfaceTextureDestroyed (SurfaceTexture arg0) {mCamera.stopPreview (); mCamera.release (); return true; }Override Public void onSurfaceTextureSizeChanged (SurfaceTexture arg0, int arg1, int arg2) {//TODO Auto-generert metode stub}Override public void onSurfaceTextureUpdated (SurfaceTexture arg0) {//TODO Auto-generert metode stub}}

Her er innholdet i activity_main.xml
< RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android~~number=plural" xmlns: verktøy = "http: //skjemaer .android.com /verktøy "android: layout_width =" match_parent "android: layout_height =" match_parent "android: paddingBottom =" @ dimen /activity_vertical_margin "android: paddingLeft =" @ dimen /activity_horizontal_margin "android: paddingRight =" @ dimen /activity_horizontal_margin . "android: paddingTop =" @ dimen /activity_vertical_margin "verktøy: kontekst =" MainActivity "> < TextureView android: id = "+ id /textureView1" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_alignParentTop = "true" android: layout_centerHorizontal = "true" /> < /RelativeLayout >

Her er innholdet i AndroidManifest.xml
< standard; xml version = "1.0" encoding = "utf-8" > < manifest xmlns:? android = "http: //schemas.android.com/apk/res/android "pakken =" com.example.textureview "android: version =" 1 "android: versjon =" 1.0 "> < bruker-tillatelse android: name = "android.permission.CAMERA" /> < søknad android: allowBackup = "true" android: icon = "@ teikne /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: name = "com.example.textureview.MainActivity" android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < /søknad > < /manifest >

La oss prøve å kjøre TextureView søknad. Jeg antar at du har koblet den faktiske Android Mobile-enhet med datamaskinen. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Før du starter programmet, vil Android studio vise følgende vindu for å velge et alternativ hvor du vil kjøre Android-applikasjon.

Velg den mobile enheten som et alternativ, og deretter sjekke den mobile enheten som vil vise følgende skjermbilde. Denne skjermen har alpha eiendommen satt til 0,5 Hotell og rotasjon satt til 45.

Denne skjermen har alpha eiendommen satt til 1,5 Hotell og rotasjon satt til 45
.

Denne skjermen har alpha eiendommen satt til 1,0 Hotell og rotasjon satt til 90
.