女朋友说系统自带音乐播放器太臃肿不好用,用Kotlin捋了个本地音乐播放器

Android应用开发--MP3音乐播放器代码实现(二),非科班生金九银十求职经历 import com.wwj.sb.service.PlayerService; import com.wwj.sb.utils.ConstantUtil; import com.wwj.sb.utils.CustomDialog; import com.wwj.sb.utils.MediaUtil; /** 2013/5/7 简、美音乐播放器 @author wwj */ public class HomeActivity extends Activity { private ListV 阅读详情

代码结构:
在这里插入图片描述
这一次也是将MVP与JetPack进行了一个融合,这个框架断断续续维护了有大半年,写起逻辑来非常快且清晰,开源看一下示例:

/**
 * 展示某个歌手的所有歌曲
 */
class ArtistSongActivity : MusicActivity<ActivityArtistSongBinding>() {
    private val songList = arrayListOf<SongBean>()
    private lateinit var mAdapter: SongAdapter
    private val artistSongPresenter by lazy<ArtistSongActivity, ArtistSongPresenter>()

    companion object {
        const val KEY_ARTIST_NAME = "key_artist_name"
    }

    override fun onBindingInflate(): ActivityArtistSongBinding {
        return ActivityArtistSongBinding.inflate(layoutInflater)
    }

    override fun onInit() {
        ActivityTools.swipeActivity(this)
        val artistName = intent.getStringExtra(KEY_ARTIST_NAME)
        binding.tvArtist.text = artistName

        //expandClickSpace(binding.ivBack)
        binding.ivBack.expandClick(16.0f)
        binding.ivBack.setOnClickListener {
            onBackPressed()
        }

        binding.fabPlaying.setSingleClick {
            if (PlayManager.currentSong == null) {
                ToastUtils.showShort("没有正在播放的歌曲")
                return@setSingleClick
            }
            // 跳转详情
            openActivity<MusicDetailActivity>()
        }
        binding.fabPlaying.setOnLongClickListener {
            // 长按暂停或者恢复播放
            PlayManager.togglePlay()
            true
        }

        mAdapter = SongAdapter(songList, CurrentListType.ARTIST)
        binding.rvArtistSong.run {
            layoutManager = LinearLayoutManager(context)
            adapter = mAdapter
        }
        // 设置空View之前必须先绑定RecyclerView
        mAdapter.setEmptyView(R.layout.view_empty)

        if (!TextUtils.isEmpty(artistName)) {
            artistSongPresenter.sortArtistSong(artistName!!)
        }
    }

    fun onSongSorted(currentSongs : List<SongBean>) {
        songList.addAll(currentSongs)
        mAdapter.notifyDataSetChanged()
    }
}
package com.itant.music.main.artist.song

import com.itant.music.main.artist.ArtistManager
import com.itant.music.manager.PlayManager
import com.itant.music.utils.PinyinUtils
import com.miekir.common.widget.loading.LoadingType
import com.miekir.mvp.presenter.BasePresenter
import com.miekir.task.extension.launchTask
import java.util.*

class ArtistSongPresenter : BasePresenter<ArtistSongActivity>() {

    fun sortArtistSong(artistName: String) {
        launchTask(
            {
                val currentList = ArtistManager.artistSongMap[artistName]
                PlayManager.currentSongList.clear()
                if (currentList != null) {
                    // 按拼音排序
                    Collections.sort(currentList, kotlin.Comparator { song1, song2 ->
                        PinyinUtils.ccs2Pinyin(song1.title)
                            .compareTo(PinyinUtils.ccs2Pinyin(song2.title), ignoreCase = true)
                    })
                    PlayManager.currentSongList.addAll(currentList)
                }

                PlayManager.currentSongList
            }, onResult = { success, result, code, message ->
                if (result != null) {
                    view?.onSongSorted(result)
                }
            }, loadingType = LoadingType.INVISIBLE
        )
    }
}

效果:
在这里插入图片描述
在这里插入图片描述
源码传送门

Android-MusicWind基于Kotlin一个简单音乐播放器使用retrofit2RX1OKHttp框架 基于Kotlin 一个简单音乐播放器,使用retrofit2 RX_1 OKHttp 框架使用google Architecture Components 作为项目的架构,包含 Lifecycle ,LiveData , ViewModel 立即下载

相关推荐

Kotlin实现简单音乐播放器,android课程设计,服务Service

根据Service及BroadcastReceiver的知识讲解和案例使用,实现一个Android音乐播放器,强化对服务与广播的理解。要求能实现音乐的播放,暂停,上一首,下一首等功能。要求: 1. 巩固Android应用开发工具(Eclipse或者Android Studio)的常规用法; 2. 巩固Activity、UI控件的常规用法; 3. 掌握Service和BroadcastReceiver的编程要点; 4. 理解MediaPlayer的使用。

Kotlin实现简单的音乐播放器

这已经是第四次做音乐播放器了,这次做的也是最快的,也可能是简单的原因,没加什么复杂内容,其实如果是从音乐文件的数据库中读取再播放,我觉得就要花些时间了。或者从SD卡中读文件也是不错的想法,感兴趣的同学可以尝试挑战。♻️下面两种方式都可以获取源代码1️⃣点击直接下载 Kotlin 实现简单的音乐播放器2️⃣关注公众号《萌新加油站》,后台回复:Kotlin音乐🚀这有你错过的精彩内容🚀Android Studio实现考试管理系统Android Studio实现购物商城。

振华OPPO的博客世界 5786

基于Kotlin开发的Android音乐播放器应用_包含欢迎界面SplashActivity_主界面MainActivity_底部导航BottomBar_顶部工具栏ToolBarM.zip

基于Kotlin开发的Android音乐播放器应用_包含欢迎界面SplashActivity_主界面MainActivity_底部导航BottomBar_顶部工具栏ToolBarM.zip

用Kotlin开发的一个安卓在线音乐播放器

用Kotlin开发一个音乐播放器,采用MVVM架构模式,用到了安卓开发四大组件中的Activity、BroadcastReceiver、Service,用SharedPreferences实现存储功能,用酷狗API和MediaPlayer类实现在线音乐播放。

GEBWM的博客 1168

cadence—virtuosoic617的使用技巧收集区

cadence使用

qq_33599939的博客 3万+

ArcGIS Pro实战:用时空立方体分析共享单车轨迹数据(含3D可视化技巧)

本文详细介绍了在ArcGIS Pro中利用时空立方体技术分析共享单车轨迹数据的全流程。从数据预处理、构建时空立方体,到执行新兴时空热点分析,并最终实现动态3D可视化,手把手教你挖掘城市骑行活动的时空规律。文章重点解析了工具参数设置、常见报错解决方案,并提供了可复用的Python脚本,助力城市规划与交通研究者高效完成时空模式挖掘。

weixin_28323057的博客 137

一个kotlin实现的音乐播放器

一个使用kotlin编写的本地音乐播放器

daxiangzaici的博客 1646

基于deepseek+dify+达梦实现自然语言查询数据库

自然语言查询数据库信息

weixin_43974943的博客 1593

Kotlin实现简易的音乐播放器

音频文件格式需为mp3,图片为png,最好将图片剪为圆形,可以用WPS剪辑,准备好这些东西后将它们分别放置在相应的文件下,上文已经说明。注意:我的本意是想在这个界面做两个Fragment但后面没有实现,只做了主要的Frg,默认显示也是Frg,不喜欢的可以直接做Frg。"青花--周传雄/摩登兄弟刘宇宁", "孤独患者--陈奕迅", "经过--张杰", "爱错--王力宏"activity_music:音乐播放页面有动画,歌曲名,进度条,播放时间,歌曲总时长,以及播放,暂停,上一首,下一首按钮。

m0_74412634的博客 1880

DRM驱动代码分析:展频 跳频

DRM驱动代码分析:展频 跳频

yuuu_cheer的博客 2680

用群辉NAS打造影视墙(Jellyfin篇)

之前的文章提到过,用群辉NAS组建影视播放系统可以采用官方提供的Video Station套件,不过影视信息配比较差,响应速度也欠佳,今天我们就聊聊别的套件。在影音媒体方面,常见的还有Emby、Plex、Jellyfin。本文主讲Jellfin的原因是它胜在免费,而且功能比较齐全,完全够用。详细信息可以参考Jellyfin的官网:https://jellyfin.org/

dgnankai的专栏 7323

还不来试试kotlin,开源在线音乐播放器MVP + RxJava + Retrofit。

SweetMusicPlayer是一款基于百度音乐API的在线音乐播放器。拥有播放本地、在线音乐以及mv等功能,采用 MVP + RxJava + Retrofit 架构的项目, 使用Java和Kotlin混合开发。 Screenshots 项目地址:github.com/WellerV/Swe…,希望给到有帮助的同学,喜欢记得star哦。 转载于:https://juejin.im/po...

weixin_33721344的博客 398

YOLO系列算法改进 | C2PSA改进篇 | 融合FSD频域结构解耦模块 | 双域解耦感知,兼顾全局亮度与局部纹理,适应红外小目标与边缘部署场景 | ICME 2026

YOLO系列算法改进 | C2PSA改进篇 | 融合FSD频域结构解耦模块 | 双域解耦感知,兼顾全局亮度与局部纹理,适应红外小目标与边缘部署场景 | ICME 2026 (以YOLO26最新目标检测模型为基础,利用C2PSA_FSD创新模块进行改进)

2502_91881744的博客 316

基于Kotlin的安卓音乐播放器

一款基于Kotlin的Android音乐播放器

qq_52642378的博客 2094

YOLOv11涨点改进| Kimi团队 2026 |独家创新首发、注意力改进篇|爆火AttnRes残差自注意力模块,含多种创新改进,借助残差思想,缓解细节信息在传播过程中被稀释,促进YOLOv11涨点

🔥本文提出AttnRes残差自注意力模块,通过深度维度的注意力加权机制替代传统固定残差累加方式,使YOLOv11网络能自适应选择更有价值的历史层特征进行聚合。该方法缓解了浅层细节信息在深层传播过程中被稀释的问题,有效融合浅层纹理与深层语义特征,提升小目标、密集目标和复杂场景的检测能力。AttnRes还改善了深层网络的梯度分布与训练稳定性,增强模型收敛质量和泛化能力。实验表明,该模块能以较小计算开销显著提升YOLOv11的特征表达能力、检测精度和整体鲁棒性。文中详细介绍了模块结构、实现原理、优势特点

Ai缝合怪、助力小伙伴高效发论文 125

Jetpack 音乐播放器:打造现代化 Android 应用的新范例

Jetpack 音乐播放器:打造现代化 Android 应用的新范例 在当今的移动应用开发领域,Android 的 Jetpack 框架已经成为了构建高质量、高性能应用的重要工具集。而 是一个由开发者 KunMinX 创建的开源项目,它是一个基于 Jetpack 的音乐播放器示例应用,旨在展示如何利用这些先进工具构建出优雅且功能丰富的应用。 项目简介 Jetpack-MusicPlayer 是一...

gitblog_00002的博客 847

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android应用开发-MP3音乐播放器代码实现(三),腾讯android面试题社招

music_progressBar = (SeekBar) findViewById(R.id.audioTrack); currentProgress = (TextView) findViewById(R.id.current_progress); finalProgress = (TextView) findViewById(R.id.final_progress); } /** 给每一个按钮设置监听器 */ private void setViewOnclickListener() { View

m0_65145685的博客 528

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

用Kotlin写一个音乐播放器

依赖 implementation “org.jetbrains.anko:anko:0.10.8” class home_frame : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { ...

qq_43589991的博客 3669

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

探索KMusic:一款创新的音乐播放器项目

探索KMusic:一款创新的音乐播放器项目 项目简介 是一个基于Android平台的开源音乐播放器项目,由开发者yhsj0919精心打造。它致力于提供简洁、高效的用户体验,并且支持自定义皮肤和丰富的音乐库功能。通过该项目,用户可以享受到自由定制的音乐体验,同时也能参与项目的开发,为社区做出贡献。 技术分析 1. 基于Android Jetpack KMusic利用了Google推出的Androi...

gitblog_00065的博客 569

[Android-Kotlin]音乐播放器生命周期

一.Kotlin语言 package com.ywjh.playmusicdemo import android.media.MediaPlayer import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Bu...

qq_38304672的博客 1080

使用kotlin实现音乐播放器

使用kotlin实现一款音乐播放器

博客 196

Android制作简易的音乐播放器和视频播放器

Android制作简易的音乐播放器和视频播放器

weixin_45809829的博客 1615

Kotlin 音乐播放

class MainActivity2 : Activity() { var isPlay=true var mediaPlayer:MediaPlayer?=null lateinit var music_btn:Button override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.lay

Waterkin的博客 1377

推荐开源项目:Jetpack Compose构建的Spotify桌面应用

推荐开源项目:Jetpack Compose构建的Spotify桌面应用 一、项目介绍 Compose Spotify Desktop 是一个使用Jetpack Compose UI工具包开发的Spotify桌面演示应用程序。通过这个项目,开发者可以体验到在桌面环境中构建现代、动态UI的新方式。它展示了如何利用Jetpack Compose的强大功能来创建流畅、响应式的音乐播放界面。 二、项目技...

gitblog_00100的博客 577

Jetpack学习之 Hilt,android音频播放器

在 project的中加入:2.2 一个简单的例子Hilt 需要使用带有注解的 Application 类,所以我们的 Application需要这样:然后在 AndroidManifest 文件中声明:假如我们要在中注入一个User对象, 我们首先编写一个 User 类,User类有两个属性name和age。诶,这个时候有同学就会问了:我通过@Inject声明一个User,Hilt就能给我创建一个 User 对象,那这个User对象里面的name和age是啥?

2401_84149530的博客 1226
上一篇: Jenkins使用之安卓原生项目
下一篇: Kotlin那些让人相见恨晚的小技巧
ithouse
博客等级 码龄12年 200粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ithouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值