2015-12-08 2 views
0

J'essaie de sélectionner des pistes en utilisant des plages de durée. par exempleComment obtenir une sélection de pistes en utilisant la plage de durée

String start = null; 
String end = null; 
if (criteria == getString(R.string.uptofivemins)) { 
    start = "0"; 
    end = "300000"; 
} 
String[] crit = {start,end}; 
String where = "duration >= ? AND duration < ? "; 
//.... 


private final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
private final String duration = MediaStore.Audio.Media.DURATION; 
//etc... 
cr.query(uri, columns, where, crit, null); 

problème semble être que je dois nourrir en cordes début et la fin, la requête résultante exécutera en utilisant ces derniers. Le champ de base de données "duration" est cependant de type int et à partir des résultats qui sont retournés, je suspecte que la comparaison est contre les chaînes plutôt que sur int donc la sélection est incorrecte. Toute personne ayant des idées sur la façon de sélectionner des plages en utilisant des intervalles de durée, par exemple < 5 minutes, entre 5 et 10 minutes, etc. Toute aide grandement appréciée.

+0

'critères' semble être de type Chaîne. Si oui, pourquoi n'utilisez-vous pas 'String.equals()' pour la comparaison? – 0X0nosugar

+0

En outre, vous pouvez convertir des chaînes en ints et ints en chaînes si vous en avez besoin. Utilisez 'String.valueOf (int)' et 'Integer.parseInt (string)' – NoChinDeluxe

+0

Je suis familier avec les méthodes mais le problème réside dans la transmission des valeurs à la requête. crit prend seulement des chaînes pas int. – Theo

Répondre

0

Le problème a été résolu. Une combinaison d'erreur humaine et d'impatience. La requête s'exécute par rapport à la table audio

SELECT duration FROM audio WHERE duration >= '300000' AND duration <= '600000';