2013-03-04 97 views
1

如何使用managedQuery()从android中的特定文件夹获取所有音频文件。意思是应该在managedQuery()中的where子句中过滤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); 

回答

1

我想你检查文件的扩展名来检查它是否在上面的代码

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. 
} 
} 

媒体文件或不添加以下方法检查扩展。扩展枚举添加支持的扩展

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; 
    } 
} 

这是一个有点更多的代码,但是可以帮助你

+0

thnks它对我的工作,,,投票了.. – 2015-06-04 12:21:06

4

IS_MUSIC!= 0 AND DATA LIKE'/ dir /%':

String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0 AND " + 
      MediaStore.Audio.Media.DATA + " LIKE '/mnt/sdcard/Music/SomeArtist/%'"; 

这会将您的managedQuery结果限制为.../SomeArtist/dir。

相关问题