問題タブ [audiosession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
7750 参照

bluetooth - Bluetoothヘッドセットが接続されているかどうかを検出する方法IOS 8?

私のプロジェクトでは、AVAudioSessionヘッドフォンが接続されているか、接続されていないかを検出するために使用します。ただし、この場合、Bluetooth デバイスが接続されていることを検出できません。これがヘッドフォンの状態のコードです。

では、Bluetooth ヘッドセットが接続されているか、iOS 8 ではないかをどのように検出できますか?

0 投票する
1 に答える
524 参照

ios - iOSオーディオシステム。開始して停止するか、開始するだけか?

私は、オーディオ録音がメインで最も重要な部分であるアプリを持っています。ただし、ユーザーは、すべてのレコードが表示され、記録が実行されないテーブル ビュー コントローラーに切り替えることができます。

問題は、どのアプローチが優れているかです。「オーディオシステムを開始して停止するか、単に開始するか」です。「必要なときに割り当て、使用時に割り当てを解除する」のように、最初の方がより正しいと思われるかもしれません。この質問に対する私の考えを示します。熟練した人々の間での議論で賛否両論を見つけたいと思います。

初めて AudioController.m を作成したとき、オーディオ セッションを開いたり閉じたりするメソッドと、オーディオ ユニットを開始/停止するメソッドを実装しました。録音がアクティブでないときにオーディオシステムを停止したかったのです。次のコードを使用しました。

次の理由により、このアプローチには問題があることがわかりました。

  1. オーディオシステムが遅れて起動します。つまり、recording_callback() がしばらく呼び出されていません。その原因はAudioOutputUnitStartだと思います。この関数呼び出しの行をコメントアウトして、初期化に移動しようとしました。遅れがなくなりました。
  2. ユーザーが記録ビューとテーブル ビューの切り替えを非常に高速に実行すると (オーディオ システムの開始と停止も非常に高速です)、メディア サービスが停止します (AVAudioSessionMediaServicesWereResetNotification を観察することがここで役立つことはわかっていますが、それは重要ではありません)。

これらの問題を解決するために、AudioController.m を別のアプローチで修正しました。このアプローチは、アプリケーションがアクティブになったときにオーディオ システムを開始し、アプリケーションが終了する前に停止しないという方法で発見できました。この場合、いくつかの問題もあります。

  1. CPU使用率
  2. オーディオ カテゴリが録音のみに設定されている場合、ユーザーがテーブル ビュー コントローラーを探索するときに他のオーディオを再生できませんでした。

次のように recording_callback() で何らかの処理をキャンセルする場合、最初のものは驚くべきことに大したことではありません。

これを実行すると、記録が不要で他のアクションが実行されない場合、CPU 使用率は実際のデバイスで 0% になります。

2 つ目の問題は、オーディオ カテゴリを RecordAndPlay に切り替えてミキシングを有効にするか、単に問題を無視することで解決できます。たとえば、私の場合、アプリでは外部デバイスでミニジャックを使用する必要があるため、ヘッドフォンを並行して使用することはできません。

これらすべてにもかかわらず、最初のアプローチは、不要になったときにすべてのストリーム/リソースを閉じる/クリーンアップするのが好きなので、私にはより近いです。そして、オーディオシステムを起動する以外に選択肢がないことを確認したいと思います。この解決策にたどり着いたのは私だけではなく、正しい解決策であることを確認してください。

0 投票する
2 に答える
2506 参照

ios - iOS強制オーディオ出力はヘッドセットジャックのみ

プラグインされていなくても、iOS VoiceOver サウンドをヘッドフォンに転送したい。

つまり、アプリが開いている間、VoiceOver サウンド (およびアプリを使用して再生する他のサウンドAVSpeechUtteranceなど) は決してスピーカーに送られるべきではありませんが、接続されている場合はヘッドセットから出てくるはずです。

誰でもこれについて何か提案できますか?

0 投票する
2 に答える
1131 参照

ios - AVAudioSession setCategory は成功しましたが、何も起こりません

コアオーディオを使用して iOS アプリをコーディングしています。不思議なものが出てきます。

すること:

バックグラウンドミュージックはダッキングされています。それから私はそれを再開しようとします:

エラーはありませんが、バック グラウンド ミュージックはまだダッキングされています。次に、次のように置き換えます。

できます!バックグラウンドミュージックが消えた!

最初の試行が失敗し、2 回目の試行が成功する理由がわかりません。

私の意見では、違いはありません!

0 投票する
1 に答える
1226 参照

swift - AVAudioSession - setMode および setCategory エラーのキャッチ

オーディオ再生のみを実行するアプリで AVAudioSession を使用しています。で audioSession のモードとカテゴリを設定していますapplicationDidFinishLaunchingWithOptions:

アプリの有効期間中に別のモードやカテゴリを設定することはなく、ユーザーが再生ボタンをタップしたときにオーディオ セッションをアクティブにします。これらのメソッド (setMode:error:およびsetCategory:error) のいずれかがエラーをスローするシナリオはどれですか? catch ブロックで何を処理する必要がありますか?