#Android进行文件扫描#
16lz
2021-01-25
对于前几日进行的Android音乐播放器,需要进行对手机存储进行扫描。这将将分享一个可以进行本地扫描的工具类。
下面展示一些 内联代码片
。
public class LocalMusicUtils { //定义一个集合,存放从本地读取到的内容 private final static String TAG = "LocalMusicUtils"; public static List<Song> list; public static Song song; private static String name; private static String singer; private static String path; private static int duration; private static long size; private static long albumId; private static long id; //获取专辑封面的Uri private static final Uri albumArtUri = Uri.parse("content://media/external/audio/albumart"); public static List<Song> getmusic(Context context) { list = new ArrayList<>(); Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.AudioColumns.IS_MUSIC); //推荐,可以扫描全部MP3文件 if (cursor != null) { while (cursor.moveToNext()) { song = new Song(); name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)); id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)); singer = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); System.out.println("CCCC"+path); duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)); size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE)); albumId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));// 把歌曲名字和歌手切割开 song.setName(name); song.setSinger(singer); song.setPath(path); song.setDuration(duration); song.setSize(size); song.setId(id); song.setAlbumId(albumId); if (size > 1000 * 800) { if (name.contains("-")) { String[] str = name.split("-"); singer = str[0]; song.setSinger(singer); name = str[1]; song.setName(name); } else { song.setName(name); } } list.add(song); } } cursor.close(); return list; }}
其中Song是一个类,主要用于扫描大ode歌曲的信息的存放。代码如下:
下面展示一些 内联代码片
。
public class Song { public String name;//歌曲名 public String singer;//歌手 public long size;//歌曲所占空间大小 public int duration;//歌曲时间长度 public String path;//歌曲地址 public long albumId;//图片id public long id;//歌曲id public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } public long getSize() { return size; } public void setSize(long size) { this.size = size; } public int getDuration() { return duration; } public void setDuration(int duration) { this.duration = duration; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public long getAlbumId() { return albumId; } public void setAlbumId(long albumId) { this.albumId = albumId; } public long getId() { return id; } public void setId(long id) { this.id = id; } @NonNull @Override public String toString() { return super.toString(); }}
以上就是Android开发基于java代码用于扫描手机存储的MP3文件。
注意:
下面展示一些 内联代码片
。
(1)也可以进行扫描MP3 文件,但是扫描出来的文件播放的时候会有报错。
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI , null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); //垃圾。不能全部扫描,并播放
(2) 推荐,可以扫描全部MP3文件,可以扫描到所有的MP3 文件(包括一些其他音乐软件下载的MP3文件)
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.AudioColumns.IS_MUSIC);
界面截图:
整理不易,点个赞再走。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- NDK编程:Android.mk编译APK范例
- Android(安卓)简单GreenDao增删改查
- 我的Android工作笔记
- Android(安卓)ListView分页显示