gpt4 book ai didi

iphone - 在后台播放音频流

转载 作者:行者123 更新时间:2023-12-03 18:56:31 25 4
gpt4 key购买 nike

我正在使用 xcode 4.2 并构建一个 iPhone 应用程序,并且有一个 View ,在打开时播放音频流。
我试图实现的目标是让应用程序继续播放,即使它进入后台。
我已经尝试过在 stackoverflow 或其他地方找到的任何可能的解决方案(并且有很多可用的解决方案),但无法使其工作。当应用程序进入后台时,音频停止,当我再次打开应用程序时,音频继续。

在我的 Info.plist 中设置了 2 行:
所需的背景模式 -> 应用程序播放音频 &
应用程序不在后台运行 -> 否

我错过了什么?还需要什么才能继续在后台播放音频?
预先感谢您。

编辑:我看到很多关于这个问题的答案,建议使用 AVAudio 框架。 MPMoviePlayerController 是否有可能无法在后台播放流?我应该更改为 AVAudio 吗?

编辑2:
好吧,看来这对我来说太复杂了,无法实现。我给出了确切的代码,希望这会有所帮助。

RadioStreamer.h

#import <UIKit/UIKit.h>
#import "MediaPlayer/MediaPlayer.h"
@interface RadioStreamer : UIViewController {
MPMoviePlayerController *player;
IBOutlet UIButton *playButton;
IBOutlet UIButton *pauseButton;
}
@property (nonatomic, retain) MPMoviePlayerController *player;
@property (nonatomic, retain) IBOutlet UIButton *playButton;
@property (nonatomic, retain) IBOutlet UIButton *pauseButton;

- (IBAction)playButtonPressed:(id)button;
- (IBAction)pauseButtonPressed:(id)button;
- (void) playAudio;
- (void) pauseAudio;
@end

RadioStreamer.m

#import "RadioStreamer.h"
#import "tabbartestAppDelegate.h"

@implementation RadioStreamer
@synthesize player;
@synthesize playButton;
@synthesize pauseButton;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
return self;
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title=@"";
// Do any additional setup after loading the view from its nib.

if (!self.player) {
player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://s6.onweb.gr:8006/listen.pls"]];
player.movieSourceType = MPMovieSourceTypeStreaming;
player.view.frame = CGRectMake(55, 180, 200, 30);
player.backgroundView.backgroundColor = [UIColor clearColor];
player.view.backgroundColor = [UIColor clearColor];
[self.view addSubview:player.view];
[player play];
}
}

- (void) playAudio {
if (player.playbackState != MPMoviePlaybackStatePlaying){
[player play];
}
}

- (void) pauseAudio {
if (player.playbackState == MPMoviePlaybackStatePlaying) {
[player pause];
}
}

- (IBAction)playButtonPressed:(id)button {
[self playAudio];
}

- (IBAction)pauseButtonPressed:(id)button {
[self pauseAudio];
}

- (void)viewDidUnload
{
[super viewDidUnload];
}


- (void)dealloc {
[self.player release];
[self.playButton release];
[self.pauseButton release];
self.player = nil;
self.playButton = nil;
self.pauseButton = nil;
}

@end

最佳答案

检查您的 Audio Session 设置,因为这可能需要额外注意。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback 
error:nil];
[[AVAudioSession sharedInstance] setActive:YES
error:nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

关于iphone - 在后台播放音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9875997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com