2017-04-24 5 views
0

ich von mir eine Steuerung für ein VideoView erschaffe (Ich weiß, dass es einfacher ist, ein Controller zu verwenden, aber es ist eine Schule Hausaufgaben), so dass die App Erscheinung ist die folgende (ein VideoView mit einem SeekBar und 3 Buttons)Android Videoview mit Dauer -1

im onCreate Methode, die ich diesen Code geschrieben haben

VideoView vwVideo = (VideoView) findViewById(R.id.videoView); 
vwVideo.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.baby); 

SeekBar skbPosition = (SeekBar) findViewById(R.id.seekBarVideo); 
skbPosition.setMax(vwVideo.getDuration()); 

aber getDuration() retu rns -1, vielleicht weil das Video noch nicht geladen wurde (* .mp4, 4,47 MB, 00:01:44), also habe ich mich entschieden den Maximalwert des SeekBar einzustellen, wenn der Button "Play" angeklickt wird aber ich Ich weiß nicht, ob das der beste Weg ist, das Problem zu lösen.

Gibt es eine bessere Lösung?

Antwort

1

Wenn Sie die Dauer des Videos erhalten möchten, können Sie dies mit MediaMetadataRetriever tun.

MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
//use setDataSource() functions to set your data source 
retriever.setDataSource(context, Uri.fromFile(videoFile)); 
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
long timeInMillisec = Long.parseLong(time); 

Aktualisieren Sie mich, wenn irgendein Problem.