`
小桔子
  • 浏览: 23171 次
  • 性别: Icon_minigender_2
  • 来自: 贵阳
社区版块
存档分类
最新评论

android播放,掃描添加本地音頻文件

阅读更多

        最近幾乎沒有什麽事情,繼續鼓搗我的小東西。想在項目中加入一個簡易的音樂播放器功能,就像華為p6桌面上那麼大小的音樂播放器。用過天天動聽或者QQ音樂播放器的人都知道,可已通過本地掃描添加歌曲。不知道他們是怎麼實現的,我覺得應該掃描設備上的所有文件,過濾出音頻文件,每個文件實例化為一個實體,記錄文件名、路徑、歌手、類型、大小等信息。具體算法思想,寫一個遞歸調用的方法,使用file.listFile()獲取該文件夾下的目錄和文件,在逐一判斷,如果是目錄這遞歸,如果是文件,則使用file.getName()獲取文件名判斷是不是以.mp3 和.wmv等結尾,則保存信息。代碼如下:

 
package com.shark.act.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.shark.db.Song;

public class SongsFilter {
	
	public static List<Song> songLis=new ArrayList<Song>();
	public static void IterateFile(File file)
	{	
		if(file.listFiles()!=null)//文件目錄下掃描到的文件為空判斷
		{
			for( File filex : file.listFiles())
				{
				if(filex.isDirectory())
				{
				    IterateFile(filex);
				}
				else
				{
					String filename=filex.getName();
					System.out.println(filename);
					if(filename.endsWith(".mp3"))
					{
						Song mSong=new Song();
						mSong.setName(filename);
						mSong.setPath(file.getPath());	
						mSong.setType("mp3");
						songLis.add(mSong);
					}
					else if(filename.endsWith(".wmv"))
					{Song mSong=new Song();
						mSong.setName(filename);
						mSong.setPath(file.getPath());	
						mSong.setType("mp3");
						songLis.add(mSong);
					}
				}				
				};		
	}
	}
	

}

 

 
實體類Song:
測試:
File path=Environment.getExternalStorageDirectory();
SongsFilter.IterateFile(path);
for(Song song:SongsFilter.songLis)
{
System.out.println("歌曲名稱:"+song.getName()+" 路徑:"+song.getPath()+" 類型"+song.getType());
}
 
tips:如果傳入文件下的文件很多,掃描時間可能會很長,可以開個線程來執行掃描。
        通過上面的方法掃描到了本地文件夾下的歌曲信息,接下來時持久化,不然每次開啟都要掃描一次的話用戶體驗性不好,可以將掃描到的歌曲信息存放在sqlite中,可以直接到數據庫中查找音頻信息。這裡有兩個問題
1.如果用戶在本地將音頻文件刪除,sqlite中還存在該信息。可能出現找不到文件異常
2.如果用戶在本地將添加了音頻文件,sqlite中還是沒有音頻數據。
以上說的情況是用戶刪除或者添加了文件而本應用卻不知道,所以不能及時的跟新數據庫,怎麼整?難道人家天天動聽、QQ音樂不是這麼整的?
之前写的,今天修改了一下文件遍历,之前没注意,文件目录下文件为空时会报错。顺带补充一下天天动听的扫描可能是手动扫描,因为我使用天天动听,我的手机SD卡坏了之后,以前存放的音频文件没了,但是在天天动听上面却依然还有索引,也就是说天天动听没有更新本地音乐库。播放自然会报错的!而QQ音乐应该直接使用的mediaStore这个类provider来抓数据的。自动检测本地SD卡,比如下载了一首歌曲就会存放在provider中!
分享到:
评论

相关推荐

    Android扫描音乐文件

    在开发Android应用时,尤其是构建音乐播放器应用,扫描本地音乐文件是至关重要的一步。这个过程涉及到文件系统操作、媒体库访问以及UI显示等多个技术环节。以下是对这些知识点的详细说明: 1. **文件系统操作**:...

    android usb扫描音视频,并播放

    在Android平台上,开发一个应用程序来扫描USB设备中的音视频文件并进行播放,涉及到多个关键知识点。这个项目"android usb扫描音视频,并播放"是基于最新的Android Studio 2021.3.1版本构建的,这表明它利用了最新的...

    Android音乐播放器制作(一)扫描本地音乐显示在手机上

    总的来说,创建一个本地音乐播放器应用涉及到了Android文件系统操作、媒体库扫描、UI设计、数据绑定以及音频播放控制等多个技术领域。通过这个项目,开发者不仅可以提升Android开发技能,还能深入理解Android系统对...

    Android本地被播放器

    在Android平台上,开发一个本地音乐播放器是一项常见的任务,它能帮助用户管理和欣赏存储在设备上的音频文件。本文将深入探讨如何使用广播接收器、歌词同步以及进度条同步等技术来构建这样一个应用。 首先,我们要...

    Android音乐播放器制作 扫描本地音乐显示在手机(一)

    首先,我们需要扫描设备上的所有音频文件。在Android中,我们可以利用`MediaStore`内容提供者来访问设备存储上的媒体信息,包括音乐。`MediaStore.Audio.Media.EXTERNAL_CONTENT_URI`是一个特殊的URI,用于访问外部...

    android本地音乐播放器

    10. **音乐元数据**:使用MediaMetadataRetriever获取音频文件的元数据,如专辑封面、艺术家信息等,这些可以丰富UI展示。 以上是开发"android本地音乐播放器"的基本步骤和技术要点。实际开发中可能还需要处理更多...

    Android 商业级别音乐播放器源码 UI美观 功能齐全

    "扫描本地歌曲"是利用MediaScannerConnection扫描设备上的音频文件,将新添加或更改的音乐文件添加到媒体库。此外,源码可能还包含了自定义的音乐扫描逻辑,以便根据特定规则过滤或包含某些文件。 "摇一摇换歌曲...

    本地Mp3音乐播放器app源码(android).rar

    总结来说,"本地Mp3音乐播放器app源码(android).rar"提供了一个基础的Android音乐播放器实现,涵盖了文件管理、媒体扫描、音乐播放控制、以及可能的UI设计等多个方面。通过对这个源码的学习和研究,开发者可以深入...

    android音乐播放器课程设计

    了解如何遍历文件系统,识别音频文件的扩展名,以及如何触发媒体扫描是非常关键的。 3. **歌词显示**:实现歌词同步显示通常需要解析LRC格式的歌词文件,将歌词时间和歌词内容对应起来。开发者需要理解LRC文件结构...

    Android实现搜索本地音乐的方法

    1. **扫描本地音频文件**: - 在Android中,我们可以利用`ContentResolver`和`MediaStore`类来获取设备上的音乐文件。`MediaStore.Audio.Media.EXTERNAL_CONTENT_URI`是一个常量,代表外部存储器(通常为SD卡)上的...

    Android简单的音乐播放器

    在Android平台上开发一个简单的音乐播放器,涉及到许多关键的技术点,包括媒体库的使用、音频文件的扫描、播放控制以及用户界面设计等。下面将详细阐述这些知识点。 首先,**媒体库的使用**是实现音乐播放的基础。...

    Android项目源码Nature音乐播放器

    - **MediaPlayer API**:Nature音乐播放器使用了Android自带的MediaPlayer类来播放音频文件。这个API支持多种音频格式,如MP3、AAC等,并提供了播放、暂停、停止、快进、后退等基本控制。 - **AudioFocus**:为了...

    Android vlc

    Android VLC 实现了一个本地媒体库,用于管理和搜索设备上的媒体文件。它通过扫描 SD 卡和其他存储位置来构建媒体库。此外,还支持播放列表功能,允许用户创建、编辑和保存多个播放列表。 ### 4. 用户界面 Android...

    android媒体播放

    在Android操作系统中,媒体播放功能是一项至关重要的服务,它允许用户播放各种音频和视频格式的文件。本知识点将深入探讨Android中的媒体播放机制,特别是针对MP4和RealPlayer格式的支持。 首先,Android提供了两种...

    Android平台MP3播放器

    这需要使用到Android的`MediaStore`类来获取音频文件的URI,并使用`MediaPlayer`类进行播放。`MediaStore.Audio.Media.EXTERNAL_CONTENT_URI`可以用来检索SD卡上的所有音频文件。`MediaPlayer`提供了播放、暂停、...

    Android本地音乐播放器(获取外置存储卡的音乐)

    - 使用Android的`MediaPlayer`类来播放音频文件。`MediaPlayer`提供了一系列的方法如`prepare()`,`start()`,`pause()`,`stop()`和`seekTo()`,用于播放、暂停、停止和跳转到指定位置。 4. **播放控制**: - 创建...

    android应用源码yannihui(音乐播放器).rar

    源码中可能还包括对音频文件的管理,如文件扫描、播放列表的创建和保存。这通常涉及到SQLite数据库的使用,用于存储歌曲信息,如歌曲名、艺术家、专辑等。SQLite是Android内置的关系型数据库,便于在本地进行数据...

    Android音乐播放器结业论文加源码

    12. **音乐流播放**:除了本地文件播放,高级的音乐播放器可能还支持在线音乐流播放,这就需要用到HttpURLConnection或者第三方库如OkHttp来获取网络资源。 13. **状态保存与恢复**:当应用被系统关闭或用户离开时...

    android下开放的音乐播放器

    "android下开放的音乐播放器"项目旨在实现一个功能齐全的音乐播放应用程序,允许用户播放本地存储的音频文件,并提供基本的播放控制。 首先,我们从基础构建开始。在Android应用开发中,我们需要使用Android Studio...

    android 闹钟选择SD卡音乐铃声

    在Android平台上,为闹钟应用添加SD卡音乐作为铃声是一项常见的需求,这涉及到多媒体文件的访问、播放以及用户交互等多个方面。以下是一些相关的知识点: 1. **多媒体文件访问**:Android系统允许应用程序访问外部...

Global site tag (gtag.js) - Google Analytics