SurfaceTexture Classe

Definição

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

[Android.Runtime.Register("android/graphics/SurfaceTexture", DoNotGenerateAcw=true)]
public class SurfaceTexture : Java.Lang.Object
[<Android.Runtime.Register("android/graphics/SurfaceTexture", DoNotGenerateAcw=true)>]
type SurfaceTexture = class
    inherit Object
Herança
SurfaceTexture
Atributos

Comentários

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

O fluxo de imagem pode vir da visualização da câmera ou da decodificação de vídeo. Um android.view.Surface criado a partir de um SurfaceTexture pode ser usado como um destino de saída para as android.hardware.camera2APIs e android.media.MediaCodec as android.media.MediaPlayerandroid.renderscript.AllocationAPIs. Quando #updateTexImage é chamado, o conteúdo do objeto de textura especificado quando o SurfaceTexture foi criado é atualizado para conter a imagem mais recente do fluxo de imagem. Isso pode fazer com que alguns quadros do fluxo sejam ignorados.

Um SurfaceTexture também pode ser usado no lugar de um SurfaceHolder ao especificar o destino de saída da API mais antiga android.hardware.Camera . Isso fará com que todos os quadros do fluxo de imagem sejam enviados para o objeto SurfaceTexture em vez de para a exibição do dispositivo.

Um padrão típico é usar o SurfaceTexture para renderizar quadros em um TextureView; no entanto, um TextureView não é necessário para usar o objeto de textura. O objeto de textura pode ser usado como parte de um sombreador OpenGL ES.

Quando a amostragem da textura um deve primeiro transformar as coordenadas de textura usando a matriz consultada por meio #getTransformMatrix(float[])de . A matriz de transformação pode mudar sempre #updateTexImage que for chamada, portanto, ela deve ser consultada novamente sempre que a imagem de textura for atualizada. Essa matriz transforma vetores de coluna de coordenadas de textura OpenGL ES tradicionais do formulário (s, t, 0, 1) em que s e t estão no intervalo inclusivo [0, 1] para o local de amostragem adequado na textura transmitida. Essa transformação compensa todas as propriedades da fonte de fluxo de imagem que fazem com que ela pareça diferente de uma textura ES opengl tradicional. Por exemplo, a amostragem do canto inferior esquerdo da imagem pode ser realizada transformando o vetor de coluna (0, 0, 0, 1) usando a matriz consultada, enquanto a amostragem do canto superior direito da imagem pode ser feita por meio da transformação (1, 1, 0, 1).

O objeto de textura usa o destino de textura GL_TEXTURE_EXTERNAL_OES, que é definido pela extensão GL_OES_EGL_image_external OpenGL ES. Isso limita como a textura pode ser usada. Cada vez que a textura é associada, ela deve ser associada ao destino GL_TEXTURE_EXTERNAL_OES em vez do destino GL_TEXTURE_2D. Além disso, qualquer sombreador OpenGL ES 2.0 que seja amostrado da textura deve declarar seu uso dessa extensão usando, por exemplo, uma diretiva "#extension GL_OES_EGL_image_external: exigir". Esses sombreadores também devem acessar a textura usando o tipo de amostrador GLSL samplerExternalOES.

Objetos SurfaceTexture podem ser criados em qualquer thread. #updateTexImage só pode ser chamado no thread com o contexto OpenGL ES que contém o objeto de textura. O retorno de chamada disponível para quadros é chamado em um thread arbitrário, portanto, a menos que um cuidado especial seja tomado #updateTexImage , não deve ser chamado diretamente do retorno de chamada.

Java documentação para android.graphics.SurfaceTexture.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Construtores

Nome Description
SurfaceTexture(Boolean)

Construa um novo SurfaceTexture para transmitir imagens para uma determinada textura OpenGL.

SurfaceTexture(Int32, Boolean)

Construa um novo SurfaceTexture para transmitir imagens para uma determinada textura OpenGL.

SurfaceTexture(Int32)

Construa um novo SurfaceTexture para transmitir imagens para uma determinada textura OpenGL.

SurfaceTexture(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
DataSpace

Recupere o dataspace associado à imagem de textura definida pela chamada mais recente para #updateTexImage.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
IsReleased

Retorna true se o SurfaceTexture foi liberado.

JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
JniPeerMembers

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
ThresholdClass

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

Timestamp

Recupere o carimbo de data/hora associado à imagem de textura definida pela chamada mais recente para #updateTexImage.

Métodos

Nome Description
AttachToGLContext(Int32)

Anexe o SurfaceTexture ao contexto OpenGL ES atual no thread de chamada.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
DetachFromGLContext()

Desanexe o SurfaceTexture do contexto OpenGL ES que possui o objeto de textura OpenGL ES.

Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
Equals(Object)

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetTransformMatrix(Single[])

Recupere a matriz de transformação de coordenadas de textura 4x4 associada à imagem de textura definida pela chamada mais recente para #updateTexImage.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
Release()

release() libera todos os buffers e coloca o SurfaceTexture no estado 'abandonado'.

ReleaseTexImage()

Libera o conteúdo de textura.

SetDefaultBufferSize(Int32, Int32)

Defina o tamanho padrão dos buffers de imagem.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener, Handler)

Registre um retorno de chamada a ser invocado quando um novo quadro de imagem estiver disponível para o SurfaceTexture.

SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener)

Registre um retorno de chamada a ser invocado quando um novo quadro de imagem estiver disponível para o SurfaceTexture.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
UpdateTexImage()

Atualize a imagem de textura para o quadro mais recente do fluxo de imagem.

Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Eventos

Nome Description
FrameAvailable

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

(Herdado de JavaObject)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Captura quadros de um fluxo de imagem como uma textura OpenGL ES.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a