Использование MPMediaItem с simpleaudioengine
Я делал проект в cocos-2dx, но мне нужно было создать.mm, чтобы выбрать музыку из библиотеки iOS для воспроизведения в фоновом режиме. Я начал работать, воспроизводя музыку в файле.mm, но по разным причинам он должен проигрываться в cocos-2dx с использованием SimpleAudioEngine. Я пытался преобразовать абсолютную строку URL-адреса в NSString в идентификатор const char *, чтобы переместить его обратно в файлы cocos-2dx, но он все равно не запустился.
Это то, что он дал мне для absoluteString(ipod-library://item/item.m4a? Id = 456458322781804615)
.cc-
-(void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)collection{
if(collection){
MPMusicPlayerController* appMusicPlayer = [MPMusicPlayerController applicationMusicPlayer];
[appMusicPlayer setQueueWithItemCollection:collection];
[appMusicPlayer play];
MPMusicPlayerController *iPodMusicPlayerController = [MPMusicPlayerController iPodMusicPlayer];
MPMediaItem *nowPlayingItem = [iPodMusicPlayerController nowPlayingItem];
NSURL *url = [nowPlayingItem valueForProperty:MPMediaItemPropertyAssetURL];
NSString *filePath= [url absoluteString];
NSString *filePath2 = [url path];
_songUrl = filePath;
}
-(id)returnsongUrl{
return _songUrl;
}
Второй мм
const char* MediaPicker::songUrl(){
id na1 = [[MediaPickerWrapper sharedIntance] returnsongUrl];
const char *cString = [na1 cStringUsingEncoding:NSASCIIStringEncoding];
return cString;
}
Cocos-2dx file
CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(media->songUrl());
CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(media->songUrl(),false);
1 ответ
Фильтрует до вызова AVAudioPlayer initWithContentsOfURL:
метод и должен работать с URL-адресами медиа-элементов iPod. Однако AVAudioPlayer получил поддержку только для URL-адресов iPod в iOS6. Возможно, вам потребуется установить точку останова, чтобы убедиться, что ваш URL-адрес iPod проходит через CDAudioManager's load
метод правильно.
Вам нужно будет написать свою собственную оболочку и использовать AVPlayer или AVQueuePlayer, если вы хотите ориентироваться на устройства до iOS6.