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
440
わたしと今年のSwift.pdf
entaku
1
210
個人開発をTCAで運用していくということ.pdf
entaku
0
77
パッケージ管理でモバイル開発を安全に進める.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
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
Git: the NoSQL Database
bkeepers
PRO
432
67k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
A Modern Web Designer's Workflow
chriscoyier
698
190k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
630
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Claude Code のすすめ
schroneko
67
230k
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ͷઃఆ͋Γ͑ͳ͍ύλʔϯͰઃఆͰ͖ͯ͠ ·͏ͷͰɺࣗͷΞϓϦͰ͏ύλʔϯΛ༻ҙ͓ͯ͘͠ͱ҆શ ʹ͑·͢