Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AVAudioSessionの全体像を掴む.pdf
Search
entaku
November 03, 2024
200
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
140
Core_Audio徹底解剖.pdf
entaku
4
450
わたしと今年のSwift.pdf
entaku
1
210
個人開発をTCAで運用していくということ.pdf
entaku
0
83
パッケージ管理でモバイル開発を安全に進める.pdf
entaku
0
1.3k
個人開発をTCAで運用していくということ.pdf
entaku
0
1.5k
技術コミュニティで技術書典出してみた.pdf
entaku
0
130
TCAでiOS開発を_学ぶ3つの利点.pdf
entaku
4
280
What_s_new_in_voice_processing他What_s_new_in_Audio.pdf
entaku
1
330
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
550
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
Bash Introduction
62gerente
615
220k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Chasing Engaging Ingredients in Design
codingconduct
0
320
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Exploring anti-patterns in Rails
aemeredith
4
510
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
510
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
760
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ͷઃఆ͋Γ͑ͳ͍ύλʔϯͰઃఆͰ͖ͯ͠ ·͏ͷͰɺࣗͷΞϓϦͰ͏ύλʔϯΛ༻ҙ͓ͯ͘͠ͱ҆શ ʹ͑·͢