iOS 開発者ガイド for SDK

オーディオ管理

このセクションでは、 HERE SDK からオーディオを制御および管理する方法について説明します。 このセクションの情報を使用して、次の操作を行うことができます
  • オーディオクリップを再生するタイミングを制御します
  • NMAAudioManager オーディオキューを使用して、アプリケーションのオーディオをに渡します
  • 自動 NMAAudioManager 再生を無効にします
  • オーディオ再生イベントを受信します

このセクションには、 HERE SDK デバイスでの Bluetooth オーディオの使用方法など、オーディオルーティングについての情報も含まれています。

NMAAudioManager とオーディオキュー

NMAAudioManager SDK for iOS がアプリケーション AVAudioSession を変更し てオーディオを再生するために使用する中央クラスです。 は、 NMANavigationManager 音声指示などの音声フィードバックを再生するために使用するインターフェイスです。 NMAAudioManager ハードウェアキーが HERE SDK ボリュームを直接制御するかどうかを変更する場合にも使用できます。また、このキーを使用して、ユーザーのデバイスボリュームに対する係数としてボリュームを設定することもできます。

NMAAudioManager は、オーディオ出力オブジェクトのキューが含まれています。 playOutput:NMAAudioFileOutputこのキューに追加するに NMATTSAudioOutputNMAAudioOutput は、、、または独自の実装を使用して、を呼び出します。 NMAAudioManagerclearQueueskipCurrentOutput、などのメソッドを使用し stopOutputAndClearQueue て、このキューのオーディオ出力を管理することもできます。

オーディオ出力タイプ

デフォルト では、 HERE SDKNMAAudioOutputNMAAudioFileOutput はとの 2 つのサブタイプがあります NMATTSAudioOutputNMAAudioOutputplayOutput: これらの ( または独自のカスタムサブタイプ ) は、でメソッドを呼び出して、再生またはエンキューでき NMAAudioManagerます。

NMAAudioFileOutput iOSAVAudioPlayer と互換性のあるオーディオファイルのコレクションを表します。 NMAAudioFileOutput audioOutputWithFiles: 互換性のあるファイルの配列を使用してを呼び出して、インスタンスを取得できます。 NMAAudioFileOutput インスタンス内のすべてのファイルは、によって再生される場合、単一の出力セグメントと見なさ NMAAudioManagerれます。

NMATTSAudioOutput 音声合成の音声出力セグメントを表します。 音声で読み上げるテキスト文字列と AVSpeechSynthesisVoice が含まれています。 NMATTSAudioOutput audioOutputWithText: このクラスのインスタンスを取得するには、音声サンプルに変換するテキストを使用してを呼び出します。 デフォルトでは、 Text-to-Speech (音声合成)エンジンは、現在のデバイスロケールに基づいて音声ダイアレクトを選択します。

オーディオの再生を遅らせています

audioRouteLatencyCompensation のプロパティを使用し NMAAudioManager て、オーディオの再生前に無音状態を導入できます。 これは、 Bluetooth 接続またはオーディオダッキングを補正する必要がある場合、およびクリッピングガイダンスオーディオを防止する場合に役立ちます。

自動再生を無効にしています

アプリケーションをより細かく制御する場合 AVAudioSessionmanagesAudioSession は、プロパティを使用して自動再生を管理できます。

managesAudioSessionプロパティがYESの場合 、NMAAudioManagerは、 HERE SDK またはアプリケーションのオーディオを再生するために、必要に応じてAVAudioSessionを自動的に設定、アクティブ化、および非アクティブ化します。 「managesAudioSession」が「NO」の場合 、アプリケーションAVAudioSessionはタッチされません。また、アプリケーションが独自のオーディオと HERE SDK オーディオの両方のオーディオセッションを設定するかどうかは、アプリケーションの制御下にあります。

managesAudioSession プロパティがに設定 NONMAAudioManager されている場合、はオーディオ出力の再生を試行し続けます。 ただし、 AVAudioSession は変更されません。 代わり AVAudioSession に、独自のオーディオ再生要件を満たすようにを設定する必要があります。 AVAudioSessionNMAAudioManager イベントの再設定を行う場合 NMAAudioManagerDelegate は、プロトコルメソッドを実装します。

NMAAudioManagerDelegate を使用して、デフォルトのオーディオ再生を上書きします

NMAAudioManagerがアプリケーション の HERE SDK オーディオセッションを自動的に管理するように設定されているかどうかにかかわら ず、オーディオ出力を再生に使用する前に、NMAAudioManagerDelegateを実装して関連するオーディオ出力イベントをリッスンし、カスタムロジックを実行することを選択できます。

NMAAudioManagerDelegate には、次のメソッドがあります。
  • audioManager:shouldPlayOutput: - このメソッドは、オーディオ管理者が再生する出力を持っている場合に呼び出されます。 このメソッドを実装する場合 NOYESplayOutput: は、オーディオの再生を防ぐために戻るか、またはメソッドを呼び出してから戻る必要があります。 これを使用して、オーディオの再生をある程度カスタマイズできます。 たとえば AVAudioSessionAVAudioSession 、自分自身でを管理することを選択した場合、再生前にを設定できます。
  • audioManagerWillPlayOutput: - 出力がによって再生される直前に発生するコールバック NMAAudioManager
  • audioManagerDidPlayOutput: - 出力の再生後に発生するコールバック NMAAudioManager

音声ルーティング

iOS 8 以降のデバイスで NMAAudioManagersetAudioRoute: 、ヘッドセットやカーステレオなどのデバイスのスピーカーや Bluetooth 周辺機器にオーディオ再生をルーティング playOutput: できます。そのためには、を呼び出す前にメソッドを使用します。

setAudioRoute:NMAAudioRoute の値を受け入れます。 デフォルトのオーディオルートはです NMAAudioRouteDefault
  • NMAAudioRouteDefault - オペレーティングシステムによって決定されたデフォルトのオーディオルートを使用します。 このオーディオルートは、有線ヘッドフォン、接続されている A2DP Bluetooth デバイス、またはデバイスのスピーカーを示している場合があります。
  • NMAAudioRouteDeviceSpeaker - ヘッドフォンやその他の周辺機器が接続されている場合でも、デバイスのスピーカーからオーディオを再生します。
  • NMAAudioRouteBluetoothHFP - Bluetooth the Hands-Free Profile (HFP) を使用してオーディオを再生します。

オーディオルートをに設定すると NMAAudioRouteBluetoothHFP、 HERE SDK は接続されている Bluetooth HFP デバイスを介してオーディオの再生を試みます。 デバイスが接続されていない場合 NMAAudioManagerNMAAudioRouteDefault、は自動的にオーディオルートをに戻します。 NMAAudioRouteDidChangeNotification を使用して監視 NSNotificationCenterすることで、このフォールバックイベントの通知を受信できます。

NMAAudioManageraudioRoute プロパティを使用して、から現在のオーディオルートを取得できます。