Esempio: consenti agli utenti di modificare la traccia della didascalia

Ultimo aggiornamento: 2023-09-21

Questo è un esempio di come creare un pulsante che consente a un utente di selezionare una traccia di sottotitoli.

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

In questa pagina