Questo è un esempio di come creare un pulsante che consente a un utente di selezionare una traccia di sottotitoli.
Create un semplice 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 sottotitoli codificati che presentano 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 elencati tutti i brani CC predefiniti.
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();
}