ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
AirPodsによるアプリケーションのオーディオ体験の向上
AirPodsを使用して、みなさんのアプリでどのように革新的なオーディオ体験を作成できるかをご確認ください。AirPodsの自動スイッチングを組み込む方法、AVAudioApplicationを使用してミュートコントロールをサポートする方法、アプリやゲームでイマーシブなサウンドスケープを作成するために空間オーディオを活用する方法について確認していきます。
関連する章
- 4:20 - AirPods Automatic Switching for macOS
- 6:41 - Press to Mute and Unmute
- 12:02 - Spatial Audio with AirPods
リソース
関連ビデオ
WWDC23
WWDC21
-
ダウンロード
♪ ♪
Suraj: こんにちは このセッションでは AirPodsを使って アプリのオーディオ体験を 向上させる方法を探っていきます iOS 17とmacOS 14で発表した AirPodsの機能の 一部をご紹介します ここAppleの Headphones and Accessory Software Engineering teamの Surajです それでは始めましょう
最高のパーソナルオーディオ体験ができる AirPodsは 世界中の人々に 24時間中 愛用されています 毎日 何百万人もの人々が AirPodsを使って 音楽を聴いたり 映画を見たり 家族や友人と FaceTimeをしたり 仕事の電話をかけたり 仕事をこなしながら利用しています そしてAirPodsを Appleの エコシステム全体で使用して Apple WatchからMacに至るまで iOS 17とmacOS 14では AirPodsの毎日の使用を 全てのプラットフォームで より簡単で便利にする 優れた機能を導入しています これらの機能が AirPodsの 最も日常的な使用例を どう変えていくかを 見ていきましょう AirPodsで音楽を楽しんでいると 仕事のミーティングに 参加するよう通知が届きます 通話に参加するためにMacのロックを 解除すると AirPods接続中の バナーが表示されます AirPodsがMacに接続された バナーが表示されます
次に会議に参加すると 音声はMacから AirPodsを通して 再生されます iPhoneで聴いていた音楽は 一時停止します 仕事の電話中あるいは オフィスの誰かが話をしに来たり リモートワークの場合自宅の ドアベルを鳴らして配達に来たり
AirPodsのステムを押して 通話をミュートが可能となり 通知が送られます フレンドリーなマイクステータスの バナーとチャイムで通知します
AirPodsのステムをもう一度押すと ミュートが解除されます 会議を続けることができます 当然バナーが表示されアンミュート時に チャイムが鳴ります
ようやく仕事の打ち合わせを終え くつろぐ時間が来ました iPhoneを手に取り お気に入りの Apple Musicのプレイリストを 再生するとオーディオがAirPodsに シームレスに切り替わります 一日中途切れることなく 音楽が楽しめます
そこでアプリケーションで素晴らしい AirPods体験をして AirPodsでユーザが みなさんのアプリを 簡単に使えるように したいと思いませんか
このセッションではこれらの機能を 活用するために アプリを最適化する方法について 説明します まずはAirPodsから macOS 14の自動切り替えと アプリが従うべき最適な 慣行について説明します
次にiOS 17とmacOS 14でミュートと ミュート解除をサポートする方法 最後に空間オーディオと 様々なAppleプラットフォームでの サポートについてお伝えします
AirPodsから始めましょう
macOS 14はAirPodsの 自動切り替えに 対応しています 自動切り替えアルゴリズムは 「Now Playing」登録や 入力オーディオアクティビティなどの 指標を使って判断します 幸いなことに すべてのApp Storeアプリも App Sandboxを使用する App Store以外のアプリも あるいは サンドボックスを使用しないアプリでも 何も適用することなく 対応させることができます それらも特に開発に 改良を加えることなく 完全にこの機能に 取り込まれます AirPodsを最適に使うための 実践方法を紹介します 最適なAirPodsを体験をしたい人には 最高です macOSのNow Playingに登録して 自動ルーティングアルゴリズムが 長編オーディオが再生されていることが 認識できるようになりました これにより正しいルーティングを 決定できるようになりました
みなさんのアプリがメディアや ストリーミングアプリの場合 オーディオの優先順位の選択に Now Playingに登録することを お勧めします
会議やゲームアプリであれば 登録はお勧めしません
また通知を再生したりアプリ固有の チャイムの 機能の Audio Services APIを使用することも お勧めします これはメディアコンテンツと通知を区別し 予期せぬ動作を避けるのに役立ちます 会議アプリの場合は会議または 音声セッションの開始時のみ 入力マイクを使用し ライブ会議または 音声セッションの間だけ 開いておくことをお勧めします メディアアプリの場合 オーディオ再生には ユーザーが選択した デフォルトのルーティングを使用を お勧めします また無音部分を再生することは 避けてください もし無音で再生する必要があれば 2秒以下にすることをお勧めします それではAirPodsでミュートと ミュート解除について説明します iOS 17 と macOS 14 プレスによるミュートとミュート解除で 通話中のAirPods体験が さらに便利になりました 通話中にAirPodsのステムを押すだけで アプリケーションのマイクを ミュートまたはミュート解除 できるようになりました iOS 17からすべてのCallKitアプリは 以下のように 何も追加する必要もなく プレスによるミュートとミュート解除の サポートが加わります CallKitを使用していない通信アプリの場合 新しいAPIが導入されました 詳細は後ほど触れます いずれの場合もiOS 17は ミュートジェスチャに反応し アップリンクオーディオをミュートします 再生中... そしてアプリケーションに ミュートされたことを通知します その後誰かが再び同じ操作をすると iOS 17はアップリンク音声の ミュートを解除します 再生中... そしてアプリケーションに通知します この機能には 大きな利点があります iOS17に追加するための 簡単な方法をお見せします
今回ご紹介するのは AVAudioApplicationという AVAudioSessionシリーズの 兄弟版です AVAudioApplicationは アプリケーション全体の オーディオ動作を 設定する方法です
いかに簡単に取り組むことができるか 見ていきましょう AVAudioApplication を使って ミュートとミュート解除 まずAVAudioをインポートします AVAudioApplication の 共有インスタンスを取得します 次に ミュート変更の登録をする 必要があります これでアプリケーションを押して ミュートとミュート解除を行います
ミュートジェスチャによって ミュート状態が変更された場合に 通知されます そこから AVAudioApplicationの muteStateKeyを解析します 新しい状態を決定するための ユーザー情報です
この通知を受け取った後 内部ステートとUIを 更新することができます 誰かがアプリケーション内で ミュート操作をしたとき さらにAVAudioApplicationは 更新が必要です
ご存知のようにセッターも ゲッターも存在します
iOS 17でプレスによる ミュートとミュート解除での 簡単操作を
Macに移行しましょう 重要なのはmacOS 14 ミュートとミュート解除操作が 少し異なります iOSと同様にミュート状態が 変更されるとアプリに通知されます しかしmacOSでは ジェスチャが実行されたときに アップリンクのオーディオをミュート するのはアプリケーションの役目です
オプトインするためには これから説明する 追加APIが必要です
最後にミュートされた通話を検出する アプリケーションに注意してください 「音声処理APIの新機能」 セッションおよび サポートする新しいAPIの詳細を ご確認ください
Macで何をする必要があるのか を見てみましょう 新しいAPIに対するサポートについて macOS 14では ミュートジェスチャ アップリンク音声をミュートにするのは アプリケーションの役割です AVAudioApplicationの共有 インスタンスにミュート状態 変更ハンドラを 設定する必要があります このハンドラは 誰かがミュートジェスチャを したときにこのハンドラが呼び出されます ここではアップリンクオーディオを ミュートして内部状態を更新する またミュート操作が 現在の アプリケーションの使用状況に 適切でない場合は 拒否することもできます ミュート状態が変更されると Input Mute State Change通知を 受け取り続けることになるので このハンドラをUIのアップデートに 使用しないことを推奨します さらにCoreAudioフレームワークに 新しいプロパティが加わって 素早く入力オーディオを ミュートすることができます
このプロパティを有効にすると 通常通りIOを実行しながら 入力された音声が無音になります
最後にAirPodsを使った 空間オーディオについてです AirPodsの空間オーディオは 世界中の人々が音楽を 聴く方法を変えました Apple Music加入者の80%以上が 空間オーディオで聴いているのです そしてiOS 16の発表で頭や耳の大きさや 形に基づいて パーソナライズされた 空間オーディオを搭載し さらに進化を 遂げました このパーソナライゼーションの推進 に向けた動きは 好意的に受け止められています macOS 14 iOS 17 tvOS 17対応に 空間オーディオの継続サポートを すべて3つのプラットフォームで 続けていきます
macOSではAVPlayerの空間オーディオと AVサンプルバッファ そして オーディオレンダラAPIを サポートしています iOSとtvOSがオーディオキューAPIと 同様にAURemoteIOのための 空間オーディオをサポートします
AudioQueueと AURemoteIOに APIインターフェイスはありません 代わりにNow Playing登録のアプリが 自動的に有効になります
コントロールセンターで 機能を設定します
まとめるとAirPodsの 自動切り替え機能によって 人々やアプリが簡単に macOS用AirPods自動切り替えを 活用できるかが わかってもらったと思います 実際ほとんどの場合 何もしなくても アップデートに対応できます AirPodsで一貫した自動切り替え 体験をするために アプリができることについて 確認しました
AVAudioApplication APIの紹介と 押すことでミュートと ミュート解除をサポートする方法と
AirPods空間オーディオをグローバルな カスタマーベースに提供する方法について 説明しました 関連セッション もご確認いただけます 関連セッションのアプリに空間オーディオの サポート追加の方法も紹介します そしてNow Playingの 登録についても このセッションを楽しんで いただけたなら幸いです 私たちはお客様とこれらの機能を共有 できることをとても嬉しく思います みなさんのアプリケーションですべてうまく 作動することを見るのが 待ち遠しいです ご視聴ありがとうございました
-
-
8:25 - Press to Mute and Unmute API
// Adopting AVAudioApplication into your App import AVFAudio // Get the started instance let instance = AVAudioApplication.shared // Register for mute gesture notifications on Notification Center AVAudioApplication.inputMuteStateChangeNotification // Key for mute state AVAudioApplication.muteStateKey // Updating AVAudioApplication’s mute state instance.setInputMuted(...) // Reading AVAudioApplication’s mute state instance.isInputMuted
-
10:52 - Configure the Input Mute State Change handler (macOS only)
// Configure the Input Mute State Change handler (macOS only) instance.setInputMuteStateChangeHandler { isMuted in //... return didSucceed } // Optional: let CoreAudio mute your input for you (macOS only) // Define the Core Audio property var inputeMutePropertyAddress = AudioObjectPropertyAddress( mSelector: kAudioHardwarePropertyProcessInputMute, mScope: kAudioObjectPropertyScopeInput, mElement:kAudioObjectPropertyElementMain) // Enable this property when you want to mute your input UInt32 isMuted = 1; // 1 = muted, 0 = unmuted AudioObjectSetPropertyData(kAudioObjectSystemObject, &inputeMutePropertyAddress, 0, nil, UInt32(MemoryLayout.size(ofValue: isMuted), &isMuted)
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。