0

J'utilise la bibliothèque ExoMedia pour lire les fichiers hls dans mon application Android. Mais je ne suis pas en mesure d'afficher les commandes vidéo comme bouton de recherche, il affiche seulement le bouton de lecture et rien d'autre. Lorsque j'essaie d'utiliser EMVideoView, l'application se bloque. Je Android Studio 4. Canary est ici le CodeComment afficher les commandes vidéo dans la bibliothèque ExoMedia

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<com.devbrackets.android.exomedia.ui.widget.VideoView 
    android:id="@+id/video_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:useDefaultControls="true"/> 
</RelativeLayout> 

ici si au lieu de VideoView j'utilise EMVideoView alors les application se bloque.

public class ExternalPlayer extends AppCompatActivity implements 
    OnPreparedListener { 

private FullScreenListener fullScreenListener = new FullScreenListener(); 
private VideoView videoView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_external_player); 
    setupVideoView(); 
    initUiFlags(); 
    if (videoView.getVideoControls() != null) { 
     videoView.getVideoControls().setVisibilityListener(new ControlsVisibilityListener()); 
    } 
} 

private void setupVideoView() { 
    // Make sure to use the correct VideoView import 
    Intent intent = getIntent(); 
    String link = intent.getStringExtra("url"); 
    videoView = (VideoView)findViewById(R.id.video_view); 
    videoView.setOnPreparedListener(ExternalPlayer.this); 
    videoView.showControls(); 
    //Uri coming from MOMScreen to play 
    videoView.setVideoURI(Uri.parse(link)); 
} 

@Override 
public void onPrepared() { 
    videoView.start(); 
} 



@Override 
public void onDestroy() { 
    super.onDestroy(); 
    exitFullscreen(); 
} 

private void goFullscreen() { 
    setUiFlags(true); 
} 

private void exitFullscreen() { 
    setUiFlags(false); 
} 

private void initUiFlags() { 
    int flags = View.SYSTEM_UI_FLAG_VISIBLE; 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; 
    } 

    View decorView = getWindow().getDecorView(); 
    if (decorView != null) { 
     decorView.setSystemUiVisibility(flags); 
     decorView.setOnSystemUiVisibilityChangeListener(fullScreenListener); 
    } 
} 

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
private void setUiFlags(boolean fullscreen) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
     View decorView = getWindow().getDecorView(); 
     if (decorView != null) { 
      decorView.setSystemUiVisibility(fullscreen ? getFullscreenUiFlags() : View.SYSTEM_UI_FLAG_VISIBLE); 
     } 
    } 
} 

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
private int getFullscreenUiFlags() { 
    int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; 
    } 

    return flags; 
} 

private class FullScreenListener implements View.OnSystemUiVisibilityChangeListener { 
    @Override 
    public void onSystemUiVisibilityChange(int visibility) { 
     if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
      videoView.showControls(); 

     } 
    } 
} 


private class ControlsVisibilityListener implements VideoControlsVisibilityListener { 
    @Override 
    public void onControlsShown() { 
     // No additional functionality performed 

    } 

    @Override 
    public void onControlsHidden() { 
     goFullscreen(); 
    } 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
} 

}

J'ai essayé toutes les méthodes pour afficher le contrôle selon ma connaissance, mais aucun d'entre eux travaillaient. Toutes les suggestions s'il vous plaît ....

Répondre

0

Je faisais aussi face au même problème. Ensuite, il a été corrigé à l'aide du référentiel ci-dessous. Vous pouvez également le référer, si vous êtes un autre. Cela peut vous aider.

https://github.com/brianwernick/ExoMedia

Les commandes vidéo sont expliqués dans le lien ci-dessous. https://devbrackets.com/dev/libs/docs/exomedia/3.1.0/com/devbrackets/android/exomedia/ui/widget/VideoControls.html#setNextButtonEnabled-boolean-

plus spécifiquement setNextButtonEnabled() et setNextButtonRemoved()

+0

comment mettre en œuvre ces méthodes ??? –

+0

mVideoView = (EMVideoView) findViewById (R.id.video_view); Contrôles VideoControls = mVideoView.getVideoControls(); controls.setNextButtonEnabled (true); controls.setPreviousButtonEnabled (true); –

+0

Je ne suis pas en mesure d'utiliser EMVideoView lorsque je l'utilise l'application se bloque –