2015-10-16 2 views
1

В моем приложении я должен записывать звук и воспроизводить этот звук и добавить близость, когда игра этого аудио возле вашего уха, чтобы для этого я должен сделать этот код при нажатии кнопки воспроизведения нажмите:как отключить близость, когда AVPlayer прекратить играть

- (IBAction)btnPlayPauseTapped:(id)sender { 
    UIDevice *device = [UIDevice currentDevice]; 
    [device setProximityMonitoringEnabled: YES]; 
    if (device.proximityMonitoringEnabled == YES) { 
     [[NSNotificationCenter defaultCenter] removeObserver:APP_DELEGATE name:@"UIDeviceProximityStateDidChangeNotification" object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:APP_DELEGATE selector:@selector(proximityChanged:) name:@"UIDeviceProximityStateDidChangeNotification" object:device]; 
//other code 
    } 

Уведомление называют этот метод, когда близость позволит:

- (void) proximityChanged:(NSNotification *)notification { 
    NSLog(@"proximity changed called"); 
    UIDevice *device = [notification object]; 
    AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
    if(device.proximityState == 1){ 
     [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 
     [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil]; 
     [audioSession setActive:YES error:nil]; 
    } 
    else{ 
     [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil]; 
     [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; 
     [audioSession setActive:YES error:nil]; 

    } 
} 

когда игрок остановки воспроизведения или паузы я добавить:

UIDevice *device = [UIDevice currentDevice]; 
[device setProximityMonitoringEnabled: NO]; 

, но когда я снова начну воспроизводить аудио и поставлю устройство около уха, это время вызвало метод уведомления (proximityChanged), и в то время состояние близости также получило 1 и категорию аудиосеанса, также установленную как playandrecord, но она не воспроизводила этот звук в динамике уха , он воспроизводит звук в основном громкоговорителе.

, пожалуйста, помогите мне в этом.

Благодарим вас в Advance.

ответ

0

Я решил решить проблему через 2 дня, когда игрок останавливает игрока, когда я отключу близость, но я изменил категорию аудиосвязи в методе proximitychange.

- (void) proximityChanged:(NSNotification *)notification { 
    UIDevice *device = [notification object]; 
    AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
    BOOL success; 
    success = [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 
    if(device.proximityState == 1){ 
     NSLog(@"bool %s", success ? "true" : "false"); 
     [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil]; 
     [audioSession setActive:YES error:nil]; 
    } 
    else{ 
     NSLog(@"bool %s", success ? "true" : "false"); 
     [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; 
     [audioSession setActive:YES error:nil]; 

    }