本文实例为大家分享了android音乐播放器的具体代码,供大家参考,具体内容如下

话不多说先上效果

前言

写这个音乐播放器实在是迫不得已。因为我们Andoird课程要求写一个音乐播放器。所以就有了此项目。这个项目比较简单,实现了最基本的音乐播放功能,然后界面是仿照着网易云音乐的样式,写的想写成一样但是技术不够。

基本的音乐播放

设置播放音乐文件

Android播放媒体文件大概都是使用MediaPlayer这个类来操作的。

在播放音乐前,必须要给这个MediaPlayer设置一要播放的东西,对于文件资源来说(音乐,视频都算一种文件资源),能够唯一标识它的就是文件的地址(路径)。我们这里使用的是本机音乐,那么就使用文件路径就可以。

private static final MediaPlayer mediaPlayer = new MediaPlayer();

/**

* 设置播放文件

* @param path

*/

public static void setPlayPath(String path){

try {

// 设置类型

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

// 这里要reset一下啊 (当已经设置过音乐后,再调用此方法时,没有reset就会异常)

mediaPlayer.reset();

mediaPlayer.setDataSource(path);// 设置文件源

mediaPlayer.prepare();// 解析文件

} catch (IOException e) {

e.printStackTrace();

}

}

播放音乐

设置完播放文件后,下一步就是音乐的播放、暂停、跳进度播放等等。

这里先介绍MediaPlayer的自带方法

mediaPlayer.isPlaying();// 是否正在播放

mediaPlayer.start(); // 开始播放,如果已经在播放不会有什么效果

mediaPlayer.stop(); // 停止播放 - 不可以使用start重新开始

mediaPlayer.pause(); // 暂停当前播放

mediaPlayer.seekTo(0); // 移动到某一播放进度

mediaPlayer.getCurrentPosition();// 获取当前播放进度

了解了上面的方法后那么就可以实现几乎所有的音乐播放功能。

那么要实现音乐播放功能只需要在调用了setPlayPath(path)后再调用mediaPlayer.start()就能成功的播放音乐前提条件是你确实的设置了正确的音乐路径

获取音乐的信息

获取音乐信息可以使用MediaMetadataRetriever类来获取。它和MediaPlayer也需要一个文件路径来寻找到音乐。

private static final MediaMetadataRetriever mmr = new MediaMetadataRetriever();

public static Song getSong(String path){

Song song = new Song();// 自己定义的歌曲类

song.setPath(path);

// 获取音乐相关信息

mmr.setDataSource(path);

// 歌曲名

String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);

song.setTitle(title);

// 唱片集

String album = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);

song.setAlbum(album);

// (艺术家)歌手

String artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);

song.setArtist(artist);

// 歌曲长度(时间长度 单位 mm)

int duration = Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)); // 播放时长单位为毫秒

song.setDuration(duration);

// 歌曲的图片

byte[] image = mmr.getEmbeddedPicture();// 图片,可以通过BitmapFactory.decodeByteArray转换为bitmap图片

// BitmapFactory.decodeByteArray(image, 0, image.length);

song.setImage(image);

return song;

}

其他功能

其他功能都是基于Android的事件和以上播放功能加上MediaMetadataRetriever获取音乐信息来实现的。所以就不详细介绍直接贴代码吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android音乐播放器完整教程,android实现简单音乐播放器相关推荐

  1. android版音乐播放器开发教程,Android音乐播放器开发文档(20200907152026).pdf

    Android 音乐播放器 撰写人:张 XX 2011-3-15 一. 问题定义 本软件是为了用户智能手机 Android 而开发的一套智能软件, 提供在线 下载音乐,在线播放音乐,读取 SD 卡音乐 ...

  2. Android手机应用开发(八) | 制作简单音乐播放器

    实验目的 学会使用MediaPlayer 学会简单的多线程编程,使用Handler更新UI 学会使用Service进行后台工作 学会使用Service与Activity进行通信 效果预览 布局 进度条 ...

  3. 安卓java音乐播放器下一曲_Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个 ...

  4. android studio如何编译测试,Android Studio 进行单元测试完整教程

    前言 为了这个AndroidStudio的单元测试,从下午搞到晚上才搞明白咋操作. 我学一个新知识总是那么坎坷,经历无数的错误路径,才可能找到正确的路在哪儿. 我的AndroidStudio 我的An ...

  5. Windows + Ubuntu下JDK与adb/android环境变量配置完整教程

    假设JDK和android sdk路径分别如下: D:\Program Files\Java\jdk D:\android-sdk 1.JDK环境变量配置 JAVA_HOME=D:\Program F ...

  6. Android Kotlin Paging3 Flow完整教程

    准备好接口 package com.example.android_learn_paging.netimport com.example.android_learn_paging.model.NetD ...

  7. gear2刷Android n,gear2 Root完整教程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 其实上上周都出了,因为上周没空翻译,所到今天翻译完才发布.尽量的原文,下面拷过来的东西很多遗漏 原文:http://tzmm.com.cn/index.p ...

  8. js html5 音乐播放器代码大全,js实现简单音乐播放器

    本文实例为大家分享了js实现音乐播放器的具体代码,供大家参考,具体内容如下 效果图: 可播放暂停继续播放,进度条可拖动,时间展示,声音调节 完整代码(直接拿来用) audio功能开发 * { marg ...

  9. android sdk 5.0 安装教程,Android SDK 设置

    Android SDK 设置 要在 Android 设备上构建并运行代码,首先必须遵循以下步骤.使用 Unity 或者从头开始编写 Android 应用程序均是如此. 1. 下载 Android SD ...

最新文章

  1. 女生学软件测试有哪些优势
  2. 数据蒋堂 | BI系统中容易被忽视的数据源功能
  3. SppNet 多尺度训练
  4. FastDFS配置手册trackerstorage
  5. TIDB事务过大transction too large解决方法
  6. C语言size_t类型
  7. ios 持续获取定位 高德地图_iOS开发-- 高德地图的接入使用(1)定位
  8. android studio 4.0 去掉标题栏
  9. 《软件评测师教程》学习笔记-第一章:软件测试概述
  10. 好用的mysql数据字典工具
  11. 开关电源/LDO反馈电阻辅助计算工具PowerHelper使用介绍
  12. 如果你想专升本那就一定要看的专升本语文_文学常识完整版(四)
  13. ABT 共识社区北京聚会 共建去中心化生态 | ArcBlock 社区
  14. vue中如何优雅实现爷孙组件的数据通信($attrs/$listeners)
  15. min-height不生效
  16. Android音乐App桌面图标制作以及启动页面开发(简易音乐 一)
  17. 15、wxapp - 小程序登录以及全局参数 - 微擎小程序模块应用开发
  18. 网络知识点------SBC和BSC的定义
  19. 中国排球市场趋势报告、技术动态创新及市场预测
  20. Linux基础 第一节 第二课

热门文章

  1. ANSYS——对称模型对称边界的确定以及对称边界的约束施加问题
  2. java安全权限配置_使用Spring安全表达式控制系统功能访问权限问题
  3. 计算机网络课程思政教学设计,信息与网络工程学院成功举办第一届课程思政教学设计大赛...
  4. 【计算机算法设计与分析】——5.4最优二分检索树
  5. 基于word API 创建的可以打开word的自定义控件
  6. UITextField实时监听输入文本的变化
  7. 06jQuery-04-DOM操作
  8. 关于ASP.NET MVC
  9. java定时执行一次_java Timer(定时调用、实现固定时间执行)
  10. linux 命令tf,Linux文件管理命令