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

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

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

Если вы используете Audio Sessions, в начале вашего файла и

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

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

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

 // 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 

И другие приятные вещи. Посмотрите ссылку на class AVAudioPlayer .

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

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

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

 SystemSoundID soundID; NSString *path = [[NSBundle mainBundle] pathForResource:@"RapidFire" ofType:@"wav"]; AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID); AudioServicesPlaySystemSound (soundID); 

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

Вот и все.

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

Pk

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

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

И для Swift 2 и Swift 3

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

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

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

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

Поместите этот код в приложение: 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.

для 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]; 
  • Рисование поэтапно в UIView (iPhone)
  • Как Apple знает, что вы используете частный API?
  • Как отсортировать NSMutableArray с помощью sortedArrayUsingDescriptors?
  • Данные перезагрузки UITableView
  • Как я могу перебирать все подпункты UIView, а также их подзоны и их подпрограммы
  • Сортировка NSArray пользовательских объектов по их свойствам NSDate
  • Создайте эскиз или изображение AVPlayer в текущее время
  • Звук не работает в iPhone Simulator?
  • Есть ли способ указать позицию / индекс аргумента в NSString stringWithFormat?
  • Как -performSelector: withObject: afterDelay: работать?
  • Получите данные Exif от UIImage - UIImagePickerController
  • Давайте будем гением компьютера.