Подтвердить что ты не робот

Воспроизведение звука на iPhone даже в бесшумном режиме

Я хочу создать приложение, которое создает звук, музыку или звук системы, когда iPhone находится в тихом режиме. Можно ли воспроизводить любой тип звука независимо от того, звучит ли музыка или система при бесшумном режиме?

4b9b3361

Ответ 1

Это не желательно, но кто я такой, чтобы говорить, что ты не можешь этого сделать. У вас может быть веская причина для воспроизведения звука.

Если вы используете <AVFoundation/AVFoundation.h> в начало вашего файла и

[[AVAudioSession sharedInstance]
                setCategory: AVAudioSessionCategoryPlayback
                      error: nil];

должен сделать свое дело. Обратите внимание, что если вы воспроизводите музыку или звуки, воспроизведение iPod будет приостановлено.

Как только это будет сделано, возможно, где-то в инициализации одного из ваших классов, который воспроизводит звуки, вы можете создать такие звуки:

// probably an instance variable: AVAudioPlayer *player;
NSString *path = [[NSBundle mainBundle] pathForResource...];
NSURL *url = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url];

Когда это будет сделано, вы можете играть с ним в любое время:

[player play]; // Play the sound
[player pause]; // Pause the sound halfway through playing
player.currentTime += 10 // skip forward 10 seconds
player.duration // Get the duration

И другие приятные вещи. Найдите ссылку на класс AVAudioPlayer.

Ответ 2

Да, вы можете воспроизводить звук, когда телефон настроен на вибрацию. Просто используйте класс AVAudioPlayer.

По умолчанию воспроизведение аудио сессии звук не будет уважать настройку от отключения звука на iPhone. В другими словами, если вы позвоните играть звук и тихий (аппаратный) переключатель на iPhone настроен на молчание, вы все равно слышите звук.

Это то, что вы хотите. Итак, теперь вы знаете, что воспроизведение аудио сессии, когда ваш телефон находится в бесшумном режиме, по-прежнему будет воспроизводить звук, который вам просто нужно знать, как создать аудио-сессию для воспроизведения звука, например: взятый с этого сайта: http://iosdevelopertips.com/audio/playing-short-sounds-audio-session-services.html

SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle]
   pathForResource:@"RapidFire" ofType:@"wav"];    

AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
AudioServicesPlaySystemSound (soundID);

Для этого вам нужно будет импортировать файл заголовка, а также добавить в проект проект AudioToolbox.framework.

И что это.

Итак, из этого ответа вы теперь знаете, что вы можете воспроизводить звук, пока телефон вибрирует. Вам не нужен дополнительный или специальный код, который позволит вам выполнять эту функцию, поскольку она уже делает это по умолчанию.

Рк

Ответ 3

А для Свифта 2, 3, 4,2

    do {
      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
      try AVAudioSession.sharedInstance().setActive(true)
    } catch {
      print(error)
    }

Ответ 4

Работает на iOS 6 и выше

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

Ответ 5

Просто поместите это в свой viewDidLoad:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
                         sizeof(sessionCategory), &sessionCategory);

Ответ 6

Для воспроизведения звука в бесшумном режиме и даже когда он идет на задний план, попробуйте следующее:

Поместите этот код в приложение: didFinishLaunchingWithOpitons:

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

и этот код в applicationDidEnterBackground:

[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

Также установите фоновый режим воспроизведения аудио/воздушного воспроизведения и включите заголовок AVFoundation.

Ответ 7

для Objective C вы можете воспроизводить системный звук с помощью следующего кода:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
*The system path could be modified.*
NSString *path = @"/System/Library/Audio/UISounds/begin_record.caf";
NSURL *url = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[player play];

Ответ 8

Swift - вызовите эту функцию перед воспроизведением аудио/видео, чтобы принудительно воспроизвести, когда телефон выключен. Это также заставляет замолчать другое аудио, которое воспроизводится в данный момент.

Вы можете изменить .duckOthers на .mixWithOthers если не хотите .mixWithOthers другие аудио.

func setupAudio() {
  let audioSession = AVAudioSession.sharedInstance()
  _ = try? audioSession.setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)
  _ = try? audioSession.setActive(true)
}