MPMusicPlayerController - Jouer une musique au hasard

apocaalypsoapocaalypso Membre
13:00 modifié dans API UIKit #1
Bonjour,

Dans mon application, je souhaite jouer une musique spécifique. Pour cela, j'utilise le MPMusicPlayerController :
MPMediaQuery *query = [MPMediaQuery songsQuery];<br />&nbsp; &nbsp;  [query setGroupingType:MPMediaGroupingArtist];<br />&nbsp; &nbsp;  <br />controller&nbsp; = [[MPMusicPlayerControlleralloc] init];<br />&nbsp; &nbsp;  [controller setQueueWithQuery:query];<br />&nbsp; &nbsp;  controller.volume = 0.75;<br />&nbsp; &nbsp;  [controller play];


Mais évidemment cela joue la première chanson par artiste, alors je que voudrais choisir celle que je veux et je ne sais pas comment faire, un predicate ?

Merci beaucoup !

Réponses

  • vico92vico92 Membre
    juillet 2009 modifié #2
    Salut apocaaaaaaaalypso,

    J'ai trouvé cette méthode qui utilise le framework AVFoundation:
    http://forums.mformature.net/showthread.php?t=1266
    Je me sert de ça pour jouer une musique, mais je pense que ton framework est mieux, je voudrais bien en savoir un peu plus dessus ^^

    Toi tu utilises le framework MediaPlayer, et c'est bien ?
    Tu px créer une playlist dans laquelle tu vas piocher au runtime ?


    merci,
    Vico

  • apocaalypsoapocaalypso Membre
    13:00 modifié #3
    Merci de ta réponse.
    J'ai pu trouver tout seule, en fait il suffit d'ajouter un predicate. Je m'explique :

    J'ai créé une méthode qui retourne le nom d'un genre présent dans l'iPhone au hasard, puis je joue le MPMusicPlayer en lui associant une MPQuery à  qui je dit de jouer une chanson au hasard dont le genre est le précédant.
    Voici un bout de code :
    // Pour obtenir un genre au hasard<br />-(MPMediaItem *)getRandomGenre<br />{<br />	MPMediaQuery *query = [MPMediaQuery genresQuery];<br />	[query setGroupingType:MPMediaGroupingGenre];<br />	MPMediaItemCollection *collection;<br />	NSArray *songs = [query items];<br />	MPMediaItem *album;<br />	MPMediaItem *genre;<br /><br />	for(collection in songs)<br />	{<br />		album = [songs objectAtIndex:(arc4random() % [songs count])];<br />		genre = [album valueForProperty:MPMediaItemPropertyGenre];<br />		break;<br />	}<br />	<br />	return genre;<br />}<br />
    


    // On joue le MPMusicPlayerController avec le genre au hasard<br />// grâce au predicate<br />-(void)performMusicController<br />{<br />&nbsp; &nbsp; &nbsp; &nbsp; // Le genre au hasard<br />&nbsp; &nbsp; &nbsp; &nbsp; NSString *genreHasard = (NSString *)[self getRandomGenre];<br /><br />	MPMediaQuery *query = [MPMediaQuery songsQuery];<br />	[query setGroupingType:MPMediaGroupingTitle];<br />	MPMediaPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:genreHasard forProperty:MPMediaItemPropertyGenre];<br />	[query addFilterPredicate:predicate];<br />	<br />	controller = [[MPMusicPlayerController alloc] init];<br />	[controller setQueueWithQuery:query];<br />	controller.volume = 0.30;<br />	[controller play];<br />}
    


    Voilà 
Connectez-vous ou Inscrivez-vous pour répondre.