SurfaceTexture Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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.camera2
APIs , android.media.MediaPlayer
android.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 |
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 |
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 |
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 |
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() |
|
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. |