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 ....
comment mettre en œuvre ces méthodes ??? –
mVideoView = (EMVideoView) findViewById (R.id.video_view); Contrôles VideoControls = mVideoView.getVideoControls(); controls.setNextButtonEnabled (true); controls.setPreviousButtonEnabled (true); –
Je ne suis pas en mesure d'utiliser EMVideoView lorsque je l'utilise l'application se bloque –