Consenti agli utenti di modificare la traccia dei sottotitoli

Questa procedura illustra come creare un pulsante che consenta all'utente di selezionare una traccia di sottotitoli codificati.

  1. 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" />
    
  2. 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()]);
    }
    
  3. 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();
    }
    

In questa pagina