Todos os produtos
Search
Central de documentação

ApsaraVideo VOD:Recursos básicos do ApsaraVideo Player SDK para Android

Última atualização: Aug 19, 2026

Este tópico descreve como usar os recursos básicos do ApsaraVideo Player SDK para Android. Aprenda a configure fontes de reprodução, ajustar volume e velocidade, alternar resoluções e faixas de áudio, entre outras funcionalidades.

Importante

Para execute e testar o demo, faça o baixe ApsaraVideo Player SDK e siga as instruções em execute the demo para compilar e execute o projeto.

configure uma source de vídeo

O ApsaraVideo Player SDK para Android suporta reprodução de vídeo sob demanda (VOD) e streaming ao vivo.

  • Métodos de reprodução VOD: VidAuth (recomendado para usuários do ApsaraVideo VOD), VidSts, UrlSource e reprodução criptografada.

  • Métodos de reprodução de stream ao vivo: UrlSource e reprodução criptografada.

Nota
  • UrlSource reproduz mídia a partir de uma URL. VidSts e VidAuth reproduzem mídia pelo ID da mídia (Vid).

  • Para obter informações sobre as regiões suportadas, consulte ApsaraVideo VOD region IDs.

Reprodução VOD

VidAuth (Recomendado)

Para reproduzir um vídeo VOD com VidAuth, defina a propriedade vid com o ID da mídia e a propriedade playAuth com a credencial de reprodução.

  • ID da mídia: Obtenha o ID da mídia após fazer upload do arquivo. No console do ApsaraVideo VOD, selecione Media Files > Audio/Video. Também é possível chamar a API SearchMedia.

  • Credencial de reprodução: Chame a operação GetVideoPlayAuth para obter a credencial. Recomendamos integrar o sdk server-side do ApsaraVideo VOD para evitar a geração manual de assinaturas. Para exemplos, consulte o OpenAPI Explorer.

Recomendamos VidAuth em vez de VidSts para usuários do ApsaraVideo VOD, pois oferece melhor usabilidade e segurança. Para mais detalhes, consulte Credential method vs. STS method.

Se você ative a passagem de parâmetros de criptografia HLS no console do ApsaraVideo VOD, o nome padrão do parâmetro será MtsHlsUriToken. Para mais informações, consulte Parameter pass-through for HLS encryption.

Código de exemplo:

VidAuth vidAuth = new VidAuth();
vidAuth.setVid("Vid");                 // Required. The video ID (VideoId).
vidAuth.setPlayAuth("<yourPlayAuth>"); // Required. The playback credential from GetVideoPlayAuth.
vidAuth.setRegion("region-id");        // Deprecated for SDK V5.5.5.0 and later. The player automatically parses the region. For earlier versions, this parameter is required. Default: cn-shanghai.
   // vidAuth.setAuthTimeout(3600);    // Optional. Set the validity period of the playback URL in seconds. This value overwrites the validity period configured in the ApsaraVideo VOD console. Default: 3600. Make sure that the value is greater than the video duration to prevent URL expiration during playback.
        
   // If you enable HLS encryption parameter pass-through in the ApsaraVideo VOD console, the default parameter is MtsHlsUriToken. Specify config and pass it with your VidAuth data source.
   VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
   vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
   vidAuth.setPlayerConfig(config);
   aliPlayer.setDataSource(vidAuth);

VidSts

A reprodução via VidSts usa credenciais STS temporárias em vez de credenciais de reprodução VOD. Antes de reproduzir vídeos VOD com VidSts, obtenha um token STS e um par AccessKey (AccessKey ID e AccessKey secret). Para mais detalhes, consulte Obtain an STS token.

Caso a passagem de parâmetros de criptografia HLS esteja ativada no console do ApsaraVideo VOD, o nome padrão do parâmetro é MtsHlsUriToken. Consulte Parameter pass-through for HLS encryption para mais informações.

Código de exemplo:

VidSts vidSts = new VidSts();
       vidSts.setVid("Vid");                               // Required. The video ID (VideoId).
       vidSts.setAccessKeyId("<yourAccessKeyId>");         // Required. The temporary AccessKey ID from STS (AssumeRole).
       vidSts.setAccessKeySecret("<yourAccessKeySecret>"); // Required. The temporary AccessKey secret from STS (AssumeRole).
       vidSts.setSecurityToken("<yourSecurityToken>");     // Required. The STS token from AssumeRole.
       vidSts.setRegion("RegionID");                       // Required. The ApsaraVideo VOD region. Default: cn-shanghai.
       // vidSts.setAuthTimeout(3600);                     // Optional. Set the validity period of the playback URL in seconds. This value overwrites the validity period configured in the ApsaraVideo VOD console. Default: 3600. Make sure that the value is greater than the video duration to prevent URL expiration during playback.
        
       // If you enable HLS encryption parameter pass-through in the ApsaraVideo VOD console, the default parameter is MtsHlsUriToken. Specify config and pass it with your vidSts data source.
       // If it is not enabled, the following configuration is not neccessary.
       VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
       vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
       vidSts.setPlayerConfig(config);
       aliPlayer.setDataSource(vidSts);

UrlSource

Para reproduzir um vídeo VOD com UrlSource, passe diretamente a URL de reprodução.

  • Chame a operação GetPlayInfo para obter URLs de reprodução do ApsaraVideo VOD. Recomendamos integrar o sdk server-side do ApsaraVideo VOD. Para exemplos, consulte o OpenAPI Explorer.

  • Para arquivos locais, garanta que possui permissão de acesso. Use caminhos completos como /sdcard/video/sample.mp4 ou content://media/video/123.

 UrlSource urlSource = new UrlSource();
        urlSource.setUri("your-playback-url"); // Required. A VOD URL, third-party URL, or local file path.
        aliPlayer.setDataSource(urlSource);

Reprodução criptografada

Vídeos VOD suportam criptografia HLS, criptografia proprietária da Alibaba Cloud e criptografia DRM. Para detalhes sobre a reprodução, consulte Play an encrypted video.

Reprodução de stream ao vivo

Para reprodução de streams ao vivo, consulte Standard live streaming playback.

Controlar a reprodução

O ApsaraVideo Player SDK para Android fornece métodos para iniciar, pausar, parar e buscar posições na reprodução.

Preparar o player

Chame prepare para carregar e analisar os dados da mídia.

aliPlayer.prepare();

Iniciar a reprodução

Chame start para começar ou retomar a reprodução.

aliPlayer.start();

Buscar uma posição

Use seekTo para saltar para uma posição específica. Este método é útil quando o usuário arrasta a barra de progresso ou retoma a reprodução de um ponto salvo.

// Specify the target time in milliseconds.
aliPlayer.seekTo(long position);

Para defina a posição inicial antes de chamar prepare, use setStartTime. Essa configuração tem efeito apenas uma vez por chamada de prepare e é limpa automaticamente depois.

// Set the start position in milliseconds. seekMode specifies accurate or inaccurate seeking.
aliPlayer.setStartTime(time, seekMode);

Pausar a reprodução

Chame pause para pausar a reprodução.

aliPlayer.pause();

Parar a reprodução

Chame stop para interromper a reprodução.

aliPlayer.stop();

Desvincular a visualização do player

Após parar a reprodução e antes de destruir a instância do player, desvincule a visualização para liberar recursos de renderização e evitar vazamentos de memória. escolha o método de desvinculação conforme o tipo de visualização em uso.

SurfaceView / TextureView

Chame setSurface passando null para desvincular.

// Unbind the player view
aliPlayer.setSurface(null);

AliDisplayView

Chame setDisplayView passando null para desvincular.

// Unbind the player view
aliPlayer.setDisplayView(null);
Nota

Desvincule a visualização após chamar stop e antes de chamar release ou releaseAsync. A sequência completa para encerrar a reprodução é: stop → desvincular visualização → release / releaseAsync.

Destruir o player

Destrua o player de forma síncrona ou assíncrona.

// Synchronous destroy. Blocks until player resources are released. Automatically calls stop.
aliPlayer.release();
// Asynchronous destroy. Returns immediately. Automatically calls stop.
aliPlayer.releaseAsync();
Nota

Se a resposta rápida da UI for crítica, use releaseAsync. Observe os seguintes pontos:

  • Não realize operações no objeto player durante a destruição assíncrona.

  • A destruição assíncrona inclui um processo de parada assíncrono. Não é necessário parar o player manualmente antes de chamar releaseAsync.

Monitorar o status do player

O ApsaraVideo Player SDK para Android oferece listeners para monitorar eventos de reprodução e mudanças de status.

Defina listeners

configure múltiplos listeners para o player. Recomendamos defina OnErrorListener, OnCompletionListener, OnLoadingStatusListener e OnInfoListener.

aliPlayer.setOnErrorListener(new IPlayer.OnErrorListener() {
    // This callback is triggered if an error occurs when you use the player.

    @Override
    public void onError(ErrorInfo errorInfo) {
        ErrorCode errorCode = errorInfo.getCode(); // The error code.
        String errorMsg = errorInfo.getMsg(); // The error message.
        // errorExtra provides extra error information in a JSON string. For example:
        //{ "Url": "xxx",
   		//	"Module": "NetWork",
    	//	"ModuleCode": "-377",
   		//  "ModuleMessage": "Redirect to a url that is not a media"}
        // Note that the value of ModuleCode is not always the same as the value of errorCode.
        String errorExtra= errorInfo.getExtra();         
        // Stop the player after an error occurs.
        aliPlayer.stop();
    }
});
aliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
    // After you call the aliPlayer.prepare() method, the player starts to read and parse data. This callback is triggered after the data is parsed.

    @Override
    public void onPrepared() {
        // The player is prepared.
    }
});
aliPlayer.setOnCompletionListener(new IPlayer.OnCompletionListener() {
    // This callback is triggered after the playback is complete.
    @Override
    public void onCompletion() {
        // In most cases, you can call the stop method to stop the playback.
        aliPlayer.stop();
    }
});
aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    // The information about the player, such as the current playback position and the buffered position.
    @Override
    public void onInfo(InfoBean infoBean) {
        InfoCode code = infoBean.getCode(); // The information code.
        String msg = infoBean.getExtraMsg();// The information content.
        long value = infoBean.getExtraValue(); // The information value.

        // The current playback position: InfoCode.CurrentPosition.
        // The buffered position: InfoCode.BufferedPosition.
    }
});
aliPlayer.setOnLoadingStatusListener(new IPlayer.OnLoadingStatusListener() {
    // The loading status of the player. You can use this to display a loading screen when the network connection is poor.

    @Override
    public void onLoadingBegin() {
        // The player starts to load data. The video and audio are not ready for playback.
        // In most cases, you can display a circular loading indicator.
    }

    @Override
    public void onLoadingProgress(int percent, float netSpeed) {
        // The loading progress in percentage and the network speed.
        // The network speed is a reserved field. The value is 0.
    }

    @Override
    public void onLoadingEnd() {
        // The player stops loading data. The video and audio are ready for playback.
        // In most cases, you can hide the circular loading indicator.
    }
});

Monitorar mudanças de estado da reprodução

Use o callback onStateChanged para monitorar transições de estado do player.

aliPlayer.setOnStateChangedListener(new IPlayer.OnStateChangedListener() {
    @Override
    public void onStateChanged(int newState) {
        /*
          int idle = 0;
          int initalized = 1;
          int prepared = 2;
          int started = 3;
          int paused = 4;
          int stopped = 5;
          int completion = 6;
          int error = 7;
      */
    }
});

configure a exibição do vídeo

configure como o vídeo é dimensionado, rotacionado e espelhado durante a reprodução.

Modo de dimensionamento

O sdk suporta três modos de dimensionamento:

// Scale to fit the view while maintaining the aspect ratio (letterboxing).
aliPlayer.setScaleMode(ScaleMode.SCALE_ASPECT_FIT);
// Scale to fill the view while maintaining the aspect ratio (cropping).
aliPlayer.setScaleMode(ScaleMode.SCALE_ASPECT_FILL);
// Stretch to fill the view. The aspect ratio is not maintained. Image distortion may occur.
aliPlayer.setScaleMode(ScaleMode.SCALE_TO_FILL);

Rotação

Chame setRotateMode para rotacionar o vídeo. Consulte o ângulo atual com getRotateMode.

// No rotation.
aliPlayer.setRotateMode(RotateMode.ROTATE_0);
// 90° clockwise.
aliPlayer.setRotateMode(RotateMode.ROTATE_90);
// 180° clockwise.
aliPlayer.setRotateMode(RotateMode.ROTATE_180);
// 270° clockwise.
aliPlayer.setRotateMode(RotateMode.ROTATE_270);
// Query the current rotation angle.
aliPlayer.getRotateMode();

Espelhamento

Chame setMirrorMode para espelhar o vídeo. O sdk suporta espelhamento horizontal e vertical:

// No mirroring.
aliPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_NONE);
// Horizontal mirroring.
aliPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_HORIZONTAL);
// Vertical mirroring.
aliPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_VERTICAL);

Obter informações de reprodução

Durante a reprodução, obtenha o progresso, a duração total e o progresso do buffer.

Progresso da reprodução

No callback onInfo, chame getExtraValue para recuperar a posição atual da reprodução em milissegundos.

aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    @Override
    public void onInfo(InfoBean infoBean) {
        if(infoBean.getCode() == InfoCode.CurrentPosition){
            // The current playback position in milliseconds.
            long extraValue = infoBean.getExtraValue();
        }
    }
});

Duração total

A duração do vídeo só fica disponível após o carregamento da mídia. Chame getDuration após o disparo do callback onPrepared.

long duration = aliPlayer.getDuration();

Duração real da reprodução

Recupere a duração efetiva da reprodução em tempo real. Este valor exclui o tempo em que a reprodução esteve pausada ou em buffering.

long playedDuration = aliPlayer.getPlayedDuration(); 

Progresso do buffer

No callback onInfo, verifique InfoCode.BufferedPosition para obter o progresso atual do buffer.

aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    @Override
    public void onInfo(InfoBean infoBean) {
        if(infoBean.getCode() == InfoCode.BufferedPosition){
            // The current buffering progress in milliseconds.
            long extraValue = infoBean.getExtraValue();
        }
    }
});

Métricas de renderização e bitrate em tempo real

Obtenha a taxa de quadros de renderização, bitrate de áudio e vídeo e bitrate de download da rede em tempo real.

// Video rendering frame rate. Returns a float value.
aliPlayer.getOption(IPlayer.Option.RenderFPS);
// Video bitrate. Returns a float value in bit/s.
aliPlayer.getOption(IPlayer.Option.VideoBitrate);
// Audio bitrate. Returns a float value in bit/s.
aliPlayer.getOption(IPlayer.Option.AudioBitrate);
// Network downstream bitrate. Returns a float value in bit/s.
aliPlayer.getOption(IPlayer.Option.DownloadBitrate);

Lidar com eventos de dessincronização de A/V

Em condições extremas, como decodificação de software durante reprodução 4K ou reprodução acelerada de streams HD H.265 em dispositivos de baixo desempenho, o desempenho da decodificação pode ficar abaixo da velocidade de reprodução. O sdk dispara um callback para notificar esse evento.

aliPlayer.setOnAVNotSyncStatusListener(new IPlayer.OnAVNotSyncStatusListener() {
    @Override
    public void onAVNotSyncStart(int type) {
        if (type == 0) {
            //Reduce the playback speed to recover.
            if (aliPlayer.getSpeed() > 1) {
                aliPlayer.setSpeed(1);
            }
        }
        Toast.makeText(getContext(), "Out-of-sync detected" , Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onAVNotSyncEnd() {
        Toast.makeText(getContext(), "Out-of-sync resolved" , Toast.LENGTH_SHORT).show();
    }
});

Controlar o volume

Alterar o volume

Chame setVolume para alterar o volume. Os valores válidos variam de 0 a 2, onde 1 representa o volume original. Valores acima de 1 amplificam o áudio e podem introduzir ruído. Recomendamos não defina o volume acima de 1.

// Set the volume. Valid values: 0 to 2.
aliPlayer.setVolume(1f);
// Get the current volume.
aliPlayer.getVolume();

Silenciar o player

Chame setMute para silenciar ou reativar o som do player.

aliPlayer.setMute(true); 

Defina a velocidade de reprodução

Chame setSpeed para alterar a velocidade de reprodução. Os valores válidos variam de 0.5 a 5. O tom do áudio permanece inalterado em diferentes velocidades.

// Common speeds: 0.5x, 1x, 1.5x, 2x.
aliPlayer.setSpeed(1.0f);

Alternar resoluções

Nota

Para exemplos detalhados de código, consulte o módulo MultiResolution no projeto API-Example.

Streaming ao vivo baseado em UrlSource

Para mais informações, consulte Standard live streaming playback.

Reprodução baseada em VidAuth ou VidSts

Ao usar VidAuth ou VidSts para reprodução VOD, o sdk recupera automaticamente as definições de vídeo do ApsaraVideo VOD. Nenhuma configuração adicional é necessária.

Consultar definições disponíveis

Após o carregamento do vídeo, recupere as definições disponíveis.

// Retrieve all available track.
List<TrackInfo> trackInfos = aliPlayer.getMediaInfo().getTrackInfos();
//Retrieve the available definitions.
for (TrackInfo trackInfo : trackInfos) {
     if(trackInfo.getType() == TrackInfo.Type.TYPE_VOD){
             // Get video definition. 
        String vodDefinition = trackInfo.getVodDefinition();
     }
}

Alternar a definição

Chame selectTrack com o índice da faixa para alternar definições. Obtenha o índice do objeto TrackInfo.

aliPlayer.selectTrack(index);

Escutar eventos de troca de definição

Defina um listener para receber notificações quando a troca de definição for bem-sucedida ou falhar.

aliPlayer.setOnTrackChangedListener(new IPlayer.OnTrackChangedListener() {
    @Override
    public void onChangedSuccess(TrackInfo trackInfo) { }

    @Override
    public void onChangedFail(TrackInfo trackInfo, ErrorInfo errorInfo) { }
});

Ativar troca rápida

Ao ative o modo de troca rápida, as chamadas para selectTrack respondem imediatamente sem aguardar buffering.

PlayerConfig config = aliPlayer.getConfig();
config.mSelectTrackBufferMode = 1;
aliPlayer.setConfig(config)

Ativar reprodução em loop

Chame setLoop para ative a reprodução em loop. Ao atingir o fim, a reprodução reinicia automaticamente do começo.

aliPlayer.setLoop(true);

O callback onInfo é disparado quando a reprodução em loop reinicia.

aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    @Override
    public void onInfo(InfoBean infoBean) {
        if (infoBean.getCode() == InfoCode.LoopingStart){
            //Loop playback restarted.
        }
    }
});

Alternar faixas de áudio

O ApsaraVideo Player SDK para Android suporta a troca de faixas de áudio, permitindo alternar entre idiomas diferentes durante a reprodução.

Tipos de stream suportados

Alterne faixas de áudio nos seguintes tipos de stream. O comportamento da troca varia conforme o tipo.

Tipo de stream

Extensão

Contagem de bitrate

Tipo de substream

Comportamento da troca

Stream sem lista (MP4)

.mp4

1

Uma faixa de vídeo, múltiplas faixas de áudio e legenda

Permite alternar entre faixas de áudio.

HLS misto de bitrate único

.m3u8

1

Uma faixa de vídeo, múltiplas faixas de áudio e legenda

Permite alternar entre faixas de áudio.

HLS de bitrate único

.m3u8

1

Substreams separados de vídeo, áudio e legenda

Permite alternar entre faixas de áudio.

HLS misto de multi-bitrate

.m3u8

n

Substreams com bitrates diferentes, cada um com um vídeo e múltiplas faixas de áudio

Permite alternar apenas entre substreams, não entre faixas de áudio dentro de um substream.

Exemplo de uso

  1. Defina o callback onSubTrackReady. Geralmente, este callback é disparado antes do callback onPrepared.

    aliPlayer.setOnSubTrackReadyListener(new IPlayer.OnSubTrackReadyListener() {
        @Override
        //onSubTrackReady. Typically triggered before the onPrepared callback.
        public void onSubTrackReady(MediaInfo mediaInfo) {
            if (mPlayerTrackFragment != null) {
                //mPlayerTrackFragment.showMediaInfo();
                // Call getSubMediaInfo after this callback is triggered. Calling it before this callback returns an empty result.
                MediaInfo subMediaInfo = aliPlayer.getSubMediaInfo();
                TrackInfos = subMediaInfo.getTrackInfos();
                // Find the target audio track from the track list.
                myTrack = myfunc(TrackInfos)
            }
        }
    });
  2. Alterne para a faixa de áudio desejada.

    index = myTrack.getIndex();
    aliPlayer.selectTrack(index);

Usar thumbnails

Nota

Para exemplos detalhados de código, consulte o módulo Thumbnail no projeto API-Example.

Antes de usar thumbnails, configure snapshots sprite para o seu vídeo. No console do ApsaraVideo VOD, crie um modelo de snapshot com Image Sprite como tipo de snapshot e, em seguida, crie um workflow para processar o vídeo. Para mais informações, consulte Video snapshots.

mAliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
    @Override
    public void onPrepared() {
        // 1. Create a ThumbnailHelper instance with the sprite snapshot URL.
        ThumbnailHelper mThumbnailHelper = new ThumbnailHelper(URL);
        // 2. Set listeners.
        mThumbnailHelper.setOnPrepareListener(new ThumbnailHelper.OnPrepareListener() {
            @Override
            public void onPrepareSuccess() {
                // 4. After the thumbnail is loaded, request thumbnails at specific positions.
            }
            @Override
            public void onPrepareFail() {}
        });

        mThumbnailHelper.setOnThumbnailGetListener(new ThumbnailHelper.OnThumbnailGetListener() {
            @Override
            public void onThumbnailGetSuccess(long positionMs, ThumbnailBitmapInfo thumbnailBitmapInfo) {
                // 5. Get the thumbnail bitmap at the specified position.
                Bitmap thumbnailBitmap = thumbnailBitmapInfo.getThumbnailBitmap();
            }
            @Override
            public void onThumbnailGetFail(long positionMs, String errorMsg) {}
        });

        // 3. Load the thumbnail.
        mThumbnailHelper.prepare();
    }
});

Obter logs do sdk

Os logs do sdk contêm informações detalhadas como status de requisições, resultados de invocações e solicitações de permissão. Use esses logs para depurar problemas durante o desenvolvimento. O sdk oferece dois métodos para obter logs.

Método 1: visualize logs no console da ferramenta de desenvolvimento

Use este método quando conseguir reproduzir o problema de forma confiável no dispositivo.

  1. ative o log e defina o nível de log.

    // Logs are stored under com.cicada.player.utils.
    Logger.getInstance(context).enableConsoleLog(true);
    // Default: AF_LOG_LEVEL_INFO. Use AF_LOG_LEVEL_TRACE for troubleshooting.
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_INFO);
  2. (Opcional) ative o log nível de quadro para solução de problemas.

    // 0: disabled, 1: enabled.
    Logger.getInstance(this).setLogOption(Logger.LogOption.FRAME_LEVEL_LOGGING_ENABLED, value);
  3. Reproduza o problema e recupere o log de erro no Logcat ou no console da sua ferramenta de desenvolvimento.

Método 2: Defina LogCallback para receber logs programaticamente

Use este método quando não for possível reproduzir o problema de forma confiável no dispositivo. O callback exporta logs para o canal de log da sua aplicação.

  1. ative o log e defina o nível de log.

    // Logs are stored under com.cicada.player.utils.
    // Default: AF_LOG_LEVEL_INFO. Use AF_LOG_LEVEL_TRACE for troubleshooting.
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_INFO);
    Logger.getInstance(mContext).setLogCallback(newLogger.OnLogCallback(){
            @Override
            public void onLog(Logger.LogLevel logLevel,Strings){
                // Process the log entry.
            }
    });
  2. Após a ocorrência de um erro, o sdk exporta automaticamente o log de erro para o canal de log da sua aplicação.

Referências