public class PlayerVideoActivity extends Activity {// SurfaceView控件private SurfaceView sv_video;private SurfaceHolder surfaceHolder;// 播放视频对象private MediaPlayer mediaPlayer;private String path;private boolean PasueFlag = false;// 记录暂停播放的位置private int currentPosition = 0;// 播放按钮的控件private LinearLayout video_layout;//声明一个回放的记录位置private int backPosition = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_video);// 获取SurfaceView控件sv_video = (SurfaceView) findViewById(R.id.sv_video);// 通过控件来获取SurfaceHoldersurfaceHolder = sv_video.getHolder();// 回调函数surfaceHolder.addCallback(new SurfaceHolder.Callback() {// surfaceView控件被销毁的方法@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// 当点击后退按钮 就杀死 surfaceView控件 activity被杀死//记录视频所播放的位置int position = mediaPlayer.getCurrentPosition();mediaPlayer.release();mediaPlayer = null;//声明意图对象Intent data = new Intent();data.putExtra("position",position);PlayerVideoActivity.this.setResult(RESULT_OK, data);//当前killPlayerVideoActivity.this.finish();}// surfaceView创建的时候执行的方法@Overridepublic void surfaceCreated(SurfaceHolder holder) {// 当第一次使用SurfaceView的时候 播放视频play();}// surfaceView发生变化执行的操作@Overridepublic void surfaceChanged(SurfaceHolder holder, int format,int width, int height) {}});// 在这里怎么获取intent传递的数据path = this.getIntent().getStringExtra("path");backPosition = this.getIntent().getIntExtra("position", 0);// 获取LinearLayout的对象video_layout = (LinearLayout) findViewById(R.id.video_layout);// 隐藏video_layout.setVisibility(View.GONE);}public void playerVideo(View v) {play();// 播放视频}// 视频播放的操作public void play() {if (PasueFlag) {if (mediaPlayer != null) {// 跳转到播放记录的位置mediaPlayer.seekTo(currentPosition);mediaPlayer.start();}// 变为falsePasueFlag = false;} else {// 判断视频 是否为播放状态if (mediaPlayer != null) {if (mediaPlayer.isPlaying()) {System.out.println("视频处于播放状态");}} else {// 传递的路径 是否为空if (path != null) {try {// 创建视频播放的对象mediaPlayer = new MediaPlayer();/** * 视频播放完成出发的事件 */mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {mediaPlayer.release();mediaPlayer = null;System.out.println(mediaPlayer+ "------------onCompletion"+ mp);}});/** * 播放出差错的时候触发的事件 *  * 回调函数 */mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {@Overridepublic boolean onError(MediaPlayer mp,int what, int extra) {mediaPlayer.release();mediaPlayer = null;return false;}});// 设计音频流类型mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);// 指定播放的文件mediaPlayer.setDataSource(path);// 指定用于播放视频的SurfaceView的控件mediaPlayer.setDisplay(surfaceHolder);mediaPlayer.prepare();//记录上次播放的位置mediaPlayer.seekTo(backPosition);mediaPlayer.start();PasueFlag = false;} catch (IOException e) {e.printStackTrace();}}}}}public void pasueVideo(View v) {if (mediaPlayer != null && mediaPlayer.isPlaying()) {mediaPlayer.pause();// 记录这个位置currentPosition = mediaPlayer.getCurrentPosition();// 标识 这视频 会被暂停PasueFlag = true;}}public void stopVideo(View v) {if (mediaPlayer != null && mediaPlayer.isPlaying()) {mediaPlayer.stop();mediaPlayer.release();mediaPlayer = null;// 暂停标识PasueFlag = false;}}public void resetVideo(View v) {if (mediaPlayer != null && mediaPlayer.isPlaying()) {mediaPlayer.seekTo(0);mediaPlayer.start();}}// 触摸事件public boolean onTouchEvent(MotionEvent event) {// 获取布局对象是否是隐藏if (View.GONE == video_layout.getVisibility()) {video_layout.setVisibility(View.VISIBLE);// 显示} else {video_layout.setVisibility(View.GONE);// 隐藏}return super.onTouchEvent(event);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.player_video, menu);return true;}/* * protected void onDestroy() { super.onDestroy(); // 释放资源 if (mediaPlayer * != null) { mediaPlayer.release(); mediaPlayer = null; } } */}

public class VideoActivity extends Activity {private static final int VIDEOREQUESTPLAYER = 1;private int position = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_list);}public void player(View v) {Intent intent = new Intent(VideoActivity.this,PlayerVideoActivity.class);File sdCardFile = Environment.getExternalStorageDirectory();String path = sdCardFile.getPath() + "/Music/oppo.3gp";intent.putExtra("path", path);intent.putExtra("position", position);startActivityForResult(intent, VIDEOREQUESTPLAYER);}protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);System.out.println("-------------------onActivityResult");// 判断是否是这个请求if (VIDEOREQUESTPLAYER == requestCode) {// 判断这个请求的响应吗是否成功if (RESULT_OK == resultCode) {position = data.getIntExtra("position", 0);System.out.println("==========================" + position);}}}}

<SurfaceView        android:id="@+id/sv_video"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true" />    <LinearLayout        android:id="@+id/video_layout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_alignParentLeft="true"        android:gravity="center_horizontal"        android:orientation="horizontal"        tools:ignore="UselessParent" >        <Button            android:id="@+id/button1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:onClick="playerVideo"            android:text="@string/btn_play" />        <Button            android:id="@+id/button2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:onClick="pasueVideo"            android:text="@string/btn_pasue" />        <Button            android:id="@+id/button3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:onClick="stopVideo"            android:text="@string/btn_stop" />        <Button            android:id="@+id/button4"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:onClick="resetVideo"            android:text="@string/btn_reset" />    </LinearLayout>

更多相关文章

  1. android之音乐播放器
  2. android之SeekBar控件用法
  3. 自定义View ----QQ5.0左边侧滑 + 动画
  4. android里的service和content provider简单介绍
  5. Android(安卓)VideoView播放视频
  6. android 动画自动播放
  7. android gif播放
  8. Android搜索框自动提示文本框——(单一提示)
  9. Android(安卓)ListView 控件学习

随机推荐

  1. android彻底结束进程的两种方法
  2. Android TV开发之坑(1)——安装后找不到图
  3. 2010.12.16——— android listView 显示
  4. Android软键盘不能正确显示
  5. android 中的 Handler Thread Runnable
  6. Android录制或播放语音消息时关闭其他媒
  7. java第四次实验
  8. 从头开始学Android—Android Studio(二)
  9. android studio下,JNI和NDK的简单编程
  10. android 数据存储之 读写文件