Diferenciar música de outros sons

Olá pessoal,
Estou criando um programa que precisa listar as músicas contidas no sdcard mas quando uso o content provider para listá-las aparece junto todos os arquivos de áudio de jogos e etc.
Como faço para diferenciar ou filtrar para que só apareçam as músicas?

    	Cursor cursor=getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
    	int artista=cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
    	int titulo=cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
    	if (cursor.moveToFirst()){
	    	while (!cursor.isAfterLast()){
	    		Musica m=new Musica();
	    		m.setArtista(cursor.getString(artista));
	    		m.setTitulo(cursor.getString(titulo));
	    		lista.add(m); 
	    		cursor.moveToNext();
	    	}
    	}

Obs.: Android 2.1

Tio - por acaso o Windows Media Player ou o iTunes fazem isso ? Eles não incluem os arquivos de sons de jogos porque você não configura para varrer esses diretórios. Se você configurar para varrer os diretórios de programas de jogos, eles também incluirão esses arquivos com sons em vez de músicas.

Entendi “sobrinho” :smiley:
É que eu vi que existem as constantes “MediaStore.Audio.Media.IS_MUSIC/IS_RINGTONE/IS_NOTIFICATION/IS_ALARM” e pensei que houvesse como diferenciar.
Vou tentar bolar alguma gambiarra para diminuir a ocorrência de sons na minha lista de músicas então.
Valeu :wink:

Provavelmente ringtones antigos (os famosos “tons polifônicos”) possam ser realmente fáceis de separar com essa constante, mas os novos (que são simplesmente MP3 completos ou então pequenos) são músicas também :slight_smile:

Olá,

Talvez diferenciar pelo tamanho, pois sons do sistema geralmente são pequenos…

Pois é, vou fazer um filtro baseado na duração (MediaStore.Audio.Media.DURATION).
Obrigado a todos pela ajuda. Postarei os resultados quando tiver alguma coisa funcionado.