首页 > 编程知识 正文

音频重复播放软件apk,android音频播放

时间:2023-05-05 18:59:38 阅读:282991 作者:201

        最近开发Android下的音频播放程序,要求播放一首音乐的同时可以随时停止播放,还要在播放的同时能够直接切换到另一首歌曲播放。

这个是播放音频的工具类,通过createMedia创建音频播放器,返回播放器句柄

public class MediaUtils { public static MediaPlayer createMedia(Context context, String url){ MediaPlayer mediaplayer = MediaPlayer.create(context, Uri.parse(url)); mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); return mediaplayer; } public static MediaPlayer createMedia(Context context,int ResId){ MediaPlayer mediaplayer = MediaPlayer.create(context,ResId); mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); return mediaplayer; } public static MediaPlayer createMedia(Context context, AssetFileDescriptor assetFileDescriptor){ MediaPlayer mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource( assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());/*使用MediaPlayer加载指定的声音文件.*/ mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } catch (IOException e) { e.printStackTrace(); } return mediaPlayer; } public static void prepareMedia(MediaPlayer mediaplayer, MediaPlayer.OnPreparedListener onPreparedListener, MediaPlayer.OnErrorListener onErrorListener, MediaPlayer.OnCompletionListener onCompletionListener){ mediaplayer.setOnPreparedListener(onPreparedListener); mediaplayer.setOnErrorListener(onErrorListener); mediaplayer.setOnCompletionListener(onCompletionListener); mediaplayer.prepareAsync(); } //播放方法 public static void play(MediaPlayer mediaplayer) { mediaplayer.start(); } //暂停 public static void pause(MediaPlayer mediaplayer) { mediaplayer.pause(); } //判断是否正在播放中 public static boolean isplay(MediaPlayer mediaplayer) { return mediaplayer.isPlaying(); } //获取播放时长 public static long getduring(MediaPlayer mediaplayer) { return mediaplayer.getDuration(); } //获取当前的播放进度 public static long getcurrentduring(MediaPlayer mediaplayer) { return mediaplayer.getCurrentPosition(); } //获取位置 public static int position(int current) { return current; } //更上进度,设置进度.. public static void curento(int position, MediaPlayer mediaplayer) { mediaplayer.seekTo(position); } //关闭播放器 public static void closeMedia(MediaPlayer mediaplayer) { if (mediaplayer != null) { mediaplayer.stop(); mediaplayer.reset(); mediaplayer.release(); mediaplayer = null; } }}

大体的调用流程如下:

MediaPlayer media; // 全局的播放器句柄 if (media != null){ MediaUtils.closeMedia(media); // 若之前正在播放音频则停止播放 media = null;}// 获取音频文件AssetFileDescriptor assetFileDescriptor = getAssets().openFd("music/"+musicName+".mp3"); //创建播放器media = MediaUtils.createMedia(AppControlService.this, assetFileDescriptor);//设置播放器回调函数MediaUtils.prepareMedia(media, new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { MediaUtils.play(mediaPlayer);//资源加载完成后开始播放 }}, new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mediaPlayer, int i, int i1) { MediaUtils.closeMedia(mediaPlayer); //播放出错时关闭播放器并释放资源 return false; }}, new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { MediaUtils.closeMedia(mediaPlayer);//播放完成后关闭播放器并释放资源 }});

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。