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
220
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-de-tv-wo-ugokasu.pdf
entaku
0
52
Swiftでもいろんな文字_の読み上げをしたい__.pdf
entaku
0
150
Core_Audio徹底解剖.pdf
entaku
4
480
わたしと今年のSwift.pdf
entaku
1
230
個人開発をTCAで運用していくということ.pdf
entaku
0
88
パッケージ管理でモバイル開発を安全に進める.pdf
entaku
0
1.4k
個人開発をTCAで運用していくということ.pdf
entaku
0
1.6k
技術コミュニティで技術書典出してみた.pdf
entaku
0
140
TCAでiOS開発を_学ぶ3つの利点.pdf
entaku
4
290
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
300
Ethics towards AI in product and experience design
skipperchong
2
460
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
510
Making Projects Easy
brettharned
120
6.8k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
320
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.7k
How GitHub (no longer) Works
holman
316
150k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
830
KATA
mclloyd
PRO
35
16k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
510
GitHub's CSS Performance
jonrohan
1033
470k
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ͷઃఆ͋Γ͑ͳ͍ύλʔϯͰઃఆͰ͖ͯ͠ ·͏ͷͰɺࣗͷΞϓϦͰ͏ύλʔϯΛ༻ҙ͓ͯ͘͠ͱ҆શ ʹ͑·͢