Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AVAudioSessionの全体像を掴む.pdf
Search
entaku
November 03, 2024
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AVAudioSessionの全体像を掴む.pdf
entaku
November 03, 2024
More Decks by entaku
See All by entaku
Swiftでもいろんな文字_の読み上げをしたい__.pdf
entaku
0
120
Core_Audio徹底解剖.pdf
entaku
4
430
わたしと今年のSwift.pdf
entaku
1
210
個人開発をTCAで運用していくということ.pdf
entaku
0
75
パッケージ管理でモバイル開発を安全に進める.pdf
entaku
0
1.3k
個人開発をTCAで運用していくということ.pdf
entaku
0
1.5k
技術コミュニティで技術書典出してみた.pdf
entaku
0
130
TCAでiOS開発を_学ぶ3つの利点.pdf
entaku
4
270
What_s_new_in_voice_processing他What_s_new_in_Audio.pdf
entaku
1
320
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
350
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Agile that works and the tools we love
rasmusluckow
331
22k
My Coaching Mixtape
mlcsv
0
150
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The browser strikes back
jonoalderson
0
1.3k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
860
Fireside Chat
paigeccino
42
4k
Optimizing for Happiness
mojombo
378
71k
Transcript
AVAudioSessionͷશମ૾Λ௫Ή
ࣗݾհ • Name: entaku • Work: Voicy • X: https://x.com/entaku_0818
• Hobby: ԻָϑΣε/ݸਓ։ൃ • Other: SwiftѪձӡӦ (https://love-swift.connpass.com/)
ԻָϑΣε
γϯϓϧԻ ݸਓ։ൃ ⭐ධՁ95݅ʂʂʂ
SwiftѪձӡӦ ʹΧϨʔ৯ΔΠϕϯτΔ͔ΒདྷͯͶ… https://love-swift.connpass.com/
AVAudioSessionͷશମ૾Λ௫Ή
https://fortee.jp/iosdc-japan-2024/proposal/8c6f01d9-8fd3-4d5e-afef-f29d561f3c39
https://speakerdeck.com/entaku/core-audioche-di-jie-pou?slide=18
AVAudioSession https://developer.apple.com/documentation/avfaudio/avaudiosession
AVAudioSession 1. ׂɿ • ΞϓϦͱOS/ϋʔυΣΞؒͷڮ͠ • ΞϓϦͷΦʔσΟΦͷҰൠతͳੑ࣭ΛOSʹ͑Δ 2. ಛɿ •
۩ମతͳಈ࡞ϋʔυΣΞͱͷৄࡉͳΓऔΓΛࢦఆ͢Δඞཁ͕ͳ͍ • ͦΕΒͷৄࡉͳཧΦʔσΟΦηογϣϯʹҕ͞ΕΔ 3. ϝϦοτɿ • OS͕ϢʔβʔͷΦʔσΟΦମݧΛ࠷దʹཧͰ͖Δ • ։ൃऀϨϕϧͷ࣮ৄࡉΛؾʹ͢Δඞཁ͕ͳ͍ •ΦʔσΟΦηογϣϯɺΞϓϦͱΦϖϨʔ ςΟϯάγεςϜͱͷؒͷհͱͯ͠ػೳ͠ ·͢ɻ •ΦʔσΟΦηογϣϯΛ༻͢Δ͜ͱͰɺΦʔ σΟΦϋʔυΣΞͱͷ۩ମతͳಈ࡞ඞཁͳ ૬ޓ࡞༻Λৄࡉʹࣔ͢͜ͱͳ͘ɺΞϓϦͷΦʔ σΟΦͷҰൠతͳੑ࣭ΛΦϖϨʔςΟϯάγε ςϜʹ͑Δ͜ͱ͕Ͱ͖·͢ɻ
AVAudioSession AVAudioSessionͷॳظͬͯͬͯ·͢ʁ
AVAudioSession try audioSession.setActive(true) ॳظͬͯͬͯ·͢ʁ
AVAudioSessionͷॳظ try audioSession.setCategory(.soloAmbient, mode: .default, options: []) try audioSession.setActive(true)
AVAudioSessionͷઃఆ try audioSession.setCategory(.soloAmbient, mode: .default, options: []) try audioSession.setActive(true) Category
Mode Options
AVAudioSession Category 1. ambient • ଞΞϓϦͷԻͱࠞ߹࠶ੜ • BGMɺޮՌԻ͚ • αΠϨϯτϞʔυͰ࠶ੜఀࢭ
• ϢʔεέʔεɿิॿతͳޮՌԻ͕ඞཁͳ࣌ 2. soloAmbient • ଞΞϓϦͷԻΛதஅ • σϑΥϧτΧςΰϦ • αΠϨϯτϞʔυͰ࠶ੜఀࢭ • Ϣʔεέʔεɿ୯ಠͷԻ࠶ੜ 3. playback • όοΫάϥϯυ࠶ੜରԠ • αΠϨϯτϞʔυͰ࠶ੜܧଓ • ଞΞϓϦͷԻΛதஅ • ϢʔεέʔεɿԻָϓϨʔϠʔɺಈըϓϨʔϠʔ 4. record • ԻʹಛԽ • ଞΞϓϦͷԻΛதஅ • ೖྗʹ࠷దԽ • ϢʔεέʔεɿϘΠεϝϞɺԻΞϓϦ 5. playAndRecord • ಉ࣌ʹԻͱ࠶ੜ͕Մೳ • ํ௨৴ʹରԠ • ϏσΦνϟοτɺVoIP͚ • Ϣʔεέʔεɿ௨ΞϓϦɺϏσΦձٞ 6. multiRoute • ෳͷೖग़ྗϧʔτΛಉ࣌༻ • ϓϩ͚ΦʔσΟΦػೳ • ߴͳ੍ޚ͕Մೳ • ϢʔεέʔεɿDJ ΞϓϦɺԻ੍ָ࡞ΞϓϦ
AVAudioSession Category 1. ambient • ଞΞϓϦͷԻͱࠞ߹࠶ੜ • BGMɺޮՌԻ͚ • αΠϨϯτϞʔυͰ࠶ੜఀࢭ
• ϢʔεέʔεɿิॿతͳޮՌԻ͕ඞཁͳ࣌ 2. soloAmbient • ଞΞϓϦͷԻΛதஅ • σϑΥϧτΧςΰϦ • αΠϨϯτϞʔυͰ࠶ੜఀࢭ • Ϣʔεέʔεɿ୯ಠͷԻ࠶ੜ 3. playback • όοΫάϥϯυ࠶ੜରԠ • αΠϨϯτϞʔυͰ࠶ੜܧଓ • ଞΞϓϦͷԻΛதஅ • ϢʔεέʔεɿԻָϓϨʔϠʔɺಈըϓϨʔ Ϡʔ 4. record • ԻʹಛԽ • ଞΞϓϦͷԻΛதஅ • ೖྗʹ࠷దԽ • ϢʔεέʔεɿϘΠεϝϞɺԻΞϓϦ 5. playAndRecord • ಉ࣌ʹԻͱ࠶ੜ͕Մೳ • ํ௨৴ʹରԠ • ϏσΦνϟοτɺVoIP͚ • Ϣʔεέʔεɿ௨ΞϓϦɺϏσΦձٞ 6. multiRoute • ෳͷೖग़ྗϧʔτΛಉ࣌༻ • ϓϩ͚ΦʔσΟΦػೳ • ߴͳ੍ޚ͕Մೳ • ϢʔεέʔεɿDJ ΞϓϦɺԻ੍ָ࡞ΞϓϦ
AVAudioSession Category 1. ambient • ଞΞϓϦͷԻͱࠞ߹࠶ੜ • BGMɺޮՌԻ͚ • αΠϨϯτϞʔυͰ࠶ੜఀࢭ
• ϢʔεέʔεɿิॿతͳޮՌԻ͕ඞཁͳ࣌ 2. soloAmbient • ଞΞϓϦͷԻΛதஅ • σϑΥϧτΧςΰϦ • αΠϨϯτϞʔυͰ࠶ੜఀࢭ • Ϣʔεέʔεɿ୯ಠͷԻ࠶ੜ 3. playback • όοΫάϥϯυ࠶ੜରԠ • αΠϨϯτϞʔυͰ࠶ੜܧଓ • ଞΞϓϦͷԻΛதஅ • ϢʔεέʔεɿԻָϓϨʔϠʔɺಈըϓϨʔ Ϡʔ 4. record • ԻʹಛԽ • ଞΞϓϦͷԻΛதஅ • ೖྗʹ࠷దԽ • ϢʔεέʔεɿϘΠεϝϞɺԻΞϓϦ 5. playAndRecord • ಉ࣌ʹԻͱ࠶ੜ͕Մೳ • ํ௨৴ʹରԠ • ϏσΦνϟοτɺVoIP͚ • Ϣʔεέʔεɿ௨ΞϓϦɺϏσΦձٞ 6. multiRoute • ෳͷೖग़ྗϧʔτΛಉ࣌༻ • ϓϩ͚ΦʔσΟΦػೳ • ߴͳ੍ޚ͕Մೳ • ϢʔεέʔεɿDJ ΞϓϦɺԻ੍ָ࡞ΞϓϦ 1. ׂɿ • ΞϓϦͱOS/ϋʔυΣΞؒͷڮ͠ • ΞϓϦͷΦʔσΟΦͷҰൠతͳੑ࣭ΛOSʹ͑Δ 2. ಛɿ • ۩ମతͳಈ࡞ϋʔυΣΞͱͷৄࡉͳΓऔΓΛࢦఆ͢Δඞཁ͕ͳ͍ • ͦΕΒͷৄࡉͳཧΦʔσΟΦηογϣϯʹҕ͞ΕΔ 3. ϝϦοτɿ • OS͕ϢʔβʔͷΦʔσΟΦମݧΛ࠷దʹཧͰ͖Δ • ։ൃऀϨϕϧͷ࣮ৄࡉΛؾʹ͢Δඞཁ͕ͳ͍ ͲΜͳΞϓϦʹ͢Δ͔ʁ ར༻༻్ͰΧςΰϦΛબͿ
AVAudioSession Mode 1. default • جຊతͳԻ࠶ੜ༻ • ಛผͳ࠷దԽͳ͠ • ҰൠతͳΞϓϦͷඪ४ઃఆ
2. moviePlayback • ಈը࠶ੜʹ࠷దԽʢ48kHzʣ • όοϑΝαΠζΛେ͖͘ઃఆ • ಈըϓϨʔϠʔΞϓϦ͚ 3. videoRecording • ߴԻ࣭Իʢ96kHzʣ • ࠷খݶͷϨΠςϯγʔ • ΧϝϥΞϓϦͷըػೳ͚ 4.voiceChat/videoChat • ΤίʔΩϟϯηϧػೳ • ϨΠςϯγʔઃఆ • ௨ΞϓϦɺϏσΦձ͚ٞ 5.gameChat • ήʔϜޮՌԻͱͷཱ྆ • ϨΠςϯγʔ • ϚϧνϓϨΠϠʔήʔϜ͚ 6.measurement • ৴߸ॲཧΛ࠷খݶʹ • ਖ਼֬ͳԻଌఆ༻ • ԻੳΞϓϦ͚ 7.spokenAudio • Ի໌ྎॏࢹ • ϙουΩϟετɺΦʔσΟΦϒοΫ͚ • Իίϯςϯπ࠶ੜ༻
AVAudioSession Mode 1. default • جຊతͳԻ࠶ੜ༻ • ಛผͳ࠷దԽͳ͠ • ҰൠతͳΞϓϦͷඪ४ઃఆ
2. moviePlayback • ಈը࠶ੜʹ࠷దԽʢ48kHzʣ • όοϑΝαΠζΛେ͖͘ઃఆ • ಈըϓϨʔϠʔΞϓϦ͚ 3. videoRecording • ߴԻ࣭Իʢ96kHzʣ • ࠷খݶͷϨΠςϯγʔ • ΧϝϥΞϓϦͷըػೳ͚ 4.voiceChat/videoChat • ΤίʔΩϟϯηϧػೳ • ϨΠςϯγʔઃఆ • ௨ΞϓϦɺϏσΦձ͚ٞ 5.gameChat • ήʔϜޮՌԻͱͷཱ྆ • ϨΠςϯγʔ • ϚϧνϓϨΠϠʔήʔϜ͚ 6.measurement • ৴߸ॲཧΛ࠷খݶʹ • ਖ਼֬ͳԻଌఆ༻ • ԻੳΞϓϦ͚ 7.spokenAudio • Ի໌ྎॏࢹ • ϙουΩϟετɺΦʔσΟΦϒοΫ͚ • Իίϯςϯπ࠶ੜ༻
AVAudioSession Mode 1. default • جຊతͳԻ࠶ੜ༻ • ಛผͳ࠷దԽͳ͠ • ҰൠతͳΞϓϦͷඪ४ઃఆ
2. moviePlayback • ಈը࠶ੜʹ࠷దԽʢ48kHzʣ • όοϑΝαΠζΛେ͖͘ઃఆ • ಈըϓϨʔϠʔΞϓϦ͚ 3. videoRecording • ߴԻ࣭Իʢ96kHzʣ • ࠷খݶͷϨΠςϯγʔ • ΧϝϥΞϓϦͷըػೳ͚ 4.voiceChat/videoChat • ΤίʔΩϟϯηϧػೳ • ϨΠςϯγʔઃఆ • ௨ΞϓϦɺϏσΦձ͚ٞ 5.gameChat • ήʔϜޮՌԻͱͷཱ྆ • ϨΠςϯγʔ • ϚϧνϓϨΠϠʔήʔϜ͚ 6.measurement • ৴߸ॲཧΛ࠷খݶʹ • ਖ਼֬ͳԻଌఆ༻ • ԻੳΞϓϦ͚ 7.spokenAudio • Ի໌ྎॏࢹ • ϙουΩϟετɺΦʔσΟΦϒοΫ͚ • Իίϯςϯπ࠶ੜ༻ 1. ׂɿ • ΞϓϦͱOS/ϋʔυΣΞؒͷڮ͠ • ΞϓϦͷΦʔσΟΦͷҰൠతͳੑ࣭ΛOSʹ͑Δ 2. ಛɿ • ۩ମతͳಈ࡞ϋʔυΣΞͱͷৄࡉͳΓऔΓΛࢦఆ͢Δඞཁ͕ͳ͍ • ͦΕΒͷৄࡉͳཧΦʔσΟΦηογϣϯʹҕ͞ΕΔ 3. ϝϦοτɿ • OS͕ϢʔβʔͷΦʔσΟΦମݧΛ࠷దʹཧͰ͖Δ • ։ൃऀϨϕϧͷ࣮ৄࡉΛؾʹ͢Δඞཁ͕ͳ͍ ͲΜͳΞϓϦʹ͢Δ͔ʁ ར༻༻్ͰϞʔυΛબͿ
AVAudio Option 1. mixWithOthers • ଞΞϓϦͱͷԻϛΩγϯάΛڐՄ • BGM࠶ੜதʹޮՌԻΛՃ͢Δ߹ͳͲʹ༻ • ambient,
playback, playAndRecordΧςΰϦͰ༻Մ ೳ 2. duckOthers • ࣗΞϓϦͷԻ࠶ੜ࣌ʹଞΞϓϦͷԻྔΛࣗಈతʹԼ ͛Δ • φϏήʔγϣϯΞϓϦͷҊԻͳͲͰ༻ • playback, playAndRecordΧςΰϦͰ༻Մೳ 3. interruptSpokenAudioAndMixWithOthers • ԻίϯςϯπʢϙουΩϟετͳͲʣΛதஅΛ͢Δ • .mixWithOthersͷ֦ுΦϓγϣϯ • φϏήʔγϣϯΞϓϦͳͲͰ༻ 4. allowBluetooth • BluetoothϔουηοτʢHFP/HSPʣͱͷଓΛڐՄ • ௨ϘΠενϟοτ༻ • playAndRecordΧςΰϦͰओʹ༻ 5. allowBluetoothA2DP • BluetoothεςϨΦΦʔσΟΦʢA2DPʣͷ༻ΛڐՄ • ߴ࣭ͳԻָ࠶ੜ༻ • playback, playAndRecordΧςΰϦͰ༻Մೳ 6. allowAirPlay • AirPlayσόΠεͷग़ྗΛڐՄ • ϫΠϠϨε࠶ੜ༻ • playback, playAndRecordΧςΰϦͰ༻Մೳ 7. defaultToSpeaker • ଂεϐʔΧʔΛ༏ઌతʹ༻ • ϏσΦ௨ϘΠενϟοτͰ༻ • playAndRecordΧςΰϦͰओʹ༻
AVAudio Option 1. mixWithOthers • ଞΞϓϦͱͷԻϛΩγϯάΛڐՄ • BGM࠶ੜதʹޮՌԻΛՃ͢Δ߹ͳͲʹ༻ • ambient,
playback, playAndRecordΧςΰϦͰ༻Մ ೳ 2. duckOthers • ࣗΞϓϦͷԻ࠶ੜ࣌ʹଞΞϓϦͷԻྔΛࣗಈతʹԼ ͛Δ • φϏήʔγϣϯΞϓϦͷҊԻͳͲͰ༻ • playback, playAndRecordΧςΰϦͰ༻Մೳ 3. interruptSpokenAudioAndMixWithOthers • ԻίϯςϯπʢϙουΩϟετͳͲʣΛதஅΛ͢Δ • .mixWithOthersͷ֦ுΦϓγϣϯ • φϏήʔγϣϯΞϓϦͳͲͰ༻ 4. allowBluetooth • BluetoothϔουηοτʢHFP/HSPʣͱͷଓΛڐՄ • ௨ϘΠενϟοτ༻ • playAndRecordΧςΰϦͰओʹ༻ 5. allowBluetoothA2DP • BluetoothεςϨΦΦʔσΟΦʢA2DPʣͷ༻ΛڐՄ • ߴ࣭ͳԻָ࠶ੜ༻ • playback, playAndRecordΧςΰϦͰ༻Մೳ 6. allowAirPlay • AirPlayσόΠεͷग़ྗΛڐՄ • ϫΠϠϨε࠶ੜ༻ • playback, playAndRecordΧςΰϦͰ༻Մೳ 7. defaultToSpeaker • ଂεϐʔΧʔΛ༏ઌతʹ༻ • ϏσΦ௨ϘΠενϟοτͰ༻ • playAndRecordΧςΰϦͰओʹ༻ 1. ׂɿ • ΞϓϦͱOS/ϋʔυΣΞؒͷڮ͠ • ΞϓϦͷΦʔσΟΦͷҰൠతͳੑ࣭ΛOSʹ͑Δ 2. ಛɿ • ۩ମతͳಈ࡞ϋʔυΣΞͱͷৄࡉͳΓऔΓΛࢦఆ͢Δඞཁ͕ͳ͍ • ͦΕΒͷৄࡉͳཧΦʔσΟΦηογϣϯʹҕ͞ΕΔ 3. ϝϦοτɿ • OS͕ϢʔβʔͷΦʔσΟΦମݧΛ࠷దʹཧͰ͖Δ • ։ൃऀϨϕϧͷ࣮ৄࡉΛؾʹ͢Δඞཁ͕ͳ͍ ΧςΰϦʹΑͬͯͲͷΑ͏ͳΦϓ γϣϯ͕͑Δ͔Θ͔Δ
AVAudioSessionͷઃఆ try audioSession.setCategory(.soloAmbient, mode: .default, options: []) try audioSession.setActive(true) Category
Mode Options
AVAudioSessionͷઃఆ try audioSession.setCategory(.soloAmbient, mode: .default, options: []) try audioSession.setActive(true) Category
Mode Options 1. ׂɿ • ΞϓϦͱOS/ϋʔυΣΞؒͷڮ͠ • ΞϓϦͷΦʔσΟΦͷҰൠతͳੑ࣭ΛOSʹ͑Δ 2. ಛɿ • ۩ମతͳಈ࡞ϋʔυΣΞͱͷৄࡉͳΓऔΓΛࢦఆ͢Δඞཁ͕ͳ͍ • ͦΕΒͷৄࡉͳཧΦʔσΟΦηογϣϯʹҕ͞ΕΔ 3. ϝϦοτɿ • OS͕ϢʔβʔͷΦʔσΟΦମݧΛ࠷దʹཧͰ͖Δ • ։ൃऀϨϕϧͷ࣮ৄࡉΛؾʹ͢Δඞཁ͕ͳ͍ ͲΜͳΞϓϦʹ͢Δ͔ʁ ར༻༻్͕͔Εɺ AVAudioSessionͷઃఆ͕Θ͔Δ
ͰΈͳ͞Μ͜ΕͲ͏ͳΔͰ͠ΐ͏ʁ try audioSession.setCategory(.playback, mode: .videoRecording) try audioSession.setActive(true)
A.ઃఆͰ͖·͢ try audioSession.setCategory(.playback, mode: .videoRecording) try audioSession.setActive(true)
ͰΈͳ͞Μ͜ΕͲ͏ͳΔͰ͠ΐ͏ʁ try audioSession.setCategory(.playback, mode: .videoRecording) try audioSession.setActive(true) 1. ׂɿ •
ΞϓϦͱOS/ϋʔυΣΞؒͷڮ͠ • ΞϓϦͷΦʔσΟΦͷҰൠతͳੑ࣭ΛOSʹ͑Δ 2. ಛɿ • ۩ମతͳಈ࡞ϋʔυΣΞͱͷৄࡉͳΓऔΓΛࢦఆ͢Δඞཁ͕ͳ͍ • ͦΕΒͷৄࡉͳཧΦʔσΟΦηογϣϯʹҕ͞ΕΔ 3. ϝϦοτɿ • OS͕ϢʔβʔͷΦʔσΟΦମݧΛ࠷దʹཧͰ͖Δ • ։ൃऀϨϕϧͷ࣮ৄࡉΛؾʹ͢Δඞཁ͕ͳ͍ ͋Γ͑ͳ͍Έ߹ΘͤΛઃఆͰ͖ͪΌ͍·͢ɻ ΞϓϦར༻࣌ʹෆ߹͕͋Δ͜ͱ͕͋Γ·͢ɻ
ࣗͷΞϓϦͰͲΜͳ༻్Ͱ͍͍͔ͨ ֬ೝͯ͠దͳઃఆΛ͏ͱ҆શͰ͢Ͷ αϯϓϧΞϓϦ
https://developer.apple.com/documentation/avfaudio/avaudiosession/4485079-preferredmicrophoneinjectionmode?changes=latest_major ͓·͚
·ͱΊ •AudioSessionͰΞϓϦͷΦʔσΟΦͷҰൠతͳੑ࣭ΛOSʹ ͑Δ͜ͱͰɺ։ൃऀΦʔσΟΦϋʔυΣΞͱͷ۩ମΛઃఆ ͢ΔΛ͜ͱͳ͘ԻΛར༻Ͱ͖Δ •ࣗͷΞϓϦ͕ͲΜͳ༻్ͰԻΛར༻͢Δͷ͔ཧղͯ͠ઃ ఆ͠·͠ΐ͏ •AudioSessionͷઃఆ͋Γ͑ͳ͍ύλʔϯͰઃఆͰ͖ͯ͠ ·͏ͷͰɺࣗͷΞϓϦͰ͏ύλʔϯΛ༻ҙ͓ͯ͘͠ͱ҆શ ʹ͑·͢