android基础--视频播放器

 

public class MainActivity extends Activity {

       private EditText eFileName;

       private ImageButton pauseButton;

       private ImageButton playButton;

       private ImageButton resetButton;

       private ImageButton stopButton;

       private MediaPlayer mediaPlayer;

       private SurfaceView surfaceView;

       private int position ;

      

       private File videoFile;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

        mediaPlayer = new MediaPlayer();

       

        surfaceView = (SurfaceView) this.findViewById(R.id.surfaceview);

        eFileName = (EditText) this.findViewById(R.id.filename);

        pauseButton = (ImageButton) this.findViewById(R.id.pausebutton);

        playButton = (ImageButton)this.findViewById(R.id.playbutton);

        resetButton = (ImageButton)this.findViewById(R.id.resetbutton);

        stopButton = (ImageButton)this.findViewById(R.id.stopbutton);

       

        ButtonClickListener listener = new ButtonClickListener();

        playButton.setOnClickListener(listener);

        pauseButton.setOnClickListener(listener);

        resetButton.setOnClickListener(listener);

        stopButton.setOnClickListener(listener);

       

        surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        surfaceView.getHolder().setFixedSize(176, 144);//设置分辨率

        //SurfaceView Activity

        //当Activity离开前台,SurfaceView会被销毁,当Activity重新回到前台,SurfaceView又会被重新创建,

        //创建发生在onResume()方法之后

        surfaceView.getHolder().addCallback(new SurfaceCallback());

    }

    private final class SurfaceCallback implements Callback{

              public void surfaceChanged(SurfaceHolder holder, int format, int width,

                            int height) {

                    

              }

 

              public void surfaceCreated(SurfaceHolder holder) {

                     if(videoFile != null&& position > 0){

                            try {

                                   play();

                                   mediaPlayer.seekTo(position);

                                   position = 0;

                            } catch (IOException e) {

                                   e.printStackTrace();

                            }

                     }

              }

 

              public void surfaceDestroyed(SurfaceHolder holder) {

                     if(mediaPlayer.isPlaying()){

                            position = mediaPlayer.getCurrentPosition();

                            mediaPlayer.stop();

                     }

              }

          

    }

       protected void onDestroy() {

              mediaPlayer.release();//在onDestroy中释放,进行摧毁

              super.onDestroy();

       }

       private void play() throws IOException {

              mediaPlayer.reset();//考虑到以后重新播放

              mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置声音格式为流式音乐

              mediaPlayer.setDataSource(videoFile.getPath());//设置文件路径

              mediaPlayer.setDisplay(surfaceView.getHolder());

              mediaPlayer.prepare();

              mediaPlayer.start();

       }

 

       private final class ButtonClickListener implements View.OnClickListener{

              private boolean pause;

              public void onClick(View v) {

                     try {

                            switch (v.getId()) {

                            case R.id.playbutton:

                                   String filename = eFileName.getText().toString();//取得视频文件名称

                                   videoFile = new File(Environment.getExternalStorageDirectory(),filename);

                                   if(videoFile.exists()){

                                          play();

                                   }else{

                                          Toast.makeText(getApplicationContext(), R.string.filenoexist, 1).show();

                                          videoFile = null;

                                   }

                                   break;

                            case R.id.pausebutton:

                                   if(mediaPlayer.isPlaying()){

                                          mediaPlayer.pause();

                                          pause = true;

                                   }else{

                                          if(pause){

                                                 mediaPlayer.start();

                                                 pause = false;

                                          }

                                   }

                                   break;

                            case R.id.resetbutton:

                                          if(mediaPlayer.isPlaying()){

                                                 mediaPlayer.seekTo(0);

                                          }

                                          break;

                            case R.id.stopbutton:

                                                 if(mediaPlayer.isPlaying()){

                                                        mediaPlayer.stop();

                                                 }

                                                 break;

                            }

                     }catch (Exception e) {

                            e.printStackTrace();

                     }

              }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值