| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> MediaPlayer使用,简直无敌 -> 正文阅读 |
|
[移动开发]MediaPlayer使用,简直无敌 |
<SurfaceView android:id="@+id/surfaceview01" android:layout_width=“match_parent” android:layout_height=“200dp” /> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width=“wrap_content” android:layout_height=“wrap_content”> <Button android:id="@+id/Button03" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“播放视频”> <Button android:id="@+id/Button04" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“停止播放”> MainActivity代码: public class MainActivity extends AppCompatActivity { private MediaPlayer mMediaPlayerl; private Timer mTimer; private TimerTask mTimerTask; private boolean isChanging=false;//互斥变量,防止定时器与SeekBar拖动时进度冲突 private Button btn_start_audio; private Button btn_stop_audio; private SeekBar skb_audio; private Button btn_start_video; private Button btn_stop_video; private SeekBar skb_video; private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); init(); } private void init() { mMediaPlayerl = new MediaPlayer(); /**
*/ mMediaPlayerl.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { Toast.makeText(MainActivity.this, “结束”, Toast.LENGTH_SHORT).show(); mMediaPlayerl.release(); } }); //----------定时器记录播放进度---------// mTimer = new Timer(); mTimerTask = new TimerTask() { @Override public void run() { if (isChanging == true){ return; } if (mMediaPlayerl.isPlaying()){ if (mMediaPlayerl.getVideoHeight() == 0){ skb_audio.setProgress(mMediaPlayerl.getCurrentPosition()); }else{ skb_video.setProgress(mMediaPlayerl.getCurrentPosition()); } } } }; mTimer.schedule(mTimerTask, 0, 10); btn_start_audio = (Button) this.findViewById(R.id.Button01); btn_stop_audio = (Button) this.findViewById(R.id.Button02); skb_audio=(SeekBar)this.findViewById(R.id.SeekBar01); //设置监听事件 btn_start_audio.setOnClickListener(new ClickEvent()); btn_stop_audio.setOnClickListener(new ClickEvent()); skb_audio.setOnSeekBarChangeListener(new SeekBarChangeEvent()); btn_start_video = (Button) this.findViewById(R.id.Button03); btn_stop_video = (Button) this.findViewById(R.id.Button04); s
kb_video=(SeekBar)this.findViewById(R.id.SeekBar02); //设置监听事件 btn_start_video.setOnClickListener(new ClickEvent()); btn_stop_video.setOnClickListener(new ClickEvent()); skb_video.setOnSeekBarChangeListener(new SeekBarChangeEvent()); mSurfaceView = (SurfaceView)findViewById(R.id.surfaceview01); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.setFixedSize(100, 100); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } /**
*/ class ClickEvent implements View.OnClickListener{ @Override public void onClick(View v) { if (v == btn_start_audio){ mMediaPlayerl.reset();//恢复到未初始化的状态 mMediaPlayerl = MediaPlayer.create(MainActivity.this,R.raw.cjyx);//读取音频文件 skb_audio.setMax(mMediaPlayerl.getDuration());//设置Seekbar的长度 try { mMediaPlayerl.prepare(); } catch (IOException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } mMediaPlayerl.start(); }else if (vbtn_stop_audio || vbtn_stop_video){ mMediaPlayerl.stop(); }else if (v == btn_start_video){ mMediaPlayerl.reset();//恢复到未初始化的状态 mMediaPlayerl =MediaPlayer.create(MainActivity.this,R.raw.cjyx);//读取视频 skb_video.setMax(mMediaPlayerl.getDuration());//设置SeekBar的长度 mMediaPlayerl.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayerl.setDisplay(mSurfaceHolder);//设置屏幕 try { mMediaPlayerl.prepare(); } catch (IOException e) { e.printStackTrace(); }catch (IllegalStateException e) { e.printStackTrace(); } mMediaPlayerl.start(); } } } /**
*/ class SeekBarChangeEvent implements SeekBar.OnSeekBarChangeListener{ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:01:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |