• android 编写简易视频播放器


    public class VideoActivity extends Activity {
    private static final String TAG = "VideoActivity";
    private EditText filenameText;
    private SurfaceView surfaceView;
    private MediaPlayer mediaPlayer;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ButtonClickListener listener
    = new ButtonClickListener();
    ImageButton playButton
    = (ImageButton) this.findViewById(R.id.play);
    playButton.setOnClickListener(listener);
    ImageButton pauseButton
    = (ImageButton) this.findViewById(R.id.pause);
    pauseButton.setOnClickListener(listener);
    ImageButton resetButton
    = (ImageButton) this.findViewById(R.id.reset);
    resetButton.setOnClickListener(listener);
    ImageButton stopButton
    = (ImageButton) this.findViewById(R.id.stop);
    stopButton.setOnClickListener(listener);
    // 重点 这个地方需要设置回调函数 继承Callback 类实现三个方法
    surfaceView.getHolder().addCallback(new myCallback());
    filenameText
    = (EditText) this.findViewById(R.id.filename);
    surfaceView
    = (SurfaceView) findViewById(R.id.surfaceView);
    surfaceView.getHolder() .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    // 设置这个大小
    surfaceView.getHolder().setFixedSize(176, 144);
    mediaPlayer
    = new MediaPlayer();
    }
    private class myCallback implements android.view.SurfaceHolder.Callback {
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
    int height) {
    // TODO Auto-generated method stub
    }
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    }
    }
    // 当来电话的时候需要停掉播放业务
    @Override
    protected void onPause() {
    if (mediaPlayer.isPlaying())
    mediaPlayer.pause();
    super.onPause();
    }
    @Override
    protected void onResume() {
    if (mediaPlayer.isPlaying())
    mediaPlayer.pause();
    super.onResume();
    }
    @Override
    protected void onDestroy() {
    if (mediaPlayer.isPlaying())
    mediaPlayer.stop();
    // 注意这个地方是释放
    mediaPlayer.release();
    super.onStop();
    }
    private class ButtonClickListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
    try {
    String filename
    = filenameText.getText().toString();
    switch (v.getId()) {
    case R.id.play:
    // 得到文件名称 重点代码
    String filenames = filenameText.getText().toString();
    // 第一步对给对象进行重设
    mediaPlayer.reset();
    // 设置流的类型 关键代码
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    // 设置数据来源
    mediaPlayer.setDataSource("/sdcard/" + filenames); // 设置需要播放的视频
    // 把视频输出到显示控件上 重点代码
    mediaPlayer.setDisplay(surfaceView.getHolder());
    // 播放时前需要缓冲一下
    mediaPlayer.prepare();
    mediaPlayer.start();
    break;
    case R.id.pause:
    if (mediaPlayer.isPlaying()) {
    mediaPlayer.pause();
    }
    else {
    mediaPlayer.start();
    }
    break;
    case R.id.reset:
    if (!mediaPlayer.isPlaying()) {
    mediaPlayer.start();
    }
    // 跳回到起始的地方重新播放
    mediaPlayer.seekTo(0);
    break;
    case R.id.stop:
    if (mediaPlayer.isPlaying()) {
    mediaPlayer.stop();
    }
    break;
    }
    }
    catch (Exception e) {
    Log.e(TAG, e.toString());
    }
    }
    }
    }

  • 相关阅读:
    初探深度学习
    第二次作业:卷积神经网络 part 1
    随笔小记
    Typora实用小工具(AHK)
    第一次作业:深度学习基础
    Nginx HTTPS 部署实战
    win10系统中如何解决cmd中的路径和现在电脑的用户名不一致
    Centos7.5.1804永久生效修改主机名
    centos6.9NAT网络模式
    linux 系统中用root切换到普通用户时显示的异常如bash4.1$
  • 原文地址:https://www.cnblogs.com/error404/p/2153546.html
Copyright © 2020-2023  润新知