11package com .frank .ffmpeg .activity ;
22
3- import android .os .Environment ;
4- import android .support .v7 .app .AppCompatActivity ;
53import android .os .Bundle ;
64import android .util .Log ;
75import android .view .SurfaceHolder ;
86import android .view .SurfaceView ;
7+ import android .view .View ;
8+ import android .widget .Button ;
9+
910import com .frank .ffmpeg .MediaPlayer ;
1011import com .frank .ffmpeg .R ;
1112import com .frank .ffmpeg .util .FileUtil ;
1213
13- import java .io .File ;
14-
1514/**
1615 * 音视频解码播放
1716 * Created by frank on 2018/2/12.
1817 */
1918
20- public class MediaPlayerActivity extends AppCompatActivity implements SurfaceHolder .Callback {
19+ public class MediaPlayerActivity extends BaseActivity implements SurfaceHolder .Callback {
20+
2121 private static final String TAG = MediaPlayerActivity .class .getSimpleName ();
22- SurfaceHolder surfaceHolder ;
23- private final static String PATH = Environment . getExternalStorageDirectory (). getPath () + File . separator ;
24- private String filePath = PATH + "hello.mp4" ;
22+
23+ private SurfaceHolder surfaceHolder ;
24+
2525 private MediaPlayer mediaPlayer ;
2626
27+ private boolean surfaceCreated ;
28+
29+ private Button btnSelectFile ;
30+
31+ @ Override
32+ int getLayoutId () {
33+ return R .layout .activity_media_player ;
34+ }
35+
2736 @ Override
2837 protected void onCreate (Bundle savedInstanceState ) {
2938 super .onCreate (savedInstanceState );
30- setContentView (R .layout .activity_media_player );
39+
40+ hideActionBar ();
3141 initView ();
3242 initPlayer ();
3343 }
3444
3545 private void initView (){
36- SurfaceView surfaceView = ( SurfaceView ) findViewById (R .id .surface_media );
46+ SurfaceView surfaceView = getView (R .id .surface_media );
3747 surfaceHolder = surfaceView .getHolder ();
3848 surfaceHolder .addCallback (this );
39-
40- // Button btn_slow = (Button) findViewById(R.id.btn_play_slow);
41- // Button btn_fast = (Button) findViewById(R.id.btn_play_fast);
49+ btnSelectFile = getView (R .id .btn_select_file );
50+ initViewsWithClick (R .id .btn_select_file );
4251 }
4352
4453 private void initPlayer (){
@@ -47,21 +56,7 @@ private void initPlayer(){
4756
4857 @ Override
4958 public void surfaceCreated (SurfaceHolder holder ) {
50- if (!FileUtil .checkFileExist (filePath )){
51- return ;
52- }
53-
54- new Thread (new Runnable () {
55- @ Override
56- public void run () {
57- int result = mediaPlayer .setup (filePath , surfaceHolder .getSurface ());
58- if (result < 0 ){
59- Log .e (TAG , "mediaPlayer-->setup" );
60- return ;
61- }
62- mediaPlayer .play ();
63- }
64- }).start ();
59+ surfaceCreated = true ;
6560 }
6661
6762 @ Override
@@ -83,4 +78,35 @@ protected void onDestroy() {
8378 }
8479 }
8580
81+ private void startPlay (final String filePath ) {
82+ new Thread (new Runnable () {
83+ @ Override
84+ public void run () {
85+ int result = mediaPlayer .setup (filePath , surfaceHolder .getSurface ());
86+ if (result < 0 ){
87+ Log .e (TAG , "mediaPlayer setup error!" );
88+ return ;
89+ }
90+ mediaPlayer .play ();
91+ }
92+ }).start ();
93+ }
94+
95+ @ Override
96+ void onSelectedFile (String filePath ) {
97+ if (!FileUtil .checkFileExist (filePath )){
98+ return ;
99+ }
100+ if (surfaceCreated ) {
101+ btnSelectFile .setVisibility (View .GONE );
102+ startPlay (filePath );
103+ }
104+ }
105+
106+ @ Override
107+ void onViewClick (View view ) {
108+ if (view .getId () == R .id .btn_select_file ) {
109+ selectFile ();
110+ }
111+ }
86112}
0 commit comments