Получить все аудио файлы из папки
Как получить все аудио файлы из определенной папки в Android с помощью managedQuery(). Означает, что должно быть предложением where в managedQuery () для фильтрации результата Cursor.
Код является:
String[] proj = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DURATION };
Cursor cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, /*where clause here*/, null, null);
3 ответа
IS_MUSIC!= 0 И ДАННЫЕ НРАВИТСЯ '/dir/%':
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0 AND " +
MediaStore.Audio.Media.DATA + " LIKE '/mnt/sdcard/Music/SomeArtist/%'";
Это ограничивает результаты управляемого управляемого запроса.../SomeArtist/ dir.
Я хотел бы, чтобы вы проверили расширения файла, чтобы проверить, является ли это медиа-файл или нет в приведенном выше коде
public class ReadAllFilesFromPathActivity extends Activity {
private List<String> myList;
File file;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listView = (ListView) findViewById(R.id.mylist);
myList = new ArrayList<String>();
File directory = Environment.getExternalStorageDirectory();
file = new File( directory + "/Test" );
File list[] = file.listFiles();
for( int i=0; i< list.length; i++)
{
if(checkFileExtension( list[i].getName() )
{
myList.add( list[i].getName() );
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, myList);
listView.setAdapter(adapter); //Set all the file in the list.
}
}
и добавьте следующий метод для проверки расширений. расширения добавляются в enum
private boolean checkExtension( String fileName ) {
String ext = getFileExtension(fileName);
if ( ext == null) return false;
try {
if ( SupportedFileFormat.valueOf(ext.toUpperCase()) != null ) {
return true;
}
} catch(IllegalArgumentException e) {
return false;
}
return false;
}
public String getFileExtension( String fileName ) {
int i = fileName.lastIndexOf('.');
if (i > 0) {
return fileName.substring(i+1);
} else
return null;
}
и перечисления поддерживаемых расширений (вы также можете добавить свои собственные)
public enum SupportedFileFormat
{
_3GP("3gp"),
MP4("mp4"),
M4A("m4a"),
AAC("aac"),
TS("ts"),
FLAC("flac"),
MP3("mp3"),
MID("mid"),
XMF("xmf"),
MXMF("mxmf"),
RTTTL("rtttl"),
RTX("rtx"),
OTA("ota"),
IMY("imy"),
OGG("ogg"),
MKV("mkv"),
WAV("wav");
private String filesuffix;
SupportedFileFormat( String filesuffix ) {
this.filesuffix = filesuffix;
}
public String getFilesuffix() {
return filesuffix;
}
}
Это немного больше кода, но может помочь вам
Это мой код, который работает с моим конкретным путем к каталогу
Я сделал курсор и с помощью этого найти все песни моего каталога.
У DOWNLOAD_FILE_DIR есть путь к моему каталогу
String DOWNLOAD_FILE_DIR = public static final String DOWNLOAD_FILE_DIR = Environment.getExternalStorageDirectory().getPath() + "/MYDIR";
Это запрос для поиска песен этого каталога.
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0 AND " +
MediaStore.Audio.Media.DATA + " LIKE '"+DOWNLOAD_FILE_DIR+"/%'"
это вернет курсор.
context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, selection, null, null);