Ir para conteúdo
  • Cadastre-se

Continuar a tocar áudio quando o iPhone for bloqueado


Posts Recomendados

Olá a todos!

Estou precisando fazer meu app continuar a tocar o áudio que ele reproduz mesmo após o usuário bloquear a tela ou que o iPhone se auto-bloqueie. Já tentei coisas como:


UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
[/CODE]

ou:

[CODE]
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
[/CODE]

Mas nada disso funciona. Não encontrei nenhum outro método para fazer isso na internet. Nem mesmo o Stack Overflow foi capaz de me ajudar. Espero que aqui alguém possa.

Obrigado,

Gabriel Vincent

Link para o comentário
Compartilhar em outros sites

  • Respostas 15
  • Criado
  • Última resposta

Top Postadores Neste Tópico

  • 4 semanas depois...

RESSUCITANDO TÓPICO

Usei como base este topico para meu app, e a principio funcionou o audio em background, mas estou tendo 2 problemas,

o audio fica em background mas caso o usuario receba uma ligação ou fassa uma, o audio para naturalmente, quando o usuario termina a chamada e volta para o app ele termina (congela) de forma inesperada, outro problema é que quando o audio começa a tocar (usuario da um play), deveria aparecer na statusBar o icone do play, como acontece no reprodutor nativo do iPhone e todos aplicativos de audio que trabalhem em MultThread.

São 2 problemas que nao sao percebidos logo de cara, pois eu mesmo demorei para ver este problema, mas o codigo possui erro e não tenho como postar algo assim. Tenho que corrigir este problema, alguem conhece algum tutorial ou até mesmo video aulas ou algo do genero ?\

Tenho dificuldades pois nunca fiz nenhum curso de IOS, aprendi tudo na net, acredito que tenha algo para resolver meu problema, mas ja procurei bastante e nao achei nada que me ajudasse.

a respeito do meu codigo fiz exatamente o que diz no link do stackoverflow.

Link para o comentário
Compartilhar em outros sites

RESSUCITANDO TÓPICO Usei como base este topico para meu app, e a principio funcionou o audio em background, mas estou tendo 2 problemas, o audio fica em background mas caso o usuario receba uma ligação ou fassa uma, o audio para naturalmente, quando o usuario termina a chamada e volta para o app ele termina (congela) de forma inesperada, outro problema é que quando o audio começa a tocar (usuario da um play), deveria aparecer na statusBar o icone do play, como acontece no reprodutor nativo do iPhone e todos aplicativos de audio que trabalhem em MultThread. São 2 problemas que nao sao percebidos logo de cara, pois eu mesmo demorei para ver este problema, mas o codigo possui erro e não tenho como postar algo assim. Tenho que corrigir este problema, alguem conhece algum tutorial ou até mesmo video aulas ou algo do genero ?\ Tenho dificuldades pois nunca fiz nenhum curso de IOS, aprendi tudo na net, acredito que tenha algo para resolver meu problema, mas ja procurei bastante e nao achei nada que me ajudasse. a respeito do meu codigo fiz exatamente o que diz no link do stackoverflow.

Também fiz o que o Stackoverflow mandou e no meu app aparece o play na status bar. Você definiu uma audio session?

Link para o comentário
Compartilhar em outros sites

fiz o seguinte:

adcionei AudioToolbox , CoreAudio , MediaPlayer e AVFoundation e importei para o viewController

entao coloquei este codigo quando o usuario der play


UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
[/CODE]

em info.plist

nao achei UIBackgroundModes

nao sei se a linha que coloquei equivale, criei uma linha, "Required Backgorund Modes" com o arrey contedo 1 item

neste item defini App plays Audio

Editado por sanchessd
Link para o comentário
Compartilhar em outros sites

fiz o seguinte: adcionei AudioToolbox , CoreAudio , MediaPlayer e AVFoundation e importei para o viewController entao coloquei este codigo quando o usuario der play
 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory); AudioSessionSetActive(true); [/CODE]

em info.plist nao achei UIBackgroundModes nao sei se a linha que coloquei equivale, criei uma linha, "Required Backgorund Modes" com o arrey contedo 1 item neste item defini App plays Audio

Isso tá certo. Na classe em que você toca o áudio, você setou como delegate de AudioSession e AudioPlayer?

[CODE]
<AVAudioPlayerDelegate, AVAudioSessionDelegate>
[/CODE]

Link para o comentário
Compartilhar em outros sites

pois é, não tinha declarado AVAudioSessionDelegate na classe que o audio vai rodar porem quando atribui ela como delegate recebi o seguinte erro:

canot audio find protocol declaration for 'AVAudioSessionDelegate'

OBS: todos frameworks estao importados na classe.

Acho que isso acontece quando você tenta rodar no simulator. Tenta rodar no aparelho pra ver se vai.

Link para o comentário
Compartilhar em outros sites

Sim , ja testei direto no iPhone, não funciona!

audio fica em backgound mas com os erros citados no meu primeiro post, quanto ao icone é o de menos, o problema maior é que quando usuario recebe uma ligaçao quando o audio está tocando o audio para para receber a ligaçao e o app entra em modo de espera, mas quando volta ao app ele congela e se fecha.

e nao consegui declarar AVAudioSessionDelegate somente consegui somente AVAudioPlayerDelegate

refiz tudo para me certificar, talvez voce tenha algum codigo de exemplo onde é usado este metodo ?

Link para o comentário
Compartilhar em outros sites

Sim , ja testei direto no iPhone, não funciona!

audio fica em backgound mas com os erros citados no meu primeiro post, quanto ao icone é o de menos, o problema maior é que quando usuario recebe uma ligaçao quando o audio está tocando o audio para para receber a ligaçao e o app entra em modo de espera, mas quando volta ao app ele congela e se fecha.

e nao consegui declarar AVAudioSessionDelegate somente consegui somente AVAudioPlayerDelegate

refiz tudo para me certificar, talvez voce tenha algum codigo de exemplo onde é usado este metodo ?

Tenho um projeto gigante onde uso isso. Vou te passar. Me manda seu email? Só não sei se você vai conseguir executar o código porque o web service que eu usei pra inserir informações ao app sofreu uma alteração recentemente e ele tá quebrando quando inicia.

Link para o comentário
Compartilhar em outros sites

Dei uma olhada no progeto que me mandou, apenas uma observação que acho ser a causa do problema, no meu ViewController onde o audio será executado tenho em .h


@class AudioStreamer;
@interface iPhoneStreamingPlayerViewController : UIViewController <AVAudioPlayerDelegate>
{
.....
}
[/CODE]

note que é uma classe UIViewCotroller, por isso nao consigo delcarar como delegate "AVAudioSessionDelegate"

no seu progeto a classe é "NSObject"

tentei trocar de UIViewController para NSObject mas o app apresenta erros e não executa mais o audio, tem algo que eu possa fazer para transformar em NSObject ?

Link para o comentário
Compartilhar em outros sites

Dei uma olhada no progeto que me mandou, apenas uma observação que acho ser a causa do problema, no meu ViewController onde o audio será executado tenho em .h


@class AudioStreamer;
@interface iPhoneStreamingPlayerViewController : UIViewController <AVAudioPlayerDelegate>
{
.....
}
[/CODE]

note que é uma classe UIViewCotroller, por isso nao consigo delcarar como delegate "AVAudioSessionDelegate"

no seu progeto a classe é "NSObject"

tentei trocar de UIViewController para NSObject mas o app apresenta erros e não executa mais o audio, tem algo que eu possa fazer para transformar em NSObject ?

Ah, sim, é verdade. É porque você tá tocando um áudio em um ViewController. Eu toco o áudio em um NSObject, porque aí, mesmo que o usuário saia do ViewController onde ele deu play, o áudio continua rolando. Cria um NSObject e coloca todos os comandos de play, pause, tudo relacionado ao AudioPlayer nele. O ViewController só vai enviar a mensagem pro NSObject dizendo o que fazer.

Link para o comentário
Compartilhar em outros sites

Montei um progeto para exemplo e mandei no seu email, ja tenho uma classe NSObject para rodar o audio, fiz todos os passos mas nao resolveu, o problema perciste, marquei um Warning 'SOM INICIADO' onde o audio começa ser reproduzido,

se voce passa pro iPhone vai ver que o audio reproduz em background, mas se receber ou fizer uma ligaçao sem pausar o app, quando voltar para ele ele ira congelar, este é meu problema .

Editado por sanchessd
Link para o comentário
Compartilhar em outros sites

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

Visitante
Responder este tópico…

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Limpar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.



  • Estatísticas do Fórum

    • Total de Tópicos
      53,3k
    • Total de Posts
      443k
×
×
  • Criar Novo...