Tous les produits
Search
Centre de documentation

ApsaraVideo VOD:Fonctionnalités de base du SDK ApsaraVideo Player pour Android

Dernière mise à jour :Aug 19, 2026

Cette rubrique explique comment utiliser les fonctionnalités de base du SDK ApsaraVideo Player pour Android. Vous apprendrez à configurer les sources de lecture, à ajuster le volume et la vitesse de lecture, à changer de résolution et de piste audio, etc.

Important

Pour exécuter et tester la démo, Télécharger le SDK ApsaraVideo Player puis suivez les instructions de la section Exécuter la démo pour la compiler et l'exécuter.

Configurer une source vidéo

Le SDK ApsaraVideo Player pour Android prend en charge la lecture de vidéos à la demande (VOD) et la diffusion en direct.

  • Méthodes de lecture VOD : VidAuth (recommandé pour les utilisateurs d'ApsaraVideo VOD), VidSts, UrlSource et lecture chiffrée.

  • Méthodes de lecture en direct : UrlSource et lecture chiffrée.

Remarque
  • UrlSource lit les médias à partir d'une URL. VidSts et VidAuth lisent les médias via leur ID (Vid).

  • Pour plus d'informations sur les régions prises en charge, consultez les ID de région ApsaraVideo VOD.

Lecture VOD

VidAuth (Recommandé)

Pour lire une vidéo VOD avec VidAuth, définissez la propriété vid sur l'ID du média et la propriété playAuth sur l'identifiant de lecture.

  • ID du média : Vous obtenez l'ID du média après avoir téléchargé un fichier multimédia. Dans la console ApsaraVideo VOD, choisissez Media Files > Audio/Video. Vous pouvez également appeler l'API SearchMedia.

  • Identifiant de lecture : Appelez l'opération GetVideoPlayAuth pour obtenir l'identifiant de lecture. Nous vous recommandons d'intégrer le SDK côté serveur ApsaraVideo VOD afin d'éviter la génération manuelle de signatures. Pour des exemples, consultez OpenAPI Explorer.

Nous recommandons VidAuth plutôt que VidSts pour les utilisateurs d'ApsaraVideo VOD, car VidAuth offre une meilleure utilisabilité et une sécurité accrue. Pour plus d'informations, consultez la section Méthode par identifiant vs méthode STS.

Si vous activez le transfert de paramètres de chiffrement HLS dans la console ApsaraVideo VOD, le nom de paramètre par défaut est MtsHlsUriToken. Pour plus d'informations, consultez la section Transfert de paramètres pour le chiffrement HLS.

Exemple de code :

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

La lecture VidSts utilise des identifiants STS temporaires au lieu des identifiants de lecture VOD. Avant de lire des vidéos VOD avec VidSts, obtenez un jeton STS et une paire AccessKey (AccessKey ID et AccessKey Secret). Pour plus d'informations, consultez la section Obtenir un jeton STS.

Si vous activez le transfert de paramètres de chiffrement HLS dans la console ApsaraVideo VOD, le nom de paramètre par défaut est MtsHlsUriToken. Pour plus d'informations, consultez la section Transfert de paramètres pour le chiffrement HLS.

Exemple de code

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

Pour lire une vidéo VOD avec UrlSource, transmettez directement l'URL de lecture.

  • Appelez l'opération GetPlayInfo pour obtenir les URL de lecture depuis ApsaraVideo VOD. Nous vous recommandons d'intégrer le SDK côté serveur ApsaraVideo VOD. Pour des exemples, consultez OpenAPI Explorer

  • Pour les fichiers locaux, assurez-vous de disposer des autorisations nécessaires pour y accéder. Utilisez des chemins complets tels que /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);

Lecture chiffrée

Les vidéos VOD prennent en charge le chiffrement HLS, la cryptographie propriétaire Alibaba Cloud et le chiffrement DRM. Pour la lecture, consultez la section Lire une vidéo chiffrée.

Lecture en direct

Pour la lecture en direct, consultez la section Lecture standard en direct.

Contrôler la lecture

Le SDK ApsaraVideo Player pour Android fournit des méthodes pour démarrer, mettre en pause, arrêter et rechercher une position dans la lecture.

Préparer le lecteur

Appelez prepare pour charger et analyser les données multimédias.

aliPlayer.prepare();

Démarrer la lecture

Appelez start pour commencer ou reprendre la lecture.

aliPlayer.start();

Rechercher une position

Appelez seekTo pour accéder à une position spécifique. Cette méthode est utile lorsque les utilisateurs font glisser la barre de progression ou reprennent la lecture à partir d'une position enregistrée.

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

Pour définir la position de début de lecture avant d'appeler prepare, utilisez setStartTime. Ce paramètre ne prend effet qu'une seule fois par appel à prepare et est automatiquement effacé ensuite.

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

Mettre en pause la lecture

Appelez pause pour mettre la lecture en pause.

aliPlayer.pause();

Arrêter la lecture

Appelez stop pour arrêter la lecture.

aliPlayer.stop();

Dissocier la vue du lecteur

Après avoir arrêté la lecture et avant de détruire l'instance du lecteur, dissociez la vue du lecteur pour libérer les ressources de rendu et éviter les fuites de mémoire. Choisissez la méthode de dissociation en fonction du type de vue du lecteur utilisé.

SurfaceView / TextureView

Appelez setSurface avec null pour dissocier.

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

AliDisplayView

Appelez setDisplayView avec null pour dissocier.

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

Dissociez la vue du lecteur après avoir appelé stop et avant d'appeler release ou releaseAsync. La séquence complète de fin de lecture est la suivante : stop → dissocier la vue → release / releaseAsync.

Détruire le lecteur

Vous pouvez détruire le lecteur de manière synchrone ou asynchrone.

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

Si vous avez des exigences élevées en matière de réactivité de l'interface utilisateur, utilisez releaseAsync. Notez les points suivants :

  • N'effectuez aucune opération sur l'objet lecteur pendant la destruction asynchrone.

  • La destruction asynchrone inclut un processus d'arrêt asynchrone. Vous n'avez pas besoin d'arrêter manuellement le lecteur avant d'appeler releaseAsync.

Surveiller l'état du lecteur

Le SDK ApsaraVideo Player pour Android fournit des écouteurs pour surveiller les événements de lecture et les changements d'état.

Définir les écouteurs

Vous pouvez définir plusieurs écouteurs pour le lecteur. Nous vous recommandons de définir OnErrorListener, OnCompletionListener, OnLoadingStatusListener et 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.
    }
});

Surveiller les changements d'état de lecture

Utilisez le rappel onStateChanged pour surveiller les transitions d'état du lecteur.

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;
      */
    }
});

Configurer l'affichage vidéo

Configurez la mise à l'échelle, la rotation et la mise en miroir de la vidéo pendant la lecture.

Mode de mise à l'échelle

Le SDK prend en charge trois modes de mise à l'échelle :

// 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);

Rotation

Appelez setRotateMode pour faire pivoter la vidéo. Vous pouvez interroger l'angle de rotation actuel avec 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();

Mise en miroir

Appelez setMirrorMode pour mettre la vidéo en miroir. Le SDK prend en charge la mise en miroir horizontale et verticale :

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

Obtenir des informations de lecture

Vous pouvez obtenir la progression de la lecture, la durée totale et la progression de la mise en mémoire tampon pendant la lecture.

Progression de la lecture

Dans le rappel onInfo, appelez getExtraValue pour récupérer la position de lecture actuelle en millisecondes.

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();
        }
    }
});

Durée totale

La durée de la vidéo n'est disponible qu'après le chargement du média. Appelez getDuration après le déclenchement du rappel onPrepared.

long duration = aliPlayer.getDuration();

Durée de lecture réelle

Vous pouvez récupérer la durée de lecture réelle en temps réel. Cette valeur exclut le temps pendant lequel la lecture est en pause ou en cours de mise en mémoire tampon.

long playedDuration = aliPlayer.getPlayedDuration(); 

Progression de la mise en mémoire tampon

Dans le rappel onInfo, vérifiez la présence de InfoCode.BufferedPosition pour obtenir la progression actuelle de la mise en mémoire tampon.

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étriques de rendu et de débit en temps réel

Obtenez le taux de trames de rendu, le débit audio et vidéo, ainsi que le débit descendant du réseau en temps réel.

// 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);

Gérer les événements de désynchronisation audio/vidéo

Dans des conditions extrêmes, telles que le décodage logiciel lors de la lecture 4K ou la lecture à haute vitesse de flux H.265 HD sur des appareils bas de gamme, les performances de décodage peuvent être inférieures à la vitesse de lecture. Le SDK déclenche un rappel pour vous informer de cet événement.

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();
    }
});

Contrôler le volume

Modifier le volume

Appelez setVolume pour modifier le volume. Les valeurs valides vont de 0 à 2, où 1 correspond au volume d'origine. Les valeurs supérieures à 1 amplifient l'audio et peuvent introduire du bruit. Nous vous recommandons de ne pas régler le volume sur une valeur supérieure à 1.

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

Couper le son du lecteur

Appelez setMute pour couper ou rétablir le son du lecteur.

aliPlayer.setMute(true); 

Définir la vitesse de lecture

Appelez setSpeed pour modifier la vitesse de lecture. Les valeurs valides vont de 0.5 à 5. La hauteur tonale de l'audio reste inchangée à différentes vitesses.

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

Changer de résolution

Remarque

Pour des exemples de code détaillés, consultez le module MultiResolution du projet API-Example.

Diffusion en direct basée sur UrlSource

Pour plus d'informations, consultez la section Lecture standard en direct.

Lecture basée sur VidAuth ou VidSts

Si vous utilisez VidAuth ou VidSts pour la lecture VOD, le SDK récupère automatiquement les définitions vidéo depuis ApsaraVideo VOD. Aucune configuration supplémentaire n'est requise.

Interroger les définitions disponibles

Une fois la vidéo chargée, récupérez les définitions disponibles.

// 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();
     }
}

Changer de définition

Appelez selectTrack avec l'index de la piste pour changer de définition. Obtenez l'index à partir de l'objet TrackInfo.

aliPlayer.selectTrack(index);

Écouter les événements de changement de définition

Définissez un écouteur pour recevoir des notifications lorsque le changement de définition réussit ou échoue.

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

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

Activer le changement rapide

Après avoir activé le mode de changement rapide, les appels à selectTrack répondent immédiatement sans attendre la mise en mémoire tampon.

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

Activer la lecture en boucle

Appelez setLoop pour activer la lecture en boucle. Lorsque la lecture atteint la fin, elle redémarre automatiquement depuis le début.

aliPlayer.setLoop(true);

Le rappel onInfo est déclenché lorsque la lecture en boucle redémarre.

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

Changer de piste audio

Le SDK ApsaraVideo Player pour Android prend en charge le changement de piste audio, ce qui vous permet de basculer entre des pistes audio dans différentes langues pendant la lecture.

Types de flux pris en charge

Vous pouvez changer de piste audio dans les types de flux suivants. Le comportement de commutation varie selon le type de flux.

Type de flux

Extension

Nombre de débits

Type de sous-flux

Comportement de commutation

Flux non listé (MP4)

.mp4

1

Une piste vidéo, plusieurs pistes audio et sous-titres

Vous pouvez basculer entre les pistes audio.

HLS mixte à débit unique

.m3u8

1

Une piste vidéo, plusieurs pistes audio et sous-titres

Vous pouvez basculer entre les pistes audio.

HLS à débit unique

.m3u8

1

Sous-flux vidéo, audio et légendes séparés

Vous pouvez basculer entre les pistes audio.

HLS mixte multi-débits

.m3u8

n

Sous-flux avec différents débits, chacun avec une vidéo et plusieurs pistes audio

Vous ne pouvez basculer qu'entre les sous-flux, pas entre les pistes audio au sein d'un sous-flux.

Exemple d'utilisation

  1. Définissez le rappel onSubTrackReady. Ce rappel est généralement déclenché avant le rappel 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. Basculez vers la piste audio cible.

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

Utiliser les vignettes

Remarque

Pour des exemples de code détaillés, consultez le module Thumbnail du projet API-Example.

Avant d'utiliser les vignettes, configurez des instantanés sprite pour votre vidéo. Dans la console ApsaraVideo VOD, créez un modèle d'instantané avec Image Sprite comme type d'instantané, puis créez un workflow pour traiter la vidéo. Pour plus d'informations, consultez la section Instantanés vidéo.

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();
    }
});

Obtenir les journaux du SDK

Les journaux du SDK contiennent des informations détaillées telles que l'état des requêtes, les résultats des invocations et les demandes d'autorisation. Vous pouvez utiliser ces journaux pour déboguer les problèmes lors du développement. Le SDK propose deux méthodes pour obtenir les journaux.

Méthode 1 : Afficher les journaux dans la console de l'outil de développement

Utilisez cette méthode lorsque vous pouvez reproduire le problème de manière fiable sur votre appareil.

  1. Activez la journalisation et définissez le niveau de journal.

    // 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. (Facultatif) Activez la journalisation au niveau des trames pour le dépannage.

    // 0: disabled, 1: enabled.
    Logger.getInstance(this).setLogOption(Logger.LogOption.FRAME_LEVEL_LOGGING_ENABLED, value);
  3. Reproduisez le problème et récupérez le journal d'erreur depuis Logcat ou la console de votre outil de développement.

Méthode 2 : Définir LogCallback pour recevoir les journaux par programmation

Utilisez cette méthode lorsque vous ne pouvez pas reproduire le problème de manière fiable sur votre appareil. Le rappel exporte les journaux vers le canal de journalisation de votre application.

  1. Activez la journalisation et définissez le niveau de journal.

    // 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. Lorsqu'une erreur se produit, le SDK exporte automatiquement le journal d'erreur vers le canal de journalisation de votre application.

Références