Questa procedura illustra come creare un pulsante che consenta all'utente di selezionare una traccia di sottotitoli codificati.
Crea un pulsante per modificare la traccia dei sottotitoli.
<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" />
Converte l'elenco delle tracce di sottotitoli codificati disponibili in una matrice di stringhe.
I brani dei sottotitoli codificati con attività, ovvero i canali per i quali TVSDK ha rilevato i dati, vengono contrassegnati di conseguenza.
/**
* 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()]);
}
Quando l'utente fa clic sul pulsante, visualizza una finestra di dialogo in cui sono elencate tutte le tracce predefinite dei sottotitoli.
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();
}