android多媒体音乐(MediaPlayer)播放器制作代码
作者:Strange_yy 时间:2022-01-06 01:13:20
本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下
首先,在AndroidManifest.xml中配置权限
<!-- 读取手机中的音乐 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
注释:Android多媒体音乐的几种来源
1.在andriod的应用中
MediaPlayer.create(this, R.raw.roar);
//mnt/sdcard/手机内存卡
2.放在自己的sd卡中(内存卡)
mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/1/123.mp3"));
3.在网络上(要知道哪个路径)
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.202:8080/sister.mp3"));
接下来,在Java代码中写
在onCreate方法中写全局变量:
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
private SurfaceView sv_main_suffce;
public void onplay(View view) throws IOException {
imageButton = (ImageButton) view;
if (mediaPlayer==null){
//播放应用的音频文件
// mediaPlayer = MediaPlayer.create(this, R.raw.roar);
//播放内存卡中的音频文件
mediaPlayer=new MediaPlayer();
//音频流的类型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置音频的来源
// mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/1/roar.mp3"));
// mediaPlayer.prepare();//准备一下
//播放网络音乐
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.202:8080/crickets.mp3"));
//一步准备
mediaPlayer.prepareAsync();
//设置准备完的监听
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
//开始播放
mediaPlayer.start();
//点击播放改变图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐的播放最大时间
int durtion=mediaPlayer.getDuration();
//设置进度条的最大值为音乐的播放最大时间
seekBar.setMax(durtion);
new Mythred().start();
}
});
//给进度条设置一个事件
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//获取拖动的进度
int progress=seekBar.getProgress();
//到那个位置播放
mediaPlayer.seekTo(progress);
}
});
}
else if (mediaPlayer.isPlaying()){
mediaPlayer.pause();
imageButton.setImageResource(android.R.drawable.ic_media_play);
}
else {
mediaPlayer.start();
imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}
写了一个子线程 extends Thread(seekbar进度条):
class Mythrod extends Thread{
@Override
public void run() {
super.run();
while (seekBar.getProgress()<=seekBar.getMax()){
//获取音乐的当前播放位置
int currentPosition=mediaPlayer.getCurrentPosition();
seekBar.setProgress(currentPosition);
}
}
}
另建一个类SoundActivity,通过soundPool例化音频池可以实现多种声音一起播放
//实例化音频池
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int i, int status) {
//播放
soundPool.play(i,1,1,1,-1,1);
}
});
//写声音按钮的方法
public void playKFC(View view){
//音频池的路径
soundPool.load(this,R.raw.rooster,1);
}
public void playTwo(View view){
soundPool.load(this,R.raw.chimp,1);
}
public void playThree(View view){
soundPool.load(this,R.raw.crickets,1);
}
public void playFour(View view){
soundPool.load(this,R.raw.roar,1);
}
public void playDog(View view){
soundPool.load(this,R.raw.dogbark,1);
}
//销毁音频池soundPool
@Override
protected void onDestroy() {
super.onDestroy();
if(soundPool!=null){
//释放内存
soundPool.release();
soundPool=null;
}
}
标签:android,MediaPlayer,音乐播放器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java 数据结构中二叉树前中后序遍历非递归的具体实现详解
2023-02-14 12:51:18
![](https://img.aspxhome.com/file/2023/7/75757_0s.png)
C#定时器和随机数
2023-10-28 15:30:34
SpringBoot读取资源目录中JSON文件的方法实例
2023-04-26 02:00:42
![](https://img.aspxhome.com/file/2023/6/69136_0s.jpg)
Java并发编程之阻塞队列详解
2022-06-20 02:08:19
![](https://img.aspxhome.com/file/2023/1/78381_0s.png)
java新手入门——String类详解
2022-02-23 08:17:26
![](https://img.aspxhome.com/file/2023/6/70576_0s.png)
关于Assert.assertEquals报错的问题及解决
2023-11-03 04:56:10
![](https://img.aspxhome.com/file/2023/6/77136_0s.jpg)
Java设置PDF跨页表格重复显示表头行的步骤详解
2023-09-21 23:50:33
![](https://img.aspxhome.com/file/2023/9/84629_0s.png)
VsCode使用EmmyLua插件调试Unity工程Lua代码的详细步骤
2022-12-25 14:13:25
![](https://img.aspxhome.com/file/2023/0/81130_0s.png)
Java实战在线选课系统的实现流程
2022-12-19 10:34:30
![](https://img.aspxhome.com/file/2023/4/86724_0s.png)
springmvc与mybatis集成配置实例详解
2021-06-16 22:10:27
Spring Boot + Vue 前后端分离开发之前端网络请求封装与配置
2021-05-28 02:48:41
![](https://img.aspxhome.com/file/2023/5/79185_0s.png)
C#使用oledb操作excel文件的方法
2023-06-13 19:19:42
Java使用组合模式实现表示公司组织结构功能示例
2022-07-31 08:03:37
![](https://img.aspxhome.com/file/2023/4/75404_0s.png)
java实现图片写入高清字体及带边框的方法
2023-11-29 03:43:47
Java如何有效避免SQL注入漏洞的方法总结
2021-11-22 07:01:54
Hadoop1.2中配置伪分布式的实例
2023-01-26 12:20:56
C#过滤DataTable中空数据和重复数据的示例代码
2022-03-15 19:33:45
详解Mybatis动态sql
2023-09-16 15:41:38
![](https://img.aspxhome.com/file/2023/4/69924_0s.png)
详解Java中运算符及用法
2023-11-29 08:17:57
Android仿google now效果的呼吸按钮
2023-06-17 07:58:02
![](https://img.aspxhome.com/file/2023/4/91034_0s.gif)