Avec l'accès à la bibliothèque musicale, vos applications peuvent incorporer les chansons, les livres audio et les collections de podcasts de vos utilisateurs. Cette fonctionnalité peut être utilisée pour améliorer le jeu en permettant aux utilisateurs de lire leur propre bande son, de créer des applications de lecteur multimédia personnalisées, etc.!
REMARQUE: Afin de tester cette fonctionnalité, vous aurez besoin d'un périphérique iOS physique et devez être membre du programme de développeur iOS payant..
Ouvrez Xcode et sélectionnez? Créer un nouveau projet Xcode?. Sélectionnez? Application basée sur les vues? et cliquez sur "Suivant". Entrez un nom pour votre projet (j'ai appelé le mien? Musique?), Entrez l'identifiant de votre entreprise, assurez-vous de sélectionner l'iPhone pour la famille d'appareils, puis cliquez sur "Suivant". Choisissez un emplacement pour enregistrer votre projet et cliquez sur? Créer?.
Dans la zone de navigation de Xcode 4, sélectionnez le nom du projet (dans notre cas? Musique?). Ensuite, sélectionnez la cible actuelle (? Musique? Ici à nouveau), puis sélectionnez? Build Phases? languette. Développez le? Link Binary With Libraries? option, puis cliquez sur le bouton? +? bouton pour ajouter un nouveau cadre. Tapez? MediaPlayer "dans le champ de recherche et sélectionnez le MediaPlayer.framework option qui apparaît dans la liste. Cliquez sur? Ajouter? inclure ce cadre dans la phase de liaison de votre projet.
Maintenant que vous avez ajouté le framework de lecteur multimédia à votre projet, vous devez importer ce framework dans le contrôleur de vue qui utilisera l'iPod.
bibliothèque. Aller au MusicViewController.h fichier et insérez la ligne de code suivante sous le UIKit #importation
ligne:
#importation#importation
Téléchargez le code source et faites glisser la carte des images sur votre projet. Assurez-vous que la case à cocher de Copier l'élément dans le dossier du groupe de destination (si nécessaire) est vérifié. Cette carte contient les images que nous utiliserons dans cette application..
Dans la? Musique? dossier dans le? Navigateur de projet? cliquez sur MusicViewController.xib.
Faites glisser un UIImageView de la bibliothèque vers la vue. Assurez-vous que la fenêtre des utilitaires est affichée et allez à la Inspecteur de taille. Définissez la largeur et la hauteur sur 200, la coordonnée x sur 60 et la coordonnée y sur 20. Cette vue affiche les illustrations de la chanson..
Maintenant, faites glisser un UISlider sur la vue et disposez-le avec les repères bleus au bas de la vue. Rendez-le également un peu plus large afin qu’il utilise toute la largeur de la vue entre les deux repères bleus. Nous allons utiliser ce curseur pour régler le volume.
Maintenant, faites glisser 4 boutons UIB sur la vue. Faites glisser le premier sous la vue d'image et définissez son titre sur "Afficher le sélecteur de média". Celui-ci fera exactement ce que dit le texte. Les trois autres boutons seront les boutons de contrôle. Sélectionnez les trois autres boutons et allez à la Inspecteur d'attributs. Définissez le type sur Douane et réglez l’image des boutons sur PreviousButton.png, PlayButton.png et NextButton.png. Disposez les boutons comme ci-dessous.
Enfin, faites glisser trois étiquettes UIL vers la vue. Supprimez le texte de toutes les étiquettes et arrangez-les comme ci-dessous (j'ai ajouté du texte afin que vous puissiez voir où sont les étiquettes. Vous n'aurez pas besoin d'ajouter ce texte). Ces étiquettes montreront des informations sur la chanson en cours de lecture.
Maintenant que nous avons conçu l'interface, nous pouvons établir les connexions. Cliquez sur le bouton du milieu de l'éditeur pour afficher le assistant rédacteur .
Cliquez sur la vue d'image et faites glisser CTRL vers l'interface. Un pop-up va montrer. Entrez le texte? ArtworkImageView? pour le nom, puis cliquez sur? connect.?
Maintenant, cliquez sur le curseur et connectez-le de la même manière, mais nommez-le "volumeSlider". CTRL-glisser à nouveau du curseur vers l'interface, mais cette fois sous les accolades. Définissez la connexion sur Action au lieu de Outlet. Entrez? VolumeChanged? pour le nom et assurez-vous que l'événement est Valeur modifiée et cliquez sur? Connecter?.
Ces 4 boutons nécessitent également des actions. Connectez-les de la même manière que l'action du curseur a été connectée. Nommez les actions comme suit:
Le bouton de lecture nécessite également une prise. Connectez-le de la même manière que nous avons connecté la prise pour la vue d'image, mais nommez-le? PlayPauseButton?.
Enfin, nous devons créer les points de vente pour les étiquettes. Connectez-les à nouveau de la même manière que nous avons connecté la prise de vue d'image. Nommez le premier label? TitleLabel ?, le second label? ArtistLabel? et le dernier label? albumLabel?.
Le code du fichier MusicViewController.h doit maintenant se lire comme suit:
#importation#importation @interface MusicTestViewController: UIViewController IBOutlet UIImageView * artworkImageView; IBOutlet UISlider * volumeSlider; IBOutlet UIButton * playPauseButton; IBOutlet UILabel * titleLabel; IBOutlet UILabel * artistLabel; IBOutlet UILabel * albumLabel; - (IBAction) volumeChanged: expéditeur (id); - (IBAction) showMediaPicker: expéditeur (id); - (IBAction) previousSong: (id) expéditeur; - (IBAction) playPause: (id) expéditeur; - (IBAction) nextSong: (id) expéditeur; @fin
Générez et exécutez le code pour vous assurer que l'application fonctionne bien. L'application affiche uniquement l'interface que nous venons de créer, mais les boutons ne fonctionnent pas..
Aller au MusicViewController.h fichier et modifier le code pour lire comme suit:
#importation#importation @interface MusicTestViewController: UIViewController IBOutlet UIImageView * artworkImageView; IBOutlet UISlider * volumeSlider; IBOutlet UIButton * playPauseButton; IBOutlet UILabel * titleLabel; IBOutlet UILabel * artistLabel; IBOutlet UILabel * albumLabel; MPMusicPlayerController * musicPlayer; @property (nonatomic, keep) MPMusicPlayerController * musicPlayer; - (IBAction) volumeChanged: expéditeur (id); - (IBAction) showMediaPicker: expéditeur (id); - (IBAction) previousSong: (id) expéditeur; - (IBAction) playPause: (id) expéditeur; - (IBAction) nextSong: (id) expéditeur; - (void) registerMediaPlayerNotifications; @fin
Comme vous pouvez le voir, nous avons ajouté le MPMediaPickerControllerDelegate et créé un MPMusicPickerController. Nous avons également ajouté la méthode registerMediaPlayerNotifications pour enregistrer les notifications du lecteur multimédia.
Allez maintenant au MusicViewController.m fichier et synthétiser musicPlayer en ajoutant le code suivant sous le @la mise en oeuvre :
@ synthétiser musicPlayer;
Nous devons également le libérer dans le dealloc
et viewDidUnload
méthode avec le code suivant:
[version de musicPlayer];
Allez maintenant au viewDidLoad
méthode. Décommentez-le et ajoutez le code suivant sous [super viewDidLoad];
musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
Ici, nous plaçons notre contrôleur de lecteur de musique sur un iPodMusicPlayer. Cela signifie que notre application partage l'état de l'iPod et que si nous la quittons, la musique continue de jouer. ApplicationMusicPlayer est l'autre type. Ce lecteur de musique lit la musique localement dans votre application. Votre lecteur de musique peut avoir un élément en cours de lecture différent de celui de l'application iPod intégrée. Lorsque vous quittez l'application, la musique cesse de jouer..
Ajoutez le code suivant au viewDidLoad
méthode:
[volumeSlider setValue: [volume de musicPlayer]]; if ([musicPlayer playState] == MPMusicPlaybackStatePlaying) [playPauseButton setImage: [UIImage imageNamed: @ "pauseButton.png"] pourState: UIControlStateNormal]; else [playPauseButton setImage: [UIImage imageNamed: @ "playButton.png"] pourState: UIControlStateNormal];
Tout d'abord, nous définissons la valeur actuelle du curseur sur le volume actuel du lecteur de musique. Le volume est une valeur comprise entre 0 et 1. Si le volume est 0, il n'y a pas de son et lorsque le volume est 1, le volume est au maximum. Après cela, nous vérifions que le lecteur de musique joue quelque chose. Si la lecture est en cours, nous définissons l'image de playPauseButton sur l'image pauseButton et lorsqu'elle ne joue pas, nous définissons l'image de playPauseButton sur l'image playButton..
Ajoutez le code suivant au viewDidLoad
méthode:
[auto registerMediaPlayerNotifications];
Cette ligne appellera le registerMediaPlayerNotifications
méthode où nous allons enregistrer trois observateurs pour les notifications du lecteur multimédia. Ajoutez le code suivant sous le viewDidLoad
méthode:
- (void) registerMediaPlayerNotifications NSNotificationCenter * notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver: sélecteur automatique: @selector (handle_NowPlayingItemChanged :) nom: MPMusicPlayerControllerNowPlayingItemDidChangeNotification object: musicPlayer]; [notificationCenter addObserver: self selector: @selector (handle_PlaybackStateChanged :) nom: MPMusicPlayerControllerPlaybackStateDateChangeNotification objet: musicPlayer]; [notificationCenter addObserver: sélecteur automatique: @selector (handle_VolumeChanged :) nom: MPMusicPlayerControllerVolumeDidChangeNotification: musicPlayer]; [musicPlayer beginGeneratingPlaybackNotifications];
Ici, nous enregistrons trois observateurs pour les notifications du lecteur multimédia. Le premier est pour le MPMusicPlayerControllerNowPlayingItemDidChangeNotification
. Nous allons utiliser cela pour mettre à jour les informations sur les médias en cours. Le second est pour le MPMusicPlayerControllerPlaybackStateDidChangeNotification
, nous utilisons également celui-ci pour mettre à jour notre interface utilisateur. Le troisième et dernier est pour le MPMusicPlayerControllerVolumeDidChangeNotification
, nous allons utiliser celui-ci pour mettre à jour la valeur actuelle de notre curseur.
Chaque fois que vous enregistrez un observateur, vous devez également vous assurer de le supprimer du répertoire. viewDidUnload
et le dealloc
méthodes. Ajoutez donc le code suivant à ces deux méthodes:
[[NSNotificationCenter defaultCenter] removeObserver: nom propre: MPMusicPlayerControllerNowPlayingItemDidChangeNotification objet: musicPlayer]; [[NSNotificationCenter defaultCenter] removeObserver: nom propre: MPMusicPlayerControllerPlaybackStateDidChangeNotification object: musicPlayer]; [[NSNotificationCenter defaultCenter] removeObserver: nom propre: MPMusicPlayerControllerVolumeDidChangeNotification object: musicPlayer]; [musicPlayer endGeneratingPlaybackNotifications];
Ajoutez le code suivant sous le registerMediaPlayerNotifications
méthode:
- (void) handle_NowPlayingItemChanged: (id) notification MPMediaItem * currentItem = [musicPlayer nowPlayingItem]; UIImage * artworkImage = [UIImage imageNamed: @ "noArtworkImage.png"]; MPMediaItemArtwork * artwork = [currentItem valueForProperty: MPMediaItemPropertyArtwork]; if (artwork) artworkImage = [oeuvre imageWithSize: CGSizeMake (200, 200)]; [artworkImageView setImage: artworkImage]; NSString * titleString = [currentItem valueForProperty: MPMediaItemPropertyTitle]; if (titleString) titleLabel.text = [NSString stringWithFormat: @ "Title:% @", titleString]; else titleLabel.text = @ "Titre: titre inconnu"; NSString * artistString = [currentItem valueForProperty: MPMediaItemPropertyArtist]; if (artistString) artistLabel.text = [NSString stringWithFormat: @ "Artist:% @", artistString]; else artistLabel.text = @ "Artiste: artiste inconnu"; NSString * albumString = [currentItem valueForProperty: MPMediaItemPropertyAlbumTitle]; if (albumString) albumLabel.text = [NSString stringWithFormat: @ "Album:% @", albumString]; else albumLabel.text = @ "Album: album inconnu";
Cette méthode répondra à la MPMusicPlayerControllerNowPlayingItemDidChangeNotification:
notification. Nous créons d’abord un MPMediaItem et le définissons sur nowPlayingItem. Ensuite, nous créons un UIImage appelé artworkImage. Par défaut, nous définissons l'image sur noArtworkImage. Ensuite, nous créons un objet MPMediaItemArtwork qui stocke l'illustration de l'élément actuel. S'il y a une œuvre d'art, nous définissons la propriété artworkImage à l'illustration. Enfin, nous définissons l’image artworkImageView sur artworkImage..
Ensuite, nous créons un NSString avec stocke le titre du currentItem. Encore une fois, nous vérifions si le currentItem a un titre. S'il a un titre, nous définissons le tittleLabel sur ce titre. Si le currentItem n'a pas de titre, nous définissons le titre sur "inconnu". Nous faisons la même chose avec l'artiste et l'album.
Nous avons uniquement utilisé les propriétés des œuvres d'art, des titres, des artistes et des albums, mais il existe de nombreuses autres propriétés telles que les paroles, les partitions et le compositeur..
Ajoutez le code suivant sous le handle_NowPlayingItemChanged:
méthode:
- (void) handle_PlaybackStateChanged: (id) notification MPMusicPlaybackState playbackState = [musicPlayer playbackState]; if (playbackState == MPMusicPlaybackStatePaused) [playPauseButton setImage: [UIImage imageNamed: @ "playButton.png"] pourState: UIControlStateNormal]; else if (playbackState == MPMusicPlaybackStatePlaying) [playPauseButton setImage: [UIImage imageNamed: @ "pauseButton.png"] pourState: UIControlStateNormal]; else if (playbackState == MPMusicPlaybackStateStopped) [playPauseButton setImage: [UIImage imageNamed: @ "playButton.png"] pourState: UIControlStateNormal]; [musicPlayer stop];
Cette méthode répondra à la MPMusicPlayerControllerPlaybackStateDidChangeNotification:
notification. Ici, nous vérifions l'état du lecteur de musique et mettons à jour l'image du playPauseButton. Comme vous pouvez le constater, nous arrêtons le lecteur de musique si son état est MPMusicPlaybackStateStopped. Nous faisons cela pour nous assurer que le lecteur de musique lira sa file d'attente dès le début..
Enfin, ajoutez le code suivant sous le handle_PlaybackStateChanged:
méthode:
- (void) handle_VolumeChanged: (id) notification [volumeSlider setValue: [volume de MusicPlayer]];
Cette méthode répondra à la MPMusicPlayerControllerVolumeDidChangeNotification:
notification. Ici, nous mettons à jour la valeur des curseurs de volume en fonction du volume du lecteur de musique. Nous faisons cela parce que nous pouvons également régler le volume avec les boutons matériels.
Aller au volumeChanged:
action et modifier le code pour lire comme suit:
- (IBAction) volumeChanged: (id) expéditeur [musicPlayer setVolume: [volumeSlider value]];
Ici, nous réglons le volume du lecteur de musique sur la valeur du curseur.
Allez maintenant au jouer pause:
action et modifier le code pour lire comme suit:
- (IBAction) playPause: (id) expéditeur if ([musicPlayer playState] == MPMusicPlaybackStatePlaying) [musicPlayer pause]; else [musicPlayer play];
Nous vérifions d’abord si le lecteur de musique joue. Si cela se produit, nous allons mettre le lecteur de musique en pause. Si la musique ne joue pas, nous commençons à jouer de la musique.
Allez maintenant au précédentSong:
action et modifier le code pour lire comme suit:
- (IBAction) previousSong: (id) expéditeur [musicPlayer skipToPreviousItem];
Ici, nous laissons le lecteur de musique passer à l'élément précédent.
Enfin, allez au prochaine chanson:
action et modifier le code pour lire comme suit:
- (IBAction) nextSong: (id) expéditeur [musicPlayer skipToNextItem];
Ici, nous laissons le lecteur de musique passer à l'élément suivant.
La dernière chose à faire est de montrer le sélecteur de média et de jouer une chanson si l’utilisateur a choisi une ou plusieurs chansons. Aller au showMediaPicker:
action et modifier le code pour lire comme suit:
- (IBAction) showMediaPicker: (id) expéditeur MPMediaPickerController * mediaPicker = [[MPMediaPickerController alloc]] initWithMediaTypes: MPMediaTypeAny]; mediaPicker.delegate = self; mediaPicker.allowsPickingMultipleItems = YES; mediaPicker.prompt = @ "Sélectionnez les chansons à lire"; [self presentModalViewController: mediaPicker animated: YES]; [communiqué de mediaPicker];
Premièrement, nous créons un contrôleur de sélecteur de média et définissons son délégué sur lui-même. Nous permettons également à l'utilisateur de choisir plusieurs éléments. L'invite est le texte qui sera affiché lorsque le sélecteur de média apparaît. Je règle l'invite pour "sélectionner les chansons à jouer". Ensuite, nous montrons le sélecteur de média et le relâchons.
Ajoutez le code suivant sous le showMediaPicker
: action:
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection if (mediaItemCollection) [musicPlayer setQueueWithItemCollection: mediaItemCollection]; [musicPlayer play]; [auto-licenciementModalViewControllerAnimated: YES]; - (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker [auto-licenciementModalViewControllerAnimated: YES];
La première méthode est appelée lorsque l'utilisateur sélectionne une chanson. Dans cette méthode, nous vérifions s'il existe une collection d'éléments multimédias et s'il existe une collection d'éléments multimédias, nous définissons la file d'attente du lecteur de musique sur cette collection d'éléments multimédias et nous commençons à jouer. Nous renvoyons toujours le contrôleur de sélecteur de média. La deuxième méthode ne supprime que le contrôleur de lecteur multimédia.
Cliquez sur Construire et exécuter pour tester l'application. Vous pouvez choisir une chanson si vous appuyez sur la touche Afficher le sélecteur de média bouton. Vous voyez le titre, l'artiste, l'album et les illustrations de la chanson en cours. Si vous ajustez le volume avec les boutons matériels, vous pouvez voir le curseur changer.
Merci d'avoir lu ce tutoriel sur l'accès à la bibliothèque iPod! Si vous avez des questions ou des commentaires sur ce tutoriel, laissez-les dans la section commentaires ci-dessous.!