skipsBackwards
음악 대기열에있는 메서드를 만들 수 있도록 AVPlayer
하위 클래스로 작업 중입니다. 나는 사용자 iPod에서 음악을 사용하는 완전히 기능적인 음악 플레이어를 만들고 싶습니다. 즉, AVAudioPlayer
이 나오고 MPMusicPlayerController
이 나왔습니다. 또한 Core Audio는 나를 무서워하므로 지금 당장은 그 일을 분명히하기를 희망합니다.어떻게 AVPlayer를 서브 클래 싱합니까?
나는 카테고리를 사용하여 클래스를 확장하는 것으로 생각했지만 클래스를 추가하려면 MPMediaItemCollection
을 저장할 클래스가 있어야합니다. 그래서 카테고리를 추가하는 것이 가장 중요합니다.
은 여기 내 예외
입니다! I 설치 SWPlayer
여기
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
#import "SWPlayer.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic,retain)SWPlayer *bookPlayer;
@end
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Setup AudioSession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
// Allow the audio to mix with other apps (necessary for background sound)
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
//Grab some Songs to Test with
MPMediaQuery *query = [MPMediaQuery songsQuery];
NSArray *collection = [query items];
//Setup bookPLayer to Test
MPMediaItem *item = [collection objectAtIndex:5];
NSLog(@"%@",[item valueForProperty:MPMediaItemPropertyTitle]);
NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL];
self.bookPlayer = [[SWPlayer alloc]initWithURL:url];
[bookPlayer play];
[bookPlayer skipForwards];
return YES;
}
로 서브 클래 싱 된 AVPlayer
내 아주이다 [1]
가 여기 내 AppDelegate에 코드입니다 [여기 이미지 설명을 입력합니다] 기본 서브 클래스 ...
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
@interface SWPlayer : AVPlayer
@property(nonatomic,retain)MPMediaItemCollection *mediaItemCollection;
-(void)skipForwards;
-(void)skipBackwards;
@end
#import "SWPlayer.h"
@implementation SWPlayer
@synthesize mediaItemCollection;
-(void)skipForwards{
NSLog(@"SWPlayer called skipForward method");
}
-(void)skipBackwards{
NSLog(@"SWPlayer called skipBackward method");
}
@end
AVPlayer
의 하위 클래스를 사용하여 음악이 재생됩니다. 문제는 skipForward
메서드를 SWPlayer
이라고 부르면 인식 할 수없는 선택기 오류가 발생하고 응용 프로그램이 충돌한다는 것입니다. 여기서 내가 무엇을 놓치고 있니?
문제가 해결되었습니다. 감사합니다 피터. – Aaronium112
님, 다른 사람들이 쉽게 검색 할 수 있도록 질문을 다시 포맷 해 주셔서 감사합니다. –
재 포맷팅은 괜찮지 만 피터가 'playerWithURL'을 참조한다는 사실을 알게되는데 어느 정도 시간이 걸립니다. 원래 게시물에서이 부분을 제거하면 문제가 발생한 곳을보기가 매우 어렵습니다. – amergin