private void ShowMp3List() {
Cursor cursor = this.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,//音频的uri
new String[] { MediaStore.Audio.Media.TITLE, //歌曲名称
MediaStore.Audio.Media.DURATION, //歌曲持续的时间
MediaStore.Audio.Media.ARTIST, //歌手
MediaStore.Audio.Media._ID, //歌曲id
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DATA, //歌曲文件路径
MediaStore.Audio.Media.ALBUM_ID }, null, null, null);
if (null != cursor && cursor.getCount() == 0) {
builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.music_list_tell).setPositiveButton(
"aa", null);
ad = builder.create();
ad.show();
listviews.setBackgroundResource(R.drawable.list_empty);
return;
}
cursor.moveToFirst();//验证游标是否为空
while(cursor.moveToNext){
id = cursor.getInt(3);
title= cursor.getString(0);
artist = cursor.getString(2);
path = cursor.getString(5).substring(4);
alltime=(toTime(cursor.getInt(1)));
System.out.println(id+""+title+artist+path+alltime)
}
listview.setAdapter(new SimpleCursorAdapter(this, R.layout.item_listview, cursor, new String[]{MediaStore.Audio.Media._ID
,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media.TITLE}, new int[]{R.id.imageView1,R.id.textView1,R.id.textView2}));
}
/////////////////////////////////////////////////////////
MediaStore类是Android平台的多媒体数据库,它包含了音频,视频,图片等所有多媒体文件信息
media 是媒体的意思
MediaStore以ContentProvider的形式向外提供媒体数据库信息。通过Android平台提供的ContentProvider接口,可以方便的访问数据库信息。
MediaStore.Audio.Media类定义了媒体数据库中的歌曲信息
歌曲ID:MediaStore.Audio.Media._ID
歌曲的名称 :MediaStore.Audio.Media.TITLE
MediaStore.Audio.Artists类定义了媒体数据库中的歌手信息
MediaStore.Audio.Albums类定义了媒体数据库中的专辑信息
MediaStore.Audio.Playlists类定义了媒体数据库中的播放列表信息
歌曲文件的路径 :MediaStore.Audio.Media.DATA
歌曲的总播放时长 :MediaStore.Audio.Media.DURATION
歌曲文件的大小 :MediaStore.Audio.Media.SIZE
MediaStore.Audio.Media.DISPLAY_NAME 歌曲id 歌首 歌名(1 周杰伦-爱的怒放.mp3)
audio adj. 听觉的,声音的;音频的
//fragment碎片
package com.wuxifu.musiclist;
import com.example.tabhost002.R;
import com.wuxifu.widget.MyPlayer;
import com.wuxifu.widget.MyService.MyBinder;
import android.database.Cursor;
import android.os.Binder;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
public class SearchaLocalMusicFragment extends ListFragment
{
private Button search;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View inflate = inflater.inflate(R.layout.local_music, null);
search =(Button) inflate.findViewById(R.id.search);
iniSearch();
return inflate;
}
private void iniSearch()
{
}
private MyPlayer myPlayer;
private MyBinder binder;
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
String[] projection=new String[] { MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ALBUM_ID };
final Cursor cursor = getActivity().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
if(!cursor.moveToFirst())
{
Log.e("cursor", "cursor为空 ");
return ;
}
setListAdapter(new MusicListAdapter(getActivity(), cursor));
getListView().setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id)
{
if(myPlayer==null || binder==null){
myPlayer = (MyPlayer)getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment1);
binder = myPlayer.getmBinder();
}
//先要让cursor移动要那一行,才能取那一行某列的数据,否则不行的
if( cursor.moveToPosition(position)){
String string=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
binder.play(string);
}
}
});
}
}
///////////////////////////////
Cursor android.content.ContentResolver.query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
如 select id,name,age from wuxifu where id in (15,20) order by age;
String[] projection=new String[]{"id","name","age"}
//错的::::String selection=new String[]{"id"}
//正确的:::::
String selection=“id in (?,?) ”;
String selectionArgs=new String[]{"110","20"};
相关推荐
一个很强大的音乐播放器有同步显示歌词和读取本地音乐
基于Android系统开发的一个读取本地音乐的播放器
Android音乐播放器,可直接运行,可以读取本地音频文件,按不同列表显示,点击可以进入播放界面,可以进行播放、暂停等基本功能
用html+js实现的本地音乐播放器,无需插件即可运行,上传音乐、上一曲、下一曲、暂停、播放、列表循环、单曲循环、随机播放、音乐时长、进度条、进度条点击跳转播放这些基本功能都有,同时还实现了音频可视化,绘制...
用工作线程去遍历外部存储,将找到的mp3文件信息保存到list集合中,用listview控件显示歌曲信息
登录后跳转至音乐界面,本地歌曲列表读取本地音乐文件并显示 点击本地音乐中音乐列表页的歌曲跳转至播放页 点击在线音乐中的网易云按钮可打开网易云网址 播放页可实现对歌曲的暂停,继续,上一首,下一首以及回退至...
超简单的,只有一个播放页面的音乐播放器,读取模拟器SD卡的音乐文件进行播放,可以点击歌曲列表的歌曲播放,还可以暂停和继续播放。 Android Studio:3.1.4 Gradle:gradle-4.4-all
安卓手机 简单的本地化音乐播放器,支持API16+。权限:无广告,无后台,不联网,读写sd卡,支持自定义背景图片,定时睡眠,查看音乐信息,拖动改变音乐顺序等,喜欢的可以试试
通过打开,并选取本地文件夹内Mp3,在项目中播放该曲目。
本地音乐播放器源码没有歌词显示功能。显示界面也比较简单。可以读取歌曲信息按照艺术家分类。也可以按照专辑分类。后台播放使用service实现。
Android应用源码适合新手学习的本地音乐播放器,本项目源码是简单的本地音乐播放器,没有歌词显示功能。显示界面也比较简单。可以读取歌曲信息按照艺术家分类。
读取本地音乐文件夹 自动转码(MP3 TO WAV) 自动创建根据不同用户的用户名的缓存目录。 自动判断缓存目录是否有该音频文件,是则直接播放,否则再次创建并播放。 将转码音频另存为缓存目录下,并替换和保存该路径。...
一个基于Python PYQT5实现的本地音乐播放器源代码,支持获取在线歌词,使用SQLite3数据库实现音乐的检索,专注于显示歌曲的内嵌歌词和歌曲信息。 本软件的媒体播放基于Qt5的QMediaPlayer类实现,而在Windows平台上,...
本项目源码是简单的本地音乐播放器,没有歌词显示功能。显示界面也比较简单。可以读取歌曲信息按照艺术家分类。也可以按照专辑分类。代码量较小注释也很恰当是安卓新手练手的最好项目。后台播放使用service实现,
实现了本地音乐播放的功能,具有读取本地音乐,歌手,专辑,以及随机,顺序,单曲播放等功能,并具有断点续播的功能。不过仍旧有一些小bug,使用者可以自行修复。
一款简易的音乐播放器,展示播放列表,并且有CD旋转,显示音乐频谱图等炫酷的效果。
如有不懂的请看我的博客内容,使用Android读取本地音乐,实现音乐操作的基本功能,里面包括了所有的项目源码以及资源文件。
p5.sound由Tone.js (由Yotam Mann开发的交互式音乐框架)的几个模块(时钟,TimelineSignal和信号数学组件)构建而成。 参考与启示 Yotam Mann和TONE.js Boris Smus Web Audio API书籍 Wavesurfer.js 网络音频...
展示本地音乐列表, 提供对本地音乐的读取, 并且可以播放, 添加收藏, 删除 在线音乐 展示当前热门歌曲, 提供播放,添加收藏,删除等功能,需要时可以刷新列表 播放器界面 展示当前音乐的信息, 控制播放模式, 上一曲, ...
读取本地音乐,这是音乐播放器代码的一个博客:https://blog.csdn.net/qq_43433255/article/details/88102154#comments,嫌弃麻烦。也可以直接下载。