Ho un problema nell'esecuzione di un video in Samsung S3 (Android 4.1.1), il problema sembra essere dovuto al fatto che la videoview si trova su un frammento perché se la inserisco e l'attività, lavori. Inoltre ho scoperto che se accendo l'accelerazione hardware della GPU, il video funziona. Ho anche un gioco creato disegnando su un SurfaceView e quella vista non funziona bene (solo con GPU su) ... Il resto del contenuto dell'app viene visualizzato come previsto (pulsanti e altri layout).VideoView non è visualizzato su un frammento
Ho testato l'applicazione su Nexus S e sull'emulatore e funziona benissimo, anche su altri dispositivi ..
Qualcuno sa che il problema potrebbe essere? Grazie!
Ed ecco il codice:
public class VideoFragment extends Fragment implements MediaPlayer.OnCompletionListener,
MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener {
private Video mVideo;
private VideoView mVideoView;
// The video position
private int mPosition;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View fragmentView = inflater.inflate(R.layout.screen_video, container, false);
mVideoView = (VideoView) fragmentView.findViewById(R.id.VideoView);
return fragmentView;
}
@Override
public void onPause() {
super.onPause();
// Pause the video if it is playing
if (mVideoView.isPlaying()) {
mVideoView.pause();
}
// Save the current video position
mPosition = mVideoView.getCurrentPosition();
}
@Override
public void onResume() {
super.onResume();
mVideoView.setOnCompletionListener(this);
mVideoView.setOnPreparedListener(this);
mVideoView.setOnErrorListener(this);
mVideoView.setKeepScreenOn(true);
// Initialize the media controller
MediaController mediaController = new MediaController(getActivity());
mediaController.setMediaPlayer(mVideoView);
// Set-up the video view
mVideoView.setMediaController(mediaController);
mVideoView.requestFocus();
mVideoView.setVideoPath(mVideo.getUrl());
if (mVideoView != null) {
// Restore the video position
mVideoView.seekTo(mPosition);
mVideoView.requestFocus();
}
}
@Override
public void onDestroy() {
super.onDestroy();
// Clean-up
if (mVideoView != null) {
mVideoView.stopPlayback();
mVideoView = null;
}
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Log.e("VIDEO PLAY", "end video play");
}
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// Start the video view
mediaPlayer.start();
Log.e("VIDEO PLAY", "video ready for playback");
}
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
Log.e("VIDEO PLAY", "error: " + i);
return true;
}
}
non credo che sia qualcosa legato al contesto (Application o Attività) .. perché su tutti gli altri dispositivi vengono visualizzati il video e giochi .. Grazie per l'aiuto!
Si prega di inviare il Frammento e il codice di layout che si riferisce alla VideoView. Senza questo, difficile dire cosa non va. –
Aggiunto anche il codice, scusa .. il fatto è che io uso questa classe Frammento video e un gioco che è in realtà un SurfaceView e disegno su quella superficie quindi non penso che questo sia collegato al mio codice .. se gli schermi correre su un'attività quindi entrambi funzionano bene ..Grazie per l'aiuto – Cata