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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
140
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
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
550
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
960
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Side Projects
sachag
456
43k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
250
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
710
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
GitHub's CSS Performance
jonrohan
1033
470k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Being A Developer After 40
akosma
91
590k
Marketing to machines
jonoalderson
1
5.8k
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ͷઃఆ͋Γ͑ͳ͍ύλʔϯͰઃఆͰ͖ͯ͠ ·͏ͷͰɺࣗͷΞϓϦͰ͏ύλʔϯΛ༻ҙ͓ͯ͘͠ͱ҆શ ʹ͑·͢