如何在另一个控制器中暂停AVAudioPlayer音乐 这是我的代码
AppDelegate.h
#import <AVFoundation/AVFoundation.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate,AVAudioPlayerDelegate>
{
AVAudioPlayer *audioPlayer1;
}
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSString *music=[[NSBundle mainBundle]pathForResource:@"music" ofType:@"mp3"];
audioPlayer1=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:music] error:NULL];
[audioPlayer1 play];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
return YES;
}
ViewController.h
#import <AVFoundation/AVFoundation.h>
@interface ViewController : UIViewController
{
AVAudioPlayer *audioPlayer1;
}
ViewController.m
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
{
if(event.type == UIEventTypeRemoteControl)
{
switch(event.subtype)
{
case UIEventSubtypeRemoteControlPause:
[audioPlayer1 pause];
break;
case UIEventSubtypeRemoteControlStop:
[audioPlayer1 pause];
break;
case UIEventSubtypeRemoteControlPlay:
[audioPlayer1 play];
break;
default:
break;
}
}
}
但它不起作用。我该如何解决或解决这个问题?
答案 0 :(得分:1)
AppDelegate中的audioPlayer1属性未指向ViewController中的audioPlayer1。你可以这样做:
的AppDelegate。的ħ强>
的ViewController。的中号强>
编辑第二个问题的答案:
如果CDVStream是另一个UIViewController而不是使用相同的方法将AppDelegate属性指向CDVStream属性。要理解的是,AppDelegate拥有audioPlayer,您可以使用ViewControllers中的属性通过使用指向它的audioPlayer属性来调节它的行为。
所以这样做:
#import "AppDelegate.h"
#import <AVFoundation/AVFoundation.h>
@interface CDVStream () <AVAudioPlayerDelegate>
@property (strong, nonatomic)AVAudioPlayer * audioPlayer;
viewDidLoad
方法中将audioPlayer属性设置为指向AppDelegate的属性。不喜欢单独的信息/代码,所以下面的屏幕包含以上所有内容: