Partilhar via


SurfaceTexture Classe

Definição

Captura quadros de um fluxo de imagens 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 imagens 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 , android.media.MediaPlayerandroid.media.MediaCodec, e android.renderscript.Allocation . 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.

Ao coletar amostras da textura, deve-se primeiro transformar as coordenadas da textura usando a matriz consultada via #getTransformMatrix(float[]). A matriz de transformação pode mudar cada vez #updateTexImage que é chamada, portanto, deve ser consultada novamente cada vez que a imagem de textura é atualizada. Essa matriz transforma vetores tradicionais de coluna de coordenadas de textura 2D OpenGL ES da forma (s, t, 0, 1) onde s e t estão no intervalo inclusivo [0, 1] para o local de amostragem apropriado na textura transmitida. Essa transformação compensa quaisquer propriedades da fonte de fluxo de imagem que fazem com que ela pareça diferente de uma textura OpenGL ES tradicional. Por exemplo, a amostragem a partir do canto inferior esquerdo da imagem pode ser realizada transformando o vetor coluna (0, 0, 0, 1) usando a matriz consultada, enquanto a amostragem a partir do canto superior direito da imagem pode ser feita transformando (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 é vinculada, ela deve ser vinculada ao destino GL_TEXTURE_EXTERNAL_OES e não ao destino GL_TEXTURE_2D. Além disso, qualquer sombreador OpenGL ES 2.0 que faça amostras da textura deve declarar seu uso dessa extensão usando, por exemplo, uma diretiva "#extension GL_OES_EGL_image_external : require". Esses sombreadores também devem acessar a textura usando o tipo de amostrador GLSL samplerExternalOES.

Os 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 no quadro é chamado em um thread arbitrário, portanto, a menos que sejam tomados #updateTexImage cuidados especiais, não deve ser chamado diretamente do retorno de chamada.

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

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

Construtores

SurfaceTexture(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(Int32, Boolean)

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 tempo de execução.

Propriedades

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
DataSpace

Recupere o espaço de dados associado à imagem de textura.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
IsReleased

Retorna true se o SurfaceTexture foi liberado.

JniIdentityHashCode

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

(Herdado de Object)
JniPeerMembers

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

PeerReference

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

(Herdado de Object)
ThresholdClass

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Esta API suporta a infraestrutura 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

AttachToGLContext(Int32)

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

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
DetachFromGLContext()

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

Dispose()

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

(Herdado de Object)
Dispose(Boolean)

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

(Herdado de Object)
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 da 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)

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

SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener, Handler)

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

ToArray<T>()

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

(Herdado de Object)
ToString()

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

(Herdado de Object)
UnregisterFromRuntime()

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

(Herdado de Object)
UpdateTexImage()

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

Wait()

Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em notificado</em> ou <em>interrompido</em>>.

(Herdado de Object)
Wait(Int64)

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

(Herdado de Object)
Wait(Int64, Int32)

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

(Herdado de Object)

Eventos

FrameAvailable

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

Implantações explícitas de interface

IJavaPeerable.Disposed()

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

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

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

(Herdado de Object)
IJavaPeerable.Finalized()

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

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

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

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

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

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

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

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

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

(Herdado de Object)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

Aplica-se a