Androidのアプリ開発で、3.5mmイヤホン端子の外部入力でマイク録音するためのメモです。しかし、AndroidのAPIでは明示的にマイク録音を指定するのが難しいらしく、ヘッドセット用のマイク-イヤホン分岐アダプタを購入しました。
入力元をソフトウェアで明示的に指定できない
Androidのアプリ開発において、マイク録音はMediaRecorder.AudioSource.MICと指定することで出来ます(ソースの例は「Androidアプリ開発:録音と再生」)。通常であれば、デバイスのマイクが使用されますが、ヘッドセットなどを検知すると、そちらの入力を使うようになります。
どうやらこの切り替えは、Androidの開発用のAPIで明示的に指定することは難しい(できない?)ようです。少なくとも、MediaRecorderではできなさそう。色々調べていると、ハードウェアレベルでの制御が必要らしい(インピーダンスを見ている?)。
つまり、デバイスのマイクではなく、3.5mmのイヤホン(ヘッドフォン)端子からの外部入力を録音したい場合(いわゆるライン録音)、具体的には、外部のオーディオ機器等からの出力を、オーディオケーブル経由でAndroid端末に入力したい場合などは、困ってしまう。
ヘッドセット用のマイク-音声分岐アダプタを挿入
まぁハードウェアレベルで制御しなくてはいけないのであれば、素直にハードウェアレベルで対策するのが一番簡単だろうということで、下記の商品を購入しました。
マイクと録音に分岐してくれるアダプタです(エスエスエーサービス ST35-SM35F)。これをAndroid端末に挿入すると、ヘッドセットを挿入したように認識されるようです。
これを使ってMediaRecorderにより録音を実行したところ、無事マイク録音出来ました。音質はまぁぼちぼちといったところです。
この方法だと、音声出力もこの端子経由になってしまいます。イヤホンでよければ、イヤホンをつなげればよいのですが、スピーカー出力が必要な場合、別途スピーカーを繋げねばなりません。
ということで、電源不要のパッシブスピーカーも購入しました(「ヤザワ プラグインミニスピーカー VRS202W」)。
なんだか色々と不格好になってしまいましたが、ひとまずこれで目的は達せられました。こういうマイナーな製品がさっと手に入るAmazonさんは本当に有難い存在です。
コメント
コメント一覧 (14件)
分岐アダプタ!なるほど!私が今まさに求めていた記事です、大変参考になりました。
同じくLINE関連ばかりが検索に引っかかり大変でした笑
こんにちは。
お役に立てたようでよかったです。ちょっと不格好ですが目的は果たせます。こういうマニアックな製品を手軽に買えるのがAmazonの有難いところですね。お求めは是非うちのリンクから(笑)。
同じくLINE関連ばかりで辟易していました。ライン(線)入力がしたいのに。初心者で良くわかりませんが早速試してみます。ありがとうございました
こんにちは。同じ悩みを抱えた人は意外といますね。タイトルをマイク録音にしたのは、少しでも検索のことを考えてだったりします。
ハードウェアレベルでの解決はソフトウェア的には一番楽(というか何もしない)なので、後は簡単だと思いますよ。
何と言う製品か教えていただけませんか?画像が消えているのですみません…
あれ、そうでしたか。私の環境では表示されているのですが。一時的なものかな。
一応名前も載せておきました。
ラインから録音のアプリがみつからず、かといってAndroidのブログラミングまでは踏み込んでおらず、なんとなくもやもやしてました。
MediaRecorder.AudioSource.MICというAPIの仕様(らしい)とのこと、貴重な情報ありがとうございます。
こんにちは。どこでそのような記述を見たのかよく覚えておらず、いい加減な書き方で申し訳ない。
始めまして。
Androidスマホに、マイク入力でなく、オーディオ入力(LINE入力、AUX入力)をしたくて、検索して、貴サイトにたどり着きました。
ST35-SM35Fを使うと、上記の事が可能になると考えて良いでしょうか?
あまり詳しくないのですが、マイク入力端子に、LINE信号を入力すると、過大入力になって、スマホを壊すような気がしますので、念のため、お尋ねする次第です。
お教えください。よろしくお願いいたします。
>6bayさん
はじめまして。コメントありがとうございます。
さて、ご質問の件についてですが、すみません、私はマイクレベルとラインレベルの違いも知らずに書いていました。非常に浅薄な知識で記事を書いてしまった、と反省しています。お恥ずかしい限りです。
ご質問いただいたおかげで、誤りに気づけました。ありがとうございます。誤解を招きそうな表現のところについては修正しました。
記憶ではありますが、私は当時、PCや無線機のヘッドフォン出力からのものを入力にして録音をしていました(というよりそれしか想定していなかった)。なので、レベル的に問題なかったものと思います。
ご質問の件については、お察しのとおり、危険であると思います。
ご回答、ありがとうございました。
もっといろいろ探してみることにいたします。
お役に立てず残念です。ご指摘ありがとうございました。
アンドロイドosアップデートしなければ良かったと後悔です。
イヤホン端子から外部オーディオ機器に繋げて使えなくなりました。
インピーダンス値を検知して区別するようですね。
OSアップデートでそんなことになるんですね。つらい。お疲れ様です。。。
検知の仕組みはやっぱりそうなんですかね。