Android音乐播放器(一):搜索手机存储的音乐

【OpenCV C++】基本绘图操作 OpenCV C++基本绘图操作程序说明代码运行效果 程序说明 // 程序描述:OpenCV C++基本绘图操作 //参 考:毛星云《OpenCV3编程入门》 // 操作系统: Windows 10 64bit // 开发语言: C++ // IDE 版 本:Visual Studio 2019 // OpenCV版本:4.20 代码 main函数写法很简单,先创建空表Mat图像,然后点用函数绘制化学原子图,接着绘制组合图,最后显示图像。 //------------------------- 阅读详情

Android音乐播放器(一):搜索手机存储的音乐

一、MusicInfo类——音乐实体类


首先我们需要一个实体类,用于存储搜索到的音乐的一些信息。因为后面要进行Intent的数据传递,所以这里我们的实体类需要进行序列化。
Android中实现序列化有两种方式,其一是利用Serializable接口,另一个是利用Parcelable接口。而后者是Android特有的,相比前者,利用Parcelable的效率
更高,但实现起来稍微复杂一些,而利用Serializable接口只需要implements该接口就好,系统会自动的进行序列化。这里我们使用Parcelable接口。

import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;

public class MusicInfo implements Parcelable {
	
	public final static String KEY_MUSIC= "music";
	
	public static final String KEY_ID = "_id";
	public static final String KEY_SONG_ID = "songid";
	public static final String KEY_ALBUM_ID = "albumid";
	public static final String KEY_DURATION = "duration";
	public static final String KEY_MUSIC_NAME = "musicname";
	public static final String KEY_ARTIST = "artist";
	public static final String KEY_DATA = "data";
	public static final String KEY_FOLDER = "folder";
	public static final String KEY_MUSIC_NAME_KEY = "musicnamekey";
	public static final String KEY_ARTIST_KEY = "artistkey";
	public static final String KEY_FAVORITE = "favorite";
	
	/** 数据库中的_id */
	public int _id = -1;
	public int songId = -1;
	public int albumId = -1;
	public int duration;
	public String musicName;
	public String artist;
	public String data;
	public String folder;
	public String musicNameKey;
	public String artistKey;
	/** 0表示没有收藏 1表示收藏 */
	public int favorite = 0;
	
	
	@Override
	public int describeContents() {
		return 0;
	}
	@Override
	public void writeToParcel(Parcel dest, int flags) {
		Bundle bundle = new Bundle();
		bundle.putInt(KEY_ID, _id);
		bundle.putInt(KEY_SONG_ID, songId);
		bundle.putInt(KEY_ALBUM_ID, albumId);
		bundle.putInt(KEY_DURATION, duration);
		bundle.putString(KEY_MUSIC_NAME, musicName);
		bundle.putString(KEY_ARTIST, artist);
		bundle.putString(KEY_DATA, data);
		bundle.putString(KEY_FOLDER, folder);
		bundle.putString(KEY_MUSIC_NAME_KEY, musicNameKey);
		bundle.putInt(KEY_FAVORITE, favorite);
		dest.writeBundle(bundle);
	}
	
	public static final Parcelable.Creator<MusicInfo> CREATOR = new Parcelable.Creator<MusicInfo>() {

		@Override
		public MusicInfo createFromParcel(Parcel source) {
			MusicInfo music = new MusicInfo();
			Bundle bundle = new Bundle();
			bundle = source.readBundle();
			music._id = bundle.getInt(KEY_ID);
			music.songId = bundle.getInt(KEY_SONG_ID);
			music.albumId = bundle.getInt(KEY_ALBUM_ID);
			music.duration = bundle.getInt(KEY_DURATION);
			music.musicName = bundle.getString(KEY_MUSIC_NAME);
			music.artist = bundle.getString(KEY_ARTIST);
			music.data = bundle.getString(KEY_DATA);
			music.folder = bundle.getString(KEY_FOLDER);
			music.musicNameKey = bundle.getString(KEY_MUSIC_NAME_KEY);
			music.favorite = bundle.getInt(KEY_FAVORITE);
			return music;
		}

		@Override
		public MusicInfo[] newArray(int size) {
			return new MusicInfo[size];
		}
	};


	public int getFavorite() {
		return favorite;
	}
	public void setFavorite(int favorite) {
		this.favorite = favorite;
	}
}



二 、搜索音乐的核心方法实现

package com.music.wangmusic;

import java.io.File;
import java.util.ArrayList;
import android.database.Cursor;
import android.provider.MediaStore;
import android.util.Log;

public class MusicUtils {
	
	public static final int FILTER_SIZE = 1 * 1024 * 1024;// 1MB
	public static final int FILTER_DURATION = 1 * 60 * 1000;// 1分钟
	
	public static String[] proj_music = new String[] {
		MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE,
		MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ALBUM_ID,
		MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ARTIST_ID,
		MediaStore.Audio.Media.DURATION };
	
	// 音乐检索方法
	public static ArrayList<MusicInfo> getMusicList(Cursor cursor) {
		if (cursor == null) {
			return null;
		}
		ArrayList<MusicInfo> musicList = new ArrayList<MusicInfo>();
		while (cursor.moveToNext()) {
			MusicInfo music = new MusicInfo();
			music.songId = cursor.getInt(cursor
					.getColumnIndex(MediaStore.Audio.Media._ID));
			music.albumId = cursor.getInt(cursor
					.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
			music.duration = cursor.getInt(cursor
					.getColumnIndex(MediaStore.Audio.Media.DURATION));
			Log.i("Name",""+music.duration);//输出时长
			music.musicName = cursor.getString(cursor
					.getColumnIndex(MediaStore.Audio.Media.TITLE));
			Log.i("Name",music.musicName);//输出名称
			music.artist = cursor.getString(cursor
					.getColumnIndex(MediaStore.Audio.Media.ARTIST));

			String filePath = cursor.getString(cursor
					.getColumnIndex(MediaStore.Audio.Media.DATA));
			music.data = filePath;
			Log.i("Name",music.data);//输出路径
			String folderPath = filePath.substring(0,
					filePath.lastIndexOf(File.separator));
			music.folder = folderPath;
			music.musicNameKey = StringHelper.getPingYin(music.musicName);
			music.artistKey = StringHelper.getPingYin(music.artist);
			musicList.add(music);
		}
		cursor.close();
		return musicList;
	}
}

三、开始搜索以及输出结果


private void startSearch(){
		new Thread(new Runnable() {

			public void run() {
				Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;//-------------
				ContentResolver cr = MainActivity.this.getContentResolver();
				StringBuffer select = new StringBuffer(" 1=1 ");
				// 查询语句:检索出时长大于1分钟,文件大小大于1MB的媒体文件
				select.append(" and " + Media.SIZE + " > " + MusicUtils.FILTER_SIZE);
				select.append(" and " + Media.DURATION + " > " + MusicUtils.FILTER_DURATION);

				musicArrayList = MusicUtils.getMusicList(cr.query(uri, MusicUtils.proj_music,
						select.toString(), null,
						MediaStore.Audio.Media.ARTIST_KEY));
			}
		}).start();
	}


四、参考 


https://github.com/longdw/MyMusic

SAP会计凭证导入ABAP开发模板+注意点—附带源码 开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。 阅读详情

相关推荐

深度篇——图像处理的一些方法(一) 关于 图像处理的三个层次 与 selective search

返回主目录 返回 图像处理的一些方法 目录 下一章:深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 目录内容 深度篇——图像处理的一些方法(一)关于图像处理的三个层次 与 selective search 深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 深度篇——图像处理的一些方法(三)细说 HOG特征与bag-o...

天下所弃,不过其纪。世间事,在人,在志。 2917

android下音乐播放器的调用,android 调用手机已安装的音乐播放器 的列表播放音乐...

RE管理器播放音乐也是采用的这种方式代码如下:Intent intent = new Intent();intent.setAction(android.content.Intent.ACTION_VIEW);File newFile = new File(path);Uri uri = Uri.fromFile(newFile);intent.setDataAndType(uri, "audio...

weixin_34368368的博客 490

【Pytorch教程】:卷积神经网络 CNN

Pytorch教程目录 Torch and Numpy 变量 (Variable) 激励函数 关系拟合(回归) 区分类型 (分类) 快速搭建法 批训练 加速神经网络训练 Optimizer优化器 卷积神经网络 CNN 目录Pytorch教程目录什么是卷积神经网络 CNN卷积 和 神经网络池化(pooling)流行的 CNN 结构CNN 卷积神经网络MNIST手写数据CNN模型训练可视化训练全部代码 什么是卷积神经网络 CNN 卷积 和 神经网络 卷积神经网络是如何运作的呢, 举一个识别图片的例子, 我们知

nanke_4869的博客 8087

Android应用开发--MP3音乐播放器界面设计(1)

Android应用开发--MP3音乐播放器界面设计(1) 近期突然想自己开发一款MP3播放器,所以就有了上面的界面,小巫不才,为了记录自己的开发过程,写成博客,个人开发可能有很多地方不规范,但学习嘛,总会有个过程的,不能连爬都不会就想跑吧。 简单介绍一下这个播放器 作者:wwj 名称:简、美音乐播放器(注:自己取的名字,能...

编程语言小筑 716

手把手教你用Ollama & AnythingLLM搭建AI知识库,无需编程,跟着做就行!

本地运行大模型耗资源,需要选择较小的模型作为基础模型。在终端中运行时可能会出现 CUDA 错误,表示显存不足,导致提供的端口失效。中文支持不够完善。\3. 文中提到的技术软件工具有:Ollama、Chatbox、Open WebUI、向量数据库、嵌入模型、本地模型 Gemma、AnythingLLM。

2401_86435672的博客 1万+

用ESP32和HomeSpan自制HomeKit智能灯,手把手教你从零接入苹果家庭App

本文详细介绍了如何使用ESP32开发板和HomeSpan开源库自制原生HomeKit智能灯,从硬件搭建到软件配置,再到通过苹果家庭App控制的全过程。项目绕过了苹果MFi认证,成本低廉但功能完整,支持Siri语音控制、自动化场景等高级功能,是智能家居DIY的实用指南。

weixin_28717431的博客 321

android albums,android音乐播放器_专辑列表

专辑列表就是显示歌曲所属的专辑,也是用ListView来显示,同样也需要定义一个Adapter。一、Activity[java]/****/package com.android.musicplayer.activity;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import com.an...

weixin_36015463的博客 366

手把手教你在ARM64架构下编译和部署Milvus:从环境搭建到Docker镜像制作全攻略

本文详细介绍了如何在ARM64架构下编译和部署Milvus,包括环境搭建、源码下载与编译、Docker镜像制作等关键步骤。通过本文的方法,您可以快速构建适用于ARM64设备的Milvus编译环境,并解决常见的编译错误。同时,还提供了基于Docker Compose的测试方法,帮助用户高效地完成向量数据库的部署与应用。这是一次深入探索开源AI工具的实用指南,为开发者在多种硬件架构上的创新应用提供了强有力的支持。

小盒子的博客 1266

android播放资源音乐,android音乐播放器_专辑列表

专辑列表就是显示歌曲所属的专辑,也是用ListView来显示,同样也需要定义一个Adapter。一、Activity[java]/****/package com.android.musicplayer.activity;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import com.an...

weixin_29146477的博客 229

全新YOLO26有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

🔥《2026年YOLO26改进专栏》🔥 🚀持续更新500+最前沿创新改进点(顶会顶刊论文/独家创新策略),涵盖主干网络、各种卷积、注意力机制、检测头等模块,助力科研论文发表与模型性能提升,支持检测/分割/分类任务。订阅即获完整可运行项目,提供专业QQ答疑群,适合科研发论文(SCI/CCF/核心)及工业应用(PCB/医学/遥感检测)。专栏价格将逐步上涨,早订更优惠! ⭐特色:非计算机专业友好、模块可自由组合、全网独家创新;📌适用:研究生大论文和小论文创新、小目标检测、多领域科研应用,满足不同研究需求。

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

Ansible 面板工具之AWK ( Anssible Tower )界面介绍

整理这部分笔记博文内容为AWX和UI 界面的简单介绍理解不足小伙伴帮忙指正傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波这里AWX使用的是最新的版本AWX 21.7.0目前最新版是3.8.6,博客中的版本为3.5.0对于Redhat的,官网上看到在 2022 年 11 月之后不在维护了,改版之后现在叫,感兴趣小伙伴可以了解下虽然有AWX是。

山河已无恙 1303

Android 扫描SD卡根目录的所有文件夹和音乐文件

public static List&lt;String&gt; musicPaths = null; public String getSDPath() { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_M...

攻城狮的物联网基地 3317

SAP MD09 事务码中的物料需求追溯详解

物料需求追溯是指在物料需求计划中,追踪特定物料的需求来源和满足方式的过程。它帮助企业确定每个需求(如销售订单、独立需求、预留等)是由哪些供应元素(如库存、生产订单、采购订单等)来满足的。通过这种追溯,企业可以了解需求和供应之间的关系,从而优化生产和采购计划,减少库存积压,提升供应链效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1193

Android Studio实现音乐播放器2.0

从UI设计到功能设计,手把手教你如何升级一个音乐App

振华OPPO的博客世界 8万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

解锁Salt Player:让你的安卓手机成为专业音乐播放器

你是否厌倦了那些臃肿的流媒体应用,只想简单纯粹地享受本地音乐?Salt Player(椒盐音乐)就是为你量身打造的终极解决方案!这款备受数十万用户信赖的本地音乐播放器,将专业级音频体验与简洁易用的设计完美结合,让你的安卓手机瞬间变身高品质音乐播放器。 ## 为什么选择Salt Player? 在流媒体音乐盛行的今天,为什么还有那么多人选择本地音乐播放器?答案很简单:**控制权**。Salt P

gitblog_00660的博客 677

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

APlayer安卓音乐播放器终极指南:从安装到精通

**核心关键词**:APlayer安卓音乐播放器,Android音乐播放器 **长尾关键词**:APlayer使用教程,Android音乐播放器安装,音乐播放器功能详解,本地音乐管理,桌面歌词显示 APlayer是一款功能强大的开源Android音乐播放器,为音乐爱好者提供卓越的本地音乐播放体验。这款播放器不仅支持标准音乐格式播放,还具备智能歌词显示、桌面小部件、锁屏控制等实用功能,让您随时

gitblog_07558的博客 741

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android音乐播放器系列讲解之一

      从07年末到现在,Android如火如荼的发展,网上已经有很多Android基本技术的文章视频了。我就不重复发明轮子了。目前比较缺少深入讲解Android系统自带应用的分析资料。Android系统自带的应用对于开发类似功能的应用有很大的参考价值。       从关注Android到做Android系统开发、应用开发也有一年多的时间了,期间做手机时需要修复Android源代码的一些bug,对Android系统有了大概的了解,感觉到Android的确是一个设计很好、实现一般的系统。后来陆续参与开发

雨辰专栏 4193

AndroidStudio开发实现一个音乐播放器

此次项目使用AndroidStudio开发一个音乐播放器。包含登录注册功能,播放暂停等功能,自动检索和手动检索Mp3功能。非常炫酷好看。

猫叔很不爽 5007

AndroidStudio 简单却功能完备的音乐播放器

音乐播放器欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown

weixin_43752106的博客 6226

Android | 音乐播放器 I(详解)

音乐播放器,能够搜索手机内的音乐(MediaStore、ContentResolver),展示到播放界面(CursorAdapter、ListView),在点击播放界面的歌曲,能够进行播放(MediaPlayer),展示到底部导航栏上

鷾 2332

android音乐播放器答辩,基于Android的网络音乐播放器-毕业答辩.pptx

基于Android的网络音乐播放器-毕业答辩.pptx文档编号:612304文档页数:22上传时间: 2019-04-12文档级别:文档类型:pptx文档大小:2.67MB基于Android的网络音乐播放器,答 辩 人 指导老师,20XX.12.15,,xxx大学管理科学与工程学院计算机科学与技术20XX级卓越工程师班,需求分析,总体设计,模块设计,总结,纷纷音乐,致谢,,如今随着智能手机的普及,...

weixin_35718671的博客 857

android4以下的音乐播放器,Android平台四大音乐播放器对比评测

二、歌曲添加,谁便利二、歌曲添加,谁便利对于手机音乐播放器来说,要播放音乐,首先需要添加歌曲。因而添加歌曲的便利性,自然是考评这类软件的一个方面。1、 天天动听有扫描全部歌曲和浏览文件夹两种添加歌曲方式,扫描全部歌曲时可以添加存储卡中的所有歌曲。当然,有时无需添加全部歌曲时,可以采用浏览文件夹的方式,精确选择包含歌曲的文件夹或需要添加的歌曲。图6歌曲添加方式和扫描歌曲图7 浏览文件夹和歌曲列表2、...

weixin_33642697的博客 2256

基于安卓平台音乐播放器的设计与实现

随着安卓平台和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活节奏的加快,生活压力越来越大,碎片化的时间越来越多,那么一个可以在碎片化的时间内调节自己心情的产品,无疑将拥有一个巨大的市场,而基于安卓平台的手机音乐播放器就能很好地满足这个需求。通过调查分析,本系统的用户为广大的安卓平台手机用户,用户可以通过本系统实现音乐播放的基本功能包括播放,暂停,上一首,下一首等。本系统主要的用户为广大的安卓平台手机用户提供音乐播放,歌曲下载,歌迷互动三大模块功能。

毕业作品网站 592

APlayer安卓音乐播放器:如何打造智能个性化播放体验的终极指南

APlayer是一款功能强大的安卓音乐播放器应用,专为追求高品质音乐体验的用户设计。这款开源播放器不仅支持本地音频文件播放,还提供了歌词同步、桌面歌词、睡眠定时等贴心功能,让您的音乐生活更加丰富多彩。 ## 🎵 为什么选择APlayer安卓音乐播放器? APlayer作为一款专业的安卓音乐播放器,拥有以下核心优势: **智能音乐管理** - 自动扫描设备中的音频文件,按歌曲、专辑、艺术家、

gitblog_01124的博客 507

android课程设计-音乐播放器(Android期末作业,Android课设,AndroidStudio毕业设计)

1:注册模块,用户在使用软件前需要进行用户信息的注册2:用户登录:用户通过自己的注册信息进行软件的登录3:音乐信息:在进入首页之后会加载手机本地的音乐文件4:音乐播放:单击音乐列表之后会对音乐进行播放5:播放控制:播放歌曲时;可以进行暂停;上一曲;下一曲的操作6:音乐搜索:用户可以通过输入关键字对音乐进行搜索7:个人信息:用户可以浏览个人信息,以及对密码进行修改;

u014388322的专栏 1409

【GitHub项目推荐--开源音乐播放器】【转载】

其核心亮点在于采用了插件式设计理念:播放器本身不集成任何固定的音乐来源,诸如歌曲搜索、在线播放、歌词显示等所有关键功能,均通过加载不同的插件模块来实现。还集成了一些非常便捷的功能,例如在当前歌单内进行快速搜索定位歌曲,以及歌词随音乐播放同步滚动等,这些都极大地优化了用户操作体验。该项目将用户的所有相关数据,例如播放记录、个人创建的歌单等,全部储存在用户设备的本地存储中。有力地保障了个人隐私。音乐播放功能完全通过插件实现,用户可以根据需要自行安装插件,连接到不同的音乐平台音源(例如某易云、某音乐等)。

j8267643的博客 2693
上一篇: Android:SingleTask对Intent传递数据的影响及解决办法
下一篇: Android:自定义Material Design风格的Dialog
cassiePython
博客等级 码龄12年 303粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值