iOS SDK Zugriff auf die Musikbibliothek

Mit Zugriff auf die Musikbibliothek können Ihre Anwendungen die Songs, Hörbücher und Podcastsammlungen Ihrer Benutzer enthalten. Mit dieser Funktion können Sie das Gameplay verbessern, indem Sie Benutzern die Möglichkeit geben, ihren eigenen Soundtrack zu spielen, benutzerdefinierte Media Player-Anwendungen zu erstellen und mehr!

HINWEIS: Zum Testen dieser Funktion benötigen Sie ein physisches iOS-Gerät und müssen Mitglied des kostenpflichtigen iOS-Entwicklerprogramms sein.

Schritt 1: Projekt erstellen

Öffnen Sie Xcode und wählen Sie "Neues Xcode-Projekt erstellen". Wählen Sie eine Ansichtsbasierte Anwendung. und klicken Sie auf "Weiter". Geben Sie einen Namen für Ihr Projekt ein (ich habe mein? Musik? Genannt), geben Sie Ihre Firmenkennung ein, stellen Sie sicher, dass Sie das iPhone für die Gerätefamilie ausgewählt haben, und klicken Sie dann auf? Weiter ?. Wählen Sie einen Ort zum Speichern Ihres Projekts und klicken Sie auf Erstellen?.

Schritt 2: Importieren Sie das MediaPlayer-Framework

Wählen Sie im Navigatorbereich von Xcode 4 den Projektnamen (in unserem Fall? Musik?). Als nächstes wählen Sie das aktuelle Ziel (hier wieder "Musik") und wählen Sie dann die Option "Erstellungsphasen". Tab. Erweitern Sie den Link? Binär mit Bibliotheken? Option und klicken Sie dann auf die Taste? +? Schaltfläche, um ein neues Framework hinzuzufügen. Geben Sie "MediaPlayer" in das Suchfeld ein und wählen Sie die Option MediaPlayer.framework Option, die in der Liste angezeigt wird. Klicken Sie auf Hinzufügen. um dieses Framework in die Verknüpfungsphase Ihres Projekts aufzunehmen.

Nachdem Sie nun das Media Player-Framework in Ihr Projekt aufgenommen haben, müssen Sie dieses Framework in den View-Controller importieren, der den iPod verwendet
Bibliothek. Gehe zum MusicViewController.h Datei und fügen Sie die folgende Codezeile unterhalb des UIKit ein #einführen Linie:

 #einführen  #einführen 

Schritt 3: Importieren der Projektbilder

Laden Sie den Quellcode herunter und ziehen Sie die Bilder-Map in Ihr Projekt. Stellen Sie sicher, dass das Kontrollkästchen durch Element in den Ordner der Zielgruppe kopieren (falls erforderlich) wird geprüft. Diese Karte enthält die Bilder, die wir in dieser App verwenden werden.

Schritt 4: Entwerfen der Schnittstelle

In der? Musik? Ordner im? Project Navigator? Klicken Sie auf MusicViewController.xib.

Ziehen Sie eine UIImageView aus der Bibliothek in die Ansicht. Vergewissern Sie sich, dass das Dienstprogrammfenster angezeigt wird, und wechseln Sie zum Fenster Größeninspektor. Stellen Sie die Breite und Höhe auf 200, die x-Koordinate auf 60 und die y-Koordinate auf 20 ein. In dieser Bildansicht werden die Songs angezeigt.

Ziehen Sie nun einen UISlider in die Ansicht und ordnen Sie ihn mit den blauen Hilfslinien am unteren Rand der Ansicht an. Machen Sie es auch etwas breiter, sodass die gesamte Breite der Ansicht zwischen den beiden blauen Hilfslinien verwendet wird. Wir werden diesen Schieberegler verwenden, um die Lautstärke einzustellen.

Ziehen Sie nun 4 UIButtons in die Ansicht. Ziehen Sie den ersten unter die Bildansicht und setzen Sie den Titel auf "Medienauswahl anzeigen". Dieses wird genau das tun, was der Text sagt. Die anderen drei Tasten sind die Steuertasten. Wählen Sie die anderen drei Tasten und gehen Sie zu Attribute-Inspektor. Stellen Sie den Typ auf Brauch und stellen Sie das Bild der Tasten jeweils auf PreviousButton.png, PlayButton.png und NextButton.png. Ordnen Sie die Knöpfe wie folgt an.

Ziehen Sie zum Schluss drei UILabels in die Ansicht. Löschen Sie den Text aller Beschriftungen und ordnen Sie sie wie unten an (ich habe etwas Text hinzugefügt, damit Sie sehen können, wo sich die Beschriftungen befinden. Sie müssen diesen Text nicht hinzufügen). Diese Labels zeigen einige Informationen zum aktuell abgespielten Song an.

Schritt 5: Herstellen der IB-Verbindungen

Nachdem wir nun die Schnittstelle entworfen haben, können wir die Verbindungen herstellen. Klicken Sie auf die mittlere Schaltfläche des Editors, um das anzuzeigen Schnittassistenz .

Klicken Sie auf die Bildansicht und ziehen Sie die STRG-Taste auf die Benutzeroberfläche. Ein Popup wird angezeigt. Geben Sie den Text? ArtworkImageView? und klicken Sie dann auf? connect.?

Klicken Sie nun auf den Schieberegler und verbinden Sie ihn auf dieselbe Weise, nennen Sie ihn jedoch "volumeSlider". STRG-Ziehen erneut vom Schieberegler auf die Benutzeroberfläche, diesmal jedoch unter den geschweiften Klammern. Setzen Sie die Verbindung auf Aktion statt auf Outlet. Geben Sie "volumeChanged" ein. Stellen Sie sicher, dass das Ereignis Wert geändert ist, und klicken Sie auf "Verbinden"?.

Diese 4 Tasten erfordern auch Aktionen. Verbinden Sie sie auf dieselbe Weise wie die Schieberegleraktion. Benennen Sie die Aktionen wie folgt:

  • Schaltfläche "Medienauswahl" anzeigen: showMediaPicker
  • Vorheriger Button: vorherigerSong
  • Wiedergabetaste: playPause
  • Nächste Schaltfläche: nextSong

Die Wiedergabetaste benötigt auch eine Steckdose. Schließen Sie es genauso an, wie wir die Steckdose für die Bildansicht angeschlossen haben, aber nennen Sie es playPauseButton?.

Zum Schluss müssen wir die Outlets für die Etiketten erstellen. Verbinden Sie sie erneut so, wie wir die Bildansicht angeschlossen haben. Nennen Sie das erste Label "titleLabel", das zweite Label "artistLabel". und das letzte Label? albumLabel?.

Der Code für die MusicViewController.h-Datei sollte nun wie folgt lauten:

 #einführen  #einführen  @Interface MusicTestViewController: UIViewController IBOutlet UIImageView * artworkImageView; IBOutlet UISlider * volumeSlider; IBOutlet UIButton * playPauseButton; IBOutlet UILabel * titleLabel; IBOutlet UILabel * artistLabel; IBOutlet UILabel * albumLabel;  - (IBAction) volumeChanged: (id) Sender; - (IBAction) showMediaPicker: (ID) Absender; - (IBAction) previousSong: (ID) Absender; - (IBAction) playPause: (id) Sender; - (IBAction) nextSong: (id) Absender; @Ende

Erstellen und führen Sie den Code aus, um sicherzustellen, dass die App ordnungsgemäß ausgeführt wird. Die App zeigt nur die gerade erstellte Schnittstelle, aber die Schaltflächen funktionieren nicht.

Schritt 6: Erstellen eines Music Player-Controllers

Gehe zum MusicViewController.h Datei und ändern Sie den Code wie folgt zu lesen:

 #einführen  #einführen  @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: (id) Sender; - (IBAction) showMediaPicker: (ID) Absender; - (IBAction) previousSong: (ID) Absender; - (IBAction) playPause: (id) Sender; - (IBAction) nextSong: (id) Absender; - (nichtig) registerMediaPlayerNotifications; @Ende

Wie Sie sehen, haben wir das hinzugefügt MPMediaPickerControllerDelegate und erstellte einen MPMusicPickerController. Wir haben auch die Methode hinzugefügt registerMediaPlayerNotifications zum Registrieren von Benachrichtigungen vom Media Player.

Gehen Sie jetzt zum MusicViewController.m Datei und synthetisieren Sie den musicPlayer durch Hinzufügen des folgenden Codes unter @Implementierung :

 @synthesize musicPlayer;

Wir müssen es auch im veröffentlichen Dealloc und viewDidUnload Methode mit dem folgenden Code:

 [musicPlayer release];

Gehen Sie jetzt zum viewDidLoad Methode. Kommentieren Sie es und fügen Sie den folgenden Code unter ein [super viewDidLoad];

 musicPlayer = [MPMusicPlayerController iPodMusicPlayer];

Hier stellen wir unseren Music Player-Controller auf einen iPodMusicPlayer ein. Dies bedeutet, dass unsere App den iPod-Status freigibt, und wenn wir unsere App beenden, wird die Musik weiter abgespielt. Der applicationMusicPlayer ist der andere Typ. Dieser Musik-Player spielt die Musik lokal in Ihrer App ab. Ihr Musik-Player kann ein anderes Element haben, das gerade abgespielt wird, als die integrierte iPod-App. Wenn Sie die App beenden, wird die Musikwiedergabe gestoppt.

Schritt 7: Aktualisieren der Benutzeroberfläche beim Laden

Fügen Sie dem folgenden Code hinzu viewDidLoad Methode:

 [volumeSlider setValue: [musicPlayer volume]]; if ([musicPlayer PlaybackState] == MPMusicPlaybackStatePlaying) [playPauseButton setImage: [UIImage imageNamed: @ "pauseButton.png"] forState: UIControlStateNormal];  else [playPauseButton setImage: [UIImage imageNamed: @ "playButton.png"] forState: UIControlStateNormal]; 

Zuerst setzen wir den aktuellen Wert des Schiebereglers auf die aktuelle Lautstärke des Musik-Players. Die Lautstärke ist ein Wert zwischen 0 und 1. Wenn die Lautstärke 0 ist, ist kein Ton zu hören, und wenn die Lautstärke 1 ist, ist die Lautstärke maximal. Danach prüfen wir, ob der Musik-Player etwas abspielt. Wenn es abgespielt wird, setzen wir das Bild des playPauseButton auf das Bild pauseButton, und wenn es nicht abgespielt wird, setzen wir das Bild des playPauseButton auf das playButton-Bild.

Schritt 8: Registrieren Sie die MediaPlayer-Benachrichtigungen

Fügen Sie dem folgenden Code hinzu viewDidLoad Methode:

 [self registerMediaPlayerNotifications];

Diese Leitung ruft das an registerMediaPlayerNotifications Methode, bei der wir drei Beobachter für die Media Player-Benachrichtigungen registrieren. Fügen Sie den folgenden Code unter dem hinzu viewDidLoad Methode:

 - (void) registerMediaPlayerNotifications NSNotificationCenter * notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver: Selbstauswahl: @selector (handle_NowPlayingItemChanged :) Name: MPMusicPlayerControllerNowPlayingItemDidChangeNotification-Objekt: musicPlayer]; [notificationCenter addObserver: Selbstauswähler: @selector (handle_PlaybackStateChanged :) Name: MPMusicPlayerControllerPlaybackStateDidChangeNotification Objekt: musicPlayer]; [notificationCenter addObserver: Selbstselektor: @selector (handle_VolumeChanged :) Name: MPMusicPlayerControllerVolumeDidChangeNotification-Objekt: musicPlayer]; [musicPlayer beginGeneratingPlaybackNotifications]; 

Hier registrieren wir drei Beobachter für die Benachrichtigungen des Media Players. Der erste ist für den MPMusicPlayerControllerNowPlayingItemDidChangeNotification. Wir werden dies verwenden, um die aktuellen Medienelementinformationen zu aktualisieren. Der zweite ist für die MPMusicPlayerControllerPlaybackStateDidChangeNotification, Wir verwenden dieses auch, um unsere Benutzeroberfläche zu aktualisieren. Der dritte und letzte ist für den MPMusicPlayerControllerVolumeDidChangeNotification, Wir werden diesen verwenden, um den aktuellen Wert unseres Schiebereglers zu aktualisieren.

Wann immer Sie einen Beobachter registrieren, sollten Sie ihn auch unbedingt aus der Liste entfernen viewDidUnload und das Dealloc Methoden. Fügen Sie den beiden folgenden Methoden den folgenden Code hinzu:

 [[NSNotificationCenter defaultCenter] removeObserver: Eigenname: MPMusicPlayerControllerNowPlayingItemDidChangeNotification Objekt: musicPlayer]; [[NSNotificationCenter defaultCenter] removeObserver: Eigenname: MPMusicPlayerControllerPlaybackStateDidChangeNotification Objekt: musicPlayer]; [[NSNotificationCenter defaultCenter] removeObserver: Eigenname: MPMusicPlayerControllerVolumeDidChangeNotification-Objekt: musicPlayer]; [musicPlayer endGeneratingPlaybackNotifications];

Fügen Sie den folgenden Code unter dem hinzu registerMediaPlayerNotifications Methode:

 - (void) handle_NowPlayingItemChanged: (id) notification MPMediaItem * currentItem = [musicPlayer nowPlayingItem]; UIImage * artworkImage = [UIImage imageNamed: @ "noArtworkImage.png"]; MPMediaItemArtwork * artwork = [currentItem valueForProperty: MPMediaItemPropertyArtwork]; if (artwork) artworkImage = [artwork imageWithSize: CGSizeMake (200, 200)];  [artworkImageView setImage: artworkImage]; NSString * titleString = [currentItem valueForProperty: MPMediaItemPropertyTitle]; if (titleString) titleLabel.text = [NSString stringWithFormat: @ "Titel:% @", titleString];  else titleLabel.text = @ "Titel: Unbekannter Titel";  NSString * artistString = [currentItem valueForProperty: MPMediaItemPropertyArtist]; if (artistString) artistLabel.text = [NSString stringWithFormat: @ "Artist:% @", artistString];  else artistLabel.text = @ "Künstler: unbekannter Künstler";  NSString * albumString = [currentItem valueForProperty: MPMediaItemPropertyAlbumTitle]; if (albumString) albumLabel.text = [NSString stringWithFormat: @ "Album:% @", albumString];  else albumLabel.text = @ "Album: Unbekanntes Album"; 

Diese Methode reagiert auf die MPMusicPlayerControllerNowPlayingItemDidChangeNotification: Benachrichtigung. Zuerst erstellen wir ein MPMediaItem und setzen es auf das nowPlayingItem. Dann erstellen wir einen UIImage namens artworkImage. Standardmäßig setzen wir das Bild auf noArtworkImage. Dann erstellen wir ein MPMediaItemArtwork-Objekt, in dem die Grafik des aktuellen Elements gespeichert wird. Wenn Grafiken vorhanden sind, setzen wir das artworkImage auf die Grafik. Zum Schluss setzen wir das artworkImageView-Bild auf das artworkImage.

Dann erstellen wir einen NSString, in dem der Titel des currentItem gespeichert wird. Wir prüfen erneut, ob das currentItem einen Titel hat. Wenn es einen Titel hat, setzen wir das TittleLabel auf diesen Titel. Wenn das currentItem keinen Titel hat, setzen wir den Titel auf "unbekannt". Mit dem Künstler und dem Album machen wir dasselbe.

Wir haben hier nur die Artwork-, Titel-, Interpreten- und Album-Eigenschaften verwendet, aber es gibt noch viele weitere Eigenschaften wie Texte, Bewertung und Komponist.

Fügen Sie den folgenden Code unter dem hinzu handle_NowPlayingItemChanged: Methode:

 - (void) handle_PlaybackStateChanged: (id) Benachrichtigung MPMusicPlaybackState PlaybackState = [MusicPlayer PlaybackState]; if (PlaybackState == MPMusicPlaybackStatePaused) [playPauseButton setImage: [UIImage imageNamed: @ "playButton.png"] forState: UIControlStateNormal];  else if (PlaybackState == MPMusicPlaybackStatePlaying) [playPauseButton setImage: [UIImage imageNamed: @ "pauseButton.png"] forState: UIControlStateNormal];  else if (PlaybackState == MPMusicPlaybackStateStopped) [playPauseButton setImage: [UIImage imageNamed: @ "playButton.png"] forState: UIControlStateNormal]; [musicPlayer stop]; 

Diese Methode reagiert auf die MPMusicPlayerControllerPlaybackStateDidChangeNotification: Benachrichtigung. Hier überprüfen wir den Status des Musik-Players und aktualisieren das Bild des playPauseButton. Wie Sie sehen, stoppen wir den Musik-Player, wenn er sich im Zustand befindet MPMusicPlaybackStateStopped. Wir tun dies, um sicherzustellen, dass der Musik-Player von Anfang an seine Warteschlange spielt.

Fügen Sie schließlich den folgenden Code unter der handle_PlaybackStateChanged: Methode:

 - (void) handle_VolumeChanged: (id) Benachrichtigung [volumeSlider setValue: [musicPlayer volume]]; 

Diese Methode reagiert auf die MPMusicPlayerControllerVolumeDidChangeNotification: Benachrichtigung. Hier aktualisieren wir den Wert der Lautstärkeregler auf die Lautstärke des Musik-Players. Wir machen das, weil wir die Lautstärke auch mit den Hardwaretasten einstellen können.

Schritt 9: Damit die Steuerelemente funktionieren

Gehe zum volumeChanged: Aktion und ändern Sie den Code wie folgt:

 - (IBAction) volumeChanged: (id) Sender [musicPlayer setVolume: [volumeSlider-Wert]]; 

Hier stellen wir die Lautstärke des Musik-Players auf den Wert des Schiebereglers ein.

Gehen Sie jetzt zum Spielpause: Aktion und ändern Sie den Code wie folgt:

 - (IBAction) playPause: (id) sender if ([musicPlayer PlaybackState] == MPMusicPlaybackStatePlaying) [musicPlayer pause];  else [musicPlayer abspielen]; 

Zuerst prüfen wir, ob der Musikplayer abgespielt wird. Wenn es abgespielt wird, pausieren wir den Musik-Player. Wenn die Musik nicht abgespielt wird, beginnen wir die Musik zu spielen.

Gehen Sie jetzt zum vorherigerSong: Aktion und ändern Sie den Code wie folgt:

 - (IBAction) previousSong: (id) Sender [musicPlayer skipToPreviousItem]; 

Hier lassen wir den Musik-Player zum vorherigen Element springen.

Zum Schluss geh zum nächstes Lied: Aktion und ändern Sie den Code wie folgt:

 - (IBAction) nextSong: (id) Sender [musicPlayer skipToNextItem]; 

Hier lassen wir den Musik-Player zum nächsten Element springen.

Schritt 10: Anzeigen der Medienauswahl

Das letzte, was wir tun müssen, ist die Medienauswahl zu zeigen und einen Song abzuspielen, wenn der Benutzer einen oder mehrere Songs ausgewählt hat. Gehe zum showMediaPicker: Aktion und ändern Sie den Code wie folgt:

 - (IBAction) showMediaPicker: (id) sender MPMediaPickerController * mediaPicker = [[Zuweisung von MPMediaPickerController] initWithMediaTypes: MPMediaTypeAny]; mediaPicker.delegate = self; mediaPicker.allowsPickingMultipleItems = YES; mediaPicker.prompt = @ "Titel zum Abspielen auswählen"; [self presentModalViewController: mediaPicker animiert: JA]; [mediaPicker-Version]; 

Zuerst erstellen wir einen Medienauswahl-Controller und setzen seinen Delegierten auf "selbst". Wir erlauben dem Benutzer auch, mehrere Artikel auszuwählen. Die Aufforderung ist der Text, der angezeigt wird, wenn die Medienauswahl angezeigt wird. Ich habe die Eingabeaufforderung auf "Auswählen von Songs zum Abspielen" gesetzt. Dann zeigen wir den Media Picker und geben ihn frei.

Fügen Sie den folgenden Code unter dem hinzu showMediaPicker: Aktion:

 - (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection if (mediaItemCollection) [musicPlayer setQueueWithItemCollection]; [musicPlayer play];  [self dismissModalViewControllerAnimated: YES];  - (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker [self dismissModalViewControllerAnimated: YES]; 

Die erste Methode wird aufgerufen, wenn der Benutzer ein Lied auswählt. Bei dieser Methode überprüfen wir, ob eine Mediensammlung vorhanden ist. Wenn es eine Mediensammlung gibt, setzen wir die Warteschlange des Musik-Players auf diese Mediensammlung und beginnen mit der Wiedergabe. Wir entlassen immer den Media Picker Controller. Bei der zweiten Methode wird nur der Media Player-Controller verworfen.
Klicken Sie auf Erstellen und Ausführen, um die Anwendung zu testen. Sie können ein Lied auswählen, wenn Sie auf drücken Medienauswahl anzeigen Taste. Sie sehen Titel, Interpret, Album und Artwork des aktuellen Songs. Wenn Sie die Lautstärke mit den Hardwaretasten einstellen, können Sie den Schieberegler ändern.

Einpacken

Vielen Dank für das Lesen dieses Tutorials zum Zugriff auf die iPod-Bibliothek! Wenn Sie Fragen oder Kommentare zu diesem Tutorial haben, lassen Sie sie in den Kommentaren weiter unten!