IOS7在另一个控制器中暂停AVAudioPlayer音乐

时间:2014-06-24 14:08:41

标签: objective-c ios7

如何在另一个控制器中暂停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;
        }
    }
}

但它不起作用。我该如何解决或解决这个问题?

1 个答案:

答案 0 :(得分:1)

AppDelegate中的audioPlayer1属性未指向ViewController中的audioPlayer1。你可以这样做:

的AppDelegate。的ħ

appdelegate

的ViewController。的中号

viewcontroller

编辑第二个问题的答案:

如果CDVStream是另一个UIViewController而不是使用相同的方法将AppDelegate属性指向CDVStream属性。要理解的是,AppDelegate拥有audioPlayer,您可以使用ViewControllers中的属性通过使用指向它的audioPlayer属性来调节它的行为。

所以这样做:

    CDVStream.M 中导入AppDelegate #import "AppDelegate.h"
  • 还导入AVFoundation框架#import <AVFoundation/AVFoundation.h>
  • 将AVAudioPlayerDelegate添加到接口@interface CDVStream () <AVAudioPlayerDelegate>
  • 制作AVAudioPlayer属性@property (strong, nonatomic)AVAudioPlayer * audioPlayer;
  • 在您的viewDidLoad方法中将audioPlayer属性设置为指向AppDelegate的属性。

不喜欢单独的信息/代码,所以下面的屏幕包含以上所有内容:

CDVStream audioPlayer