Este procedimiento es un ejemplo de cómo crear un botón que permita al usuario seleccionar un seguimiento de subtítulos.
Cree un botón para cambiar la pista de subtítulos.
<Button
android:id="@+id/selectCC"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:onClick="selectClosedCaptioningClick"
android:text="CC" />
Convierta la lista de pistas de subtítulos cerrados disponibles en una matriz de cadenas.
Los seguimientos de subtítulos cerrados que tienen actividad, es decir, canales para los que TVSDK ha detectado datos, se marcan como corresponde.
/**
* Converts the closed captions tracks to a string array.
*
* @return array of CC tracks
*/
private String[] getCCsAsArray() {
List<String> closedCaptionsTracksAsStrings = new ArrayList<String>();
MediaPlayerItem currentItem = mediaPlayer.getCurrentItem();
if (currentItem != null) {
List<ClosedCaptionsTrack> closedCaptionsTracks =
currentItem.getClosedCaptionsTracks();
Iterator<ClosedCaptionsTrack> iterator = closedCaptionsTracks.iterator();
while (iterator.hasNext()) {
ClosedCaptionsTrack closedCaptionsTrack = iterator.next();
String isActive = closedCaptionsTrack.isActive() ? " (" +
getString(R.string.active)+ ")" : "";
closedCaptionsTracksAsStrings.add(closedCaptionsTrack.getName() +
isActive);
}
}
return closedCaptionsTracksAsStrings.
toArray(new String[closedCaptionsTracksAsStrings.size()]);
}
Cuando el usuario haga clic en el botón, mostrar un cuadro de diálogo que enumere todas las pistas predeterminadas de subtítulos.
public void selectClosedCaptioningClick(View view) {
Log.i(LOG_TAG + "#selectClosedCaptions", "Displaying closed captions chooser dialog.");
final String items[] = getCCsAsArray();
final AlertDialog.Builder ab = new AlertDialog.Builder(this);
ab.setTitle(R.string.PlayerControlCCDialogTitle);
ab.setSingleChoiceItems(items, selectedClosedCaptionsIndex, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Select the new closed captioning track.
MediaPlayerItem currentItem = mediaPlayer.getCurrentItem();
ClosedCaptionsTrack desiredClosedCaptionsTrack =
currentItem.getClosedCaptionsTracks().get(whichButton);
boolean result = currentItem.selectClosedCaptionsTrack(desiredClosedCaptionsTrack);
if (result) {
selectedClosedCaptionsIndex = whichButton;
}
// Dismiss dialog.
dialog.cancel();
}
}).setNegativeButton(R.string.PlayerControlCCDialogCancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Just cancel the dialog.
}
});
ab.show();
}