package hyz.com;import java.io.IOException;     import java.util.Timer;   import java.util.TimerTask;   import android.app.Activity;     import android.media.AudioManager;   import android.media.MediaPlayer;   import android.os.Bundle;     import android.view.SurfaceHolder;   import android.view.SurfaceView;   import android.view.View;     import android.widget.Button;     import android.widget.SeekBar;   import android.widget.Toast;         public class MediaTest extends Activity {         /** Called when the activity is first created. */          private SeekBar skb_audio=null;       private Button btn_start_audio = null;         private Button btn_stop_audio = null;         private SeekBar skb_video=null;       private Button btn_start_video = null;         private Button btn_stop_video = null;       private SurfaceView surfaceView;        private SurfaceHolder surfaceHolder;               private MediaPlayer m = null;         private Timer mTimer;       private TimerTask mTimerTask;              private boolean isChanging=false;//互斥变量,防止定时器与SeekBar拖动时进度冲突        @Override         public void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.main);                        //----------Media控件设置---------//           m=new MediaPlayer();                      //播放结束之后弹出提示           m.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){               @Override              public void onCompletion(MediaPlayer arg0) {                   Toast.makeText(MediaTest.this, "结束", 1000).show();                   m.release();               }           });                    //----------定时器记录播放进度---------//           mTimer = new Timer();           mTimerTask = new TimerTask() {               @Override              public void run() {                    if(isChanging==true)                       return;                                      if(m.getVideoHeight()==0)                       skb_audio.setProgress(m.getCurrentPosition());                   else                        skb_video.setProgress(m.getCurrentPosition());               }           };             mTimer.schedule(mTimerTask, 0, 10);                      btn_start_audio = (Button) this.findViewById(R.id.Button01);             btn_stop_audio = (Button) this.findViewById(R.id.Button02);             btn_start_audio.setOnClickListener(new ClickEvent());           btn_stop_audio.setOnClickListener(new ClickEvent());           skb_audio=(SeekBar)this.findViewById(R.id.SeekBar01);           skb_audio.setOnSeekBarChangeListener(new SeekBarChangeEvent());                      btn_start_video = (Button) this.findViewById(R.id.Button03);             btn_stop_video = (Button) this.findViewById(R.id.Button04);             btn_start_video.setOnClickListener(new ClickEvent());           btn_stop_video.setOnClickListener(new ClickEvent());           skb_video=(SeekBar)this.findViewById(R.id.SeekBar02);           skb_video.setOnSeekBarChangeListener(new SeekBarChangeEvent());           surfaceView = (SurfaceView) findViewById(R.id.SurfaceView01);           surfaceHolder = surfaceView.getHolder();           surfaceHolder.setFixedSize(100, 100);           surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);       }               /*     * 按键事件处理     */    class ClickEvent implements View.OnClickListener{       @Override      public void onClick(View v) {           if(v==btn_start_audio)           {               m.reset();//恢复到未初始化的状态               m=MediaPlayer.create(MediaTest.this, R.raw.big);//读取音频               skb_audio.setMax(m.getDuration());//设置SeekBar的长度               try {                                      m.prepare();    //准备               } catch (IllegalStateException e) {                            // TODO Auto-generated catch block                                 e.printStackTrace();                               } catch (IOException e) {                              // TODO Auto-generated catch block                                 e.printStackTrace();                               }                      m.start();  //播放           }           else if(v==btn_stop_audio || v==btn_stop_video)           {               m.stop();           }           else if(v==btn_start_video)           {               m.reset();//恢复到未初始化的状态               m=MediaPlayer.create(MediaTest.this, R.raw.test);//读取视频               skb_video.setMax(m.getDuration());//设置SeekBar的长度               m.setAudioStreamType(AudioManager.STREAM_MUSIC);               m.setDisplay(surfaceHolder);//设置屏幕                              try {                   m.prepare();                                  } catch (IllegalArgumentException e) {                   // TODO Auto-generated catch block                   e.printStackTrace();               } catch (IllegalStateException e) {                   // TODO Auto-generated catch block                   e.printStackTrace();               } catch (IOException e) {                   // TODO Auto-generated catch block                   e.printStackTrace();               }               m.start();           }       }     }          /*     * SeekBar进度改变事件     */    class SeekBarChangeEvent implements SeekBar.OnSeekBarChangeListener{         @Override      public void onProgressChanged(SeekBar seekBar, int progress,               boolean fromUser) {           // TODO Auto-generated method stub                  }         @Override      public void onStartTrackingTouch(SeekBar seekBar) {           isChanging=true;       }         @Override      public void onStopTrackingTouch(SeekBar seekBar) {           m.seekTo(seekBar.getProgress());           isChanging=false;          }              }     } 

main.xml

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout     android:id="@+id/LinearLayout01"      android:layout_width="fill_parent"     android:layout_height="fill_parent"      xmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical">      <SeekBar         android:id="@+id/SeekBar01"         android:layout_height="wrap_content"          android:layout_width="fill_parent">    </SeekBar>      <LinearLayout     android:id="@+id/LinearLayout02"          android:layout_width="wrap_content"         android:layout_height="wrap_content">          <Button         android:id="@+id/Button01"         android:layout_width="wrap_content"              android:layout_height="wrap_content"             android:text="播放音频">        </Button>          <Button             android:id="@+id/Button02"             android:layout_width="wrap_content"              android:layout_height="wrap_content"             android:text="停止播放">        </Button>      </LinearLayout>      <SeekBar         android:id="@+id/SeekBar02"         android:layout_height="wrap_content"          android:layout_width="fill_parent">    </SeekBar>    <SurfaceView         android:id="@+id/SurfaceView01"          android:layout_width="fill_parent"         android:layout_height="250px">    </SurfaceView>      <LinearLayout         android:id="@+id/LinearLayout02"          android:layout_width="wrap_content"         android:layout_height="wrap_content">          <Button             android:layout_width="wrap_content"              android:layout_height="wrap_content"             android:id="@+id/Button03"              android:text="播放视频">        </Button>          <Button             android:layout_width="wrap_content"              android:layout_height="wrap_content"             android:text="停止播放"             android:id="@+id/Button04">        </Button>      </LinearLayout>  </LinearLayout>



更多相关文章

  1. Android——ImageView设置圆形边框
  2. Java W3C 生成 XML
  3. android GLSurfaceView 异常处理
  4. 简单的四种动画Demo
  5. 安卓如何关闭软键盘?
  6. webview导入H5小游戏
  7. Android应用开机自启
  8. Android(安卓)Service播放音乐
  9. Android(安卓)ArrayListAdapter泛型类

随机推荐

  1. Android - Activity - 启动模式
  2. Android读写文件二
  3. android学习——处理 EditText 右下角为D
  4. Android使用videoview播放res/raw下的视
  5. 拥抱Android:编译nginx搭建移动平台
  6. android webkit 打开debug调试信息
  7. Delphi获取Android下GPS的NMEA 0183数据
  8. Android学习总结--第一周
  9. android studio 如何进行单元测试
  10. Android的AutoCompleteTextView在API17高