Kotlin实现简单的音乐播放器

这篇具有很好参考价值的文章主要介绍了Kotlin实现简单的音乐播放器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于音乐播放器,我真的是接触比较多,听歌作为我第一大爱好,之前也用Java设计过音乐播放器,感兴趣的同学可以阅读:Android Studio如何实现音乐播放器(简单易上手)和 Android Studio实现音乐播放器2.0

一、实验目的

理论知识

  1. 掌握Kotlin面向对象的软件开发方面的基础知识。
  2. 巩固前期Activity、UI控件的使用。
  3. 掌握Service和BroadcastReceiver的特点及用法。

专业技能

  1. 熟悉Android软件开发环境并掌握具体的工具的使用。
  2. 掌握Service和BroadcastReceiver组件的使用。
  3. 掌握移动应用软件分析和设计方法,并能将其运用到工程实践当中。

职业素养

  1. 逐步形成系统的设计的思想,具有一定的创新精神。
  2. 养成良好的编程习惯。

二、实验内容

根据Service及BroadcastReceiver的知识讲解和案例使用,实现一个Android音乐播放器,强化对服务与广播的理解。要求能实现音乐的播放,暂停,上一首,下一首等功能。要求:

  1. 巩固Android应用开发工具(Eclipse或者Android Studio)的常规用法;
  2. 巩固Activity、UI控件的常规用法;
  3. 掌握Service和BroadcastReceiver的编程要点;
  4. 理解MediaPlayer的使用。

三、实验步骤

1、页面布局

先考虑下简单音乐播放器的元素,那肯定是播放暂停停止,上一首和下一首了。

Kotlin实现简单的音乐播放器

父布局是RelativeLayout,然后是ListView显示歌单,接下去就是Button按键了,没什么需要讲的,都过于基础。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <ListView
        android:id="@+id/lv_music"
        android:layout_width="match_parent"
        android:layout_height="500dp"/>
    <LinearLayout
        android:id="@+id/ll_play"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/lv_music"
        android:layout_marginTop="20dp">
        <Button
            android:id="@+id/btn_start"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="开始播放"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_margin="5dp"
            android:background="@drawable/btn_selector"
            android:layout_height="match_parent"/>
        <Button
            android:id="@+id/btn_pause"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="暂停播放"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_margin="5dp"
            android:background="@drawable/btn_selector"
            android:layout_height="match_parent"/>

        <Button
            android:id="@+id/btn_stop"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="停止播放"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_margin="5dp"
            android:background="@drawable/btn_selector"
            android:layout_height="match_parent"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/ll_play"
        android:layout_marginTop="20dp">
        <Button
            android:id="@+id/btn_pre"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="上一首"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_margin="5dp"
            android:background="@drawable/btn_selector"
            android:layout_height="match_parent"/>
        <Button
            android:id="@+id/btn_next"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="下一首"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_margin="5dp"
            android:background="@drawable/btn_selector"
            android:layout_height="match_parent"/>
    </LinearLayout>

</RelativeLayout>

2、音乐服务

其实播放音乐只需要MediaPlayer和start、resume等方法就行,几行代码解决。但Service越来越需要音乐播放器来体现出来,作为四大组件之一,Service从来不露脸,借助Activity来发挥自己的才能。是四大组件里面和Content Provider一样低调的人。

首先定义mediaPlayer对象。然后重写 onCreate()方法,在里面给mediaPlayer初始化和initMediaPlayer(),init的方法中就是打开assets文件夹下的音乐,调用setDataSource()设置数据源,然后prepare()准备就绪。

    private lateinit var mediaPlayer:MediaPlayer
    private var index = 0
    override fun onCreate() {
        super.onCreate()
        mediaPlayer = MediaPlayer()
        initMediaPlayer()
    }
    fun initMediaPlayer() {
        val assetManager = assets
        var fileName = "music" + index + ".mp3"
        var fd = assetManager.openFd(fileName)
        mediaPlayer.setDataSource(fd.fileDescriptor, fd.startOffset, fd.length)
        mediaPlayer.prepare()
    }

既然要通过Service实现音乐服务,那么就要控制音乐播放,在MusicService类中定义一个内部类MusicControl。它继承自Binder,里面只有成员方法,而且都没有返回值,其实就是对mediaplaer的方法进行了封装。start()、pause()、reset(),全局变量index是歌曲下标,在切换上下首时调用。

inner class MusicControl:Binder() {
        fun playMusic() {
            if (!mediaPlayer.isPlaying) {
                mediaPlayer.start()
            }
        }
        fun pasueMusic() {
            if (mediaPlayer.isPlaying) {
                mediaPlayer.pause()
            }
        }
        fun stopMusic() {
            if (mediaPlayer.isPlaying) {
                mediaPlayer.reset()
                initMediaPlayer()
            }
        }
        fun prePlay() {
            // 循环播放前一首
            index = (index + 5) % 6
            // 如果正在播放则重置播放器
            if (mediaPlayer.isPlaying) {
                mediaPlayer.reset()
            }
            initMediaPlayer()
            mediaPlayer.start()
        }
        fun nextPlay() {
            // 循环播放下一首
            index = (index + 7) % 6
            // 如果正在播放则重置播放器
            if (mediaPlayer.isPlaying) {
                mediaPlayer.reset()
            }
            initMediaPlayer()
            mediaPlayer.start()
        }
    }

3、音乐播放

创建适配器,使用默认的simple_list_item_1,显示一行歌曲名就行。如果你想自定义加上其他的歌曲元素,可以自己创建一个适配器和子项布局文件。这里讲解的重点是Service和Activity进行绑定。

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, musicList)
        binding.lvMusic.adapter = adapter
        // 定义意图对象,绑定服务自动创建
        musicIntent = Intent(this, MusicService::class.java)
        bindService(musicIntent, musicConnection, BIND_AUTO_CREATE)
        initView()
    }

首先MainActivity里面还需要定义个内部类MusicConnection,用于连接MusicService的内部类,继承自ServiceConnection,重写的分类方法中只是在连接上服务的时候将iBinder赋值给musicControl。这里musicControl就是MusicService的内部类对应的对象。

lateinit var musicControl:MusicService.MusicControl
    inner class MusicConnection:ServiceConnection {
        override fun onServiceConnected(p0: ComponentName?, p1: IBinder?) {
            musicControl = p1 as MusicService.MusicControl
        }
        override fun onServiceDisconnected(p0: ComponentName?) {

        }
    }

下面我们就用初始化好的MusicConnection对象来连接MainActivity和MusicService。很简单的两句就好了。

    musicIntent = Intent(this, MusicService::class.java)
    bindService(musicIntent, musicConnection, BIND_AUTO_CREATE)

下面我们设置下按钮的点击事件,其实就是直接调用musicControl对象的方法。

	override fun onClick(p0: View?) {
        when(p0?.id) {
            R.id.btn_start->{
                musicControl.playMusic()
            }
            R.id.btn_pause->{
                musicControl.pasueMusic()
            }
            R.id.btn_stop->{
                musicControl.stopMusic()
            }
            R.id.btn_pre->{
                musicControl.prePlay()
            }
            R.id.btn_next->{
                musicControl.nextPlay()
            }
        }
    }

四、运行演示

打开就是主页面,点击开始播放,从第一首开始,然后可以暂停播放,再点开始播放就是继续播放,随时停止播放,上一首和下一首也无比流畅。

Kotlin实现简单的音乐播放器

五、实验总结

这已经是第四次做音乐播放器了,这次做的也是最快的,也可能是简单的原因,没加什么复杂内容,其实如果是从音乐文件的数据库中读取再播放,我觉得就要花些时间了。或者从SD卡中读文件也是不错的想法,感兴趣的同学可以尝试挑战。文章来源地址https://www.toymoban.com/news/detail-497454.html

关注公众号《 萌新加油站 》,后台回复: Kotlin音乐
🔥源代码已上传CSDN,点击下载源代码🔥

🚀这有你错过的精彩内容🚀
Android Studio实现考试管理系统
Android Studio实现购物商城
Android Studio实现选课系统
Android Studio实现图书管理系统
Android Stduio实现外卖订餐系统

到了这里,关于Kotlin实现简单的音乐播放器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python功能制作之简单的音乐播放器

    pip install PyQt5 双击列表歌曲即播放。 按住下面的暂停和播放【需要图标】【空格也可以】  

    2024年02月11日
    浏览(26)
  • Python轻松实现音乐播放器

    来个新玩意就是教大家如何用python来制作一个音乐播放器 希望对大家有所帮助哈哈 你们也可以尝试自己做做 先给你们展示展示最简单的,只需要九行代码 知识点和所需模块 python基础知识 requests库 time pygame tkinter 线程 环境 windows pycharm 2021.2 python 3.8 ok,直接说上完整代码 !

    2024年02月11日
    浏览(41)
  • Qt实现本地音乐播放器

     mainwindow.h mainwindow.cpp qss: 源码:Qt与学习通页面: 记录与Qt相关的代码 - Gitee.com

    2024年02月12日
    浏览(32)
  • 学习笔记(1)——粤嵌gec6818实现电子相册,音乐播放器,视频播放器。

    (1)设计一个初始界面,并且设置电子相册,音乐播放器,视频播放器三个触摸按键。 (2)电子相册——能够实现相册的幻灯片功能,实现相册左右滑动切换相片。 (3)音乐播放器实现——切歌,播放和暂停功能。 (4)视频播放器实现——播放、暂停、音量大小、快进倒

    2024年02月11日
    浏览(38)
  • Android Studio 实现音乐播放器

    🍅 文章末尾有获取完整项目源码方式 🍅         Android初学者开发第一个完整的实例项目应该就属《音乐播放器》了,项目包含SQLlit数据库的使用、listview、Fragment、等。话不多说先上成品: Android Studio 音乐播放器 图片效果展示: 1.启动页效果 2.登录页效果 3.注册页效果

    2024年02月06日
    浏览(34)
  • 微信小程序实现音乐播放器(1)

    代码涉及的主要文件有: app.json app.wxss pages/music/music.json pages/music/music.wxml pages/music/music.wxss pages/music/music.js 另外,你可能需要的图片资源,在这里! BackgroundAudioManager实现背景音乐 imzusheng / netease-music-uniapp

    2024年02月09日
    浏览(29)
  • PyQt5实现简易音乐播放器

    环境 vscode python 3.10.0 PyQt5 5.15.4 功能目标 能够读取本地的音乐文件,并实现播放的开关、曲目的切换和音量的加减 具体实现 新建一个文件夹,在文件夹下再新建一个文件夹,命名为music,将歌曲放入其中。在vscode中打开该文件夹。 在QtDesigner中搭建出UI界面,并使用pyuic工具转

    2024年02月13日
    浏览(29)
  • stm32 KeiluVision:实现音乐播放器

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域优质创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 音乐播放器项目 功能:插上U盘能够播放音乐(两首就行)按第一个键能够切换音乐,按2-8个键使发出不同音调

    2024年03月08日
    浏览(24)
  • Python实现多功能音乐播放器

    就是用Python做一个简易的音乐播放器,废话不多说,咱们直接开干 当然,今天做这个肯定不是最简单的,最简单的音乐播放器,9行代码足以 知识点和所需模块 1.python基础知识 2.requests库 3.time 4.pygame 5.tkinter 6.线程 环境 windows pycharm 2021.2 python 3.8 简易版的 还有个半成品的,目

    2024年02月11日
    浏览(31)
  • tkinter+爬虫+pygame实现音乐播放器

    本文将涉及爬虫(数据的获取),pygame(音乐播放器),tkinter(界面显示),将他们汇聚到一起制造一个音乐播放器,欢迎大家的订阅。 pip install requests pip install parsel pip install lxpy pip install pygame

    2024年02月20日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包