Звук с iPhone: слабая громкость (но подходит для наушников)

#iphone #core-audio #volume #avaudiosession #headphones

#iPhone #ядро-аудио #громкость #avaudiosession #наушники

Вопрос:

Я получаю неожиданное поведение звука:

проблема — громкость устройства iPhone очень слабая, но если я подключу наушники, громкость будет идеальной

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

Не имеет значения, начинаю ли я с подключенными наушниками или нет. Кажется, это не связанная проблема

РЕДАКТИРОВАТЬ: такое поведение характерно для моего приложения. Я попробовал образец Apple AutoTouch, и он работает правильно как с наушниками, так и без них.

Комментарии:

1. Где вопрос, связанный с программированием?

2. Если вы даже задаете этот вопрос, это означает, что это полностью выходит за рамки вашей компетенции, и вам действительно не стоит вмешиваться. Это вы проголосовали за закрытие этого вопроса?

3. @Клаус, это вопрос программирования, смотрите Ответ Ohmu.

Ответ №1:

Вау!

 // kAudioSessionOverrideAudioRoute_Speaker would only work once.  
// kAudioSessionProperty_OverrideCategoryDefaultToSpeaker works
//     until the session changes.
SET_PROPERTY( kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,        UInt32,   (UInt32) YES );
  

в принципе, в iPhone есть 2 внутренних динамика, «приемник», который прижимается к вашему уху, когда вы принимаете вызов, и внешний динамик гораздо большего размера (эти 2 решетки по обе стороны от разъема питания, левый — внешний динамик, правый — микрофон) — сбивает с толку: однажды я отнес свой iPhone в ремонтную мастерскую в Таиланде, потому что мой «правый динамик» не работал, и они даже предложили мне его починить ?! к счастью, мне не понравилась цена … )

в любом случае, по абсолютно никакой уважительной причине, которую я могу придумать,

 SET_PROPERTY( kAudioSessionProperty_AudioCategory,  UInt32,  
                 kAudioSessionCategory_PlayAndRecord );
  

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

Комментарии:

1. «по абсолютно непонятной причине, которую я могу придумать» — Это потому, что если вы действительно воспроизводите и записываете звук одновременно, то микрофон в нижней части телефона будет улавливать гораздо больше нежелательного звука из динамика рядом с ним, чем из того, что находится у вашего уха.