| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 移动开发 -> Android 下简单的 MP3 播放(代码分析) -> 正文阅读 |
|
|
[移动开发]Android 下简单的 MP3 播放(代码分析) |
|
本代码为教学材料,仅作学习使用,分析在注释里。 1.调用代码(RingDataAdapter) public void togglePosition(int position,String curMusic) {
if (expandPosition != position) {
//此方法可以中途切换mp3播放 begin
MyMediaPlayer myMediaPlayer=MyMediaPlayer.getInstance();
myMediaPlayer.setCurMusic(curMusic);
myMediaPlayer.playMusic();
notifyItemChanged(expandPosition);
//此方法可以中途切换mp3播放 end
expandPosition = position;
} else {
expandPosition = -1;
}
notifyItemChanged(position);
}
2.播放MP3核心代码(MyMediaPlayer)单例实现 package cn.fowit.xshow.utils;
import android.media.MediaPlayer;
import android.os.Handler;
public class {
private MediaPlayer mediaPlayer;
//放音频路径
private String curMusic = "";
private static volatile MyMediaPlayer instance = null;
private MyMediaPlayer() { }
public static MyMediaPlayer getInstance() {
if (instance == null) {
synchronized (MyMediaPlayer.class) {
if (instance == null) {
instance = new MyMediaPlayer();
}
}
}
return instance;
}
//此方法可以中途切换音频
public void playMusic(){
try{
if (mediaPlayer==null){
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(curMusic);
mediaPlayer.prepare();
mediaPlayer.start();
}else if (mediaPlayer.isPlaying()){
mediaPlayer.stop();
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
try{
mediaPlayer.reset();
mediaPlayer.setDataSource(curMusic);
mediaPlayer.prepare();
mediaPlayer.start();
}catch (Exception e){
curMusic = "";
e.printStackTrace();
}
}
}, 1000);
}else{
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(curMusic);
mediaPlayer.prepare();
mediaPlayer.start();
}
}catch (Exception e){
curMusic = "";
}
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
curMusic = "";
}
});
}
public void mediaPlayerStop(){
//停止音乐播放
if (mediaPlayer!=null&&mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
}
public String getCurMusic() {
return curMusic;
}
public void setCurMusic(String curMusic) {
this.curMusic = curMusic;
}
}
|
|
|
| 移动开发 最新文章 |
| 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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/22 19:24:50- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |