Audio plays in background but no sound Cordova 3+

2019-09-17 10:54发布

I'm playing a mp3 file. I used cordova 3+ I'm using

snd = new Media(source,onSuccess,onplayError,mediaStatus);
snd.setVolume(current_volume);                      
snd.play();

Everything goes well. Then I set these in info.plist

Application does not run in background - NO
Required background modes:
Item0 - Audio...............etc.

Then I tried this

if ([resourceURL isFileURL]) {
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    audioFile.player = [[ AVAudioPlayer alloc ] initWithContentsOfURL:resourceURL error:&error];
} else {
    NSData* data = [NSData dataWithContentsOfURL:resourceURL];
    audioFile.player = [[ AVAudioPlayer alloc ] initWithData:data error:&error];
}

This is found from here http://www.joeldare.com/wiki/play_an_mp3_audio_stream_in_phonegap

Though I found that sound.m file wasn't there as described. I found that file in plugin folder. And those lines were near line no. 363

Then I tried to play the audio. Next I pressed the home button. No sound came from the iphone emulator. After that I preesed the app icon again, app ui came to front and sound can be heard as if it was playing all along. Means suppose I have pressed the app icon after 1 minute from the home button press, then the song is playing from 1 minute currently. So song was actually playing but sound can't be heared during that period after pressing home key. Hope I explained it properly.

Can anyone please tell me what I'm missing? I want the sound to be heared even after home key is pressed or phone gets locked or display gets off. Please help.......

Also if I use html5 audio player, what I've to do to handle this 'home key press' problem to play the audio after minimization?

1条回答
聊天终结者
2楼-- · 2019-09-17 11:35

First,DO those things that I wrote in question. Then import AVFoundation into your AppDelegate.m #import <AVFoundation/AVFoundation.h>

Then add the following to application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
BOOL ok;
NSError *setCategoryError = nil;
ok = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];

Found from here https://github.com/devgeeks/ExampleHTML5AudioStreaming

And

TEST IN REAL DEVICE, NOT IN SIMULATOR. BACKGROUND AUDIO DOESN'T WORK WITH SIMULATOR.

查看更多
登录 后发表回答