Red de conocimiento informático - Material del sitio web - Cómo integrar vlc en el sistema Android

Cómo integrar vlc en el sistema Android

Los usuarios que hayan realizado el trasplante de vlc-android deben saber que después de compilar el código fuente de vlc-android EventManager.java, la clase define una gran cantidad de eventos. Lo siguiente es parte del código fuente: p>

public class EventManager {

/*

* Asegúrese de suscribirse también a los eventos que necesita en JNI.

*/

/public static final int MediaMetaChanged = 0;

/public static final int MediaSubItemAdded = 1; static final int MediaDurationChanged = 2;

//public static final int MediaParsedChanged = 3;

//public static final int MediaFreed = 4; public static final int MediaStateChanged = 5;

//public static final int MediaPlayerMediaChanged = 0x100;

//public static final int MediaPlayerNothingSpecial = 0x101; /public static final int MediaPlayerOpening = 0x102;

//public static final int MediaPlayerBuffering = 0x103

public static final int MediaPlayerPlaying = 0x104; final int MediaPlayerPaused = 0x105;

public static final int MediaPlayerStopped = 0x106

......

}

Pero Muchos de estos eventos están comentados, por lo que cuando necesitamos un evento comentado, no se agregará incluso si lo descomentamos y llamamos a mEventManager.addHandler(EventManager.getInstance()) para agregar el evento a la definición.

mEventHandler

handleMessage() para escuchar, la siguiente es una demostración que define mEventHandler:

[java] ver copia simple

videoEventHandler final privado mEventHandler = new VideoEventHandler( this);

la clase privada VideoEventHandler extiende WeakHandlerlt; {

VideoEventHandler público (propietario de DtvPlayer) {

super(propietario);

}

@Override

public void handleMessage(Mensaje de mensaje) {

Actividad de DtvPlayer = getOwner();

if( actividad == null) retorno;

cambiar (msg.getData().getInt("event")) {

caso EventManager.MediaPlayerBuffering:

Registro .d(TAG, "MediaPlayerBuffering");

descanso;

caso EventManager.MediaPlayerEncounteredError:

Log.d(TAG, "MediaPlayerEncounteredError");

romper;

......

predeterminado:

Log.e(TAG, String.format("Evento no manejado (0xx)", msg.getData().getInt("evento")));

descanso;

}

super.handleMessage(msg );

}

}

Entonces, ¿cómo escuchamos los eventos que necesitamos en mEventHandler?

Hay una constante estática en libvlcjni.c, que especifica los eventos que necesitamos obtener actualmente:

[html] view Plaincopy

static const libvlc_event_type_t mp_events [] = {

libvlc_MediaPlayerPlaying,

libvlc_MediaPlayerPaused,

libvlc_MediaPlayerEndReached,

libvlc_MediaPlayerStopped,