Ich habe ein Problem beim Ausführen eines Videos in Samsung S3 (Android 4.1.1), das Problem scheint zu sein, weil die Videowiedergabe auf einem Fragment ist, weil, wenn ich es auf und Aktivität, es funktioniert. Auch ich habe herausgefunden, dass, wenn ich die GPU-Hardwarebeschleunigung einschalte, das Video funktioniert. Ich habe auch ein Spiel gemacht, indem ich auf einer SurfaceView gezeichnet habe und diese Ansicht funktioniert nicht so gut (nur mit GPU an) ... Der Rest des App-Inhalts wird so angezeigt, wie er soll (Schaltflächen und andere Layouts).VideoView wird nicht auf einem Fragment angezeigt
ich die App auf Nexus S getestet und auf dem Emulator und es funktioniert gut, auch auf anderen Geräten ..
Wer weiß, was das Problem sein könnte? Vielen Dank!
Und hier ist der Code:
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;
}
}
Ich glaube nicht, dass es etwas zu Kontext (Anwendung oder Aktivität) .. da auf allen anderen Geräten das Video und die Spiele werden angezeigt .. Dank Zusammenhang ist für die Hilfe!
Bitte geben Sie den Fragment- und Layoutcode ein, der sich auf den VideoView bezieht. Ohne das ist es schwer zu sagen, was falsch läuft. –
Hinzugefügt den Code auch, sorry .. die Sache ist, dass ich diese Video Fragment Klasse und ein Spiel, das ist eigentlich eine SurfaceView und ich zeichne auf dieser Oberfläche, so dass ich glaube nicht, dass dies mit meinem Code verwandt ist .. wenn die Bildschirme auf einer Aktivität laufen dann beide gut funktionieren ..Danke für die Hilfe – Cata