Camera2の撮影音の機種依存について

こんにちは、KID.Aです。

 

今回もCamera2はAPIで気をつけなければいけないことを記載します。

 

Android LからCameraがdeparicatedされて、Camera2を使わなければいけないことになりました。
Camera2はCameraのAPIのよりできることもだいぶ増えました。しかしいいことばかりではなく、CameraのAPIなら意識しなくてもいいことがCamera2のAPIでは意識しなければいけない点もでてきています。その1つとして、写真を撮影した際の撮影音になります。

 

Camera2では基本的には撮影時(CaptureSession#capture)に撮影音が鳴りません。そのため、MediaAcionSoundのAPIを使って撮影音を鳴らさなければなりません。

・開発サイトのMediaAcionSoundのAPI
http://developer.android.com/intl/ja/reference/android/media/MediaActionSound.html

APIの説明に以下のような記載があります。

APIのクラス説明抜粋
==================
This class is recommended for use with the android.hardware.camera2 API,
since the camera2 API does not play any sounds on its own
for any capture or video recording actions.
==================

簡単に翻訳すると、Camera2ではサウンドを再生しないため、キャプチャやビデオレコード時に使用するのをおすすめするとのことが記載されています。

 

それでは、実際にMediaActionSoundを実装してみましょう。
※今回はMediaActionSoundの処理だけに絞ります。
実装は以下の通りで、撮影音を鳴らすだけであれば、とても簡単ですね。

MediaActionSound mediaActionSound = new MediaActionSound();
mediaActionSound .load(MediaActionSound.SHUTTER_CLICK);
mediaActionSound .play(MediaActionSound.SHUTTER_CLICK);

// 撮影実施
// ここで撮影のCaptureSession#captureを行います。

if (mediaActionSound != null) {
    mediaActionSound .release();
}

 

ソースの説明をすると、CaptureSession#captureの前に撮影音を鳴らして、撮影実施中にメディアをリリースすればよいです。
ただし、1点、通常のカメラと違うのはMediaActionSoundで鳴らす音は通常のカメラみたいに「カシャ」という音ではなく、「プルン」みないな音になります。
(「プルン」みないな音は機種によって違います。ちなみにF-04G(5.0)は「カシャ」でした。MediaActionSound.SHUTTER_CLICK に紐付くサウンドリソースの実体は/system/media/audio/ui/camera_click.ogg のようみたいです。)

 

実装はこんな感じでよいと思うのですが、実は機種依存がいます。
F-04G(5.0)、DM-01G(5.0.2)、SH-04G(5.0.2)でCaptureSession#captureの撮影時に「カシャ」という撮影音が鳴ります。
そのため、MediaAcionSoundをおこなうと「プルン」「カシャ」(機種によっては「カシャ」「カシャ」)と2重で撮影音が聞こえてしまいます。
ちなみにNexus 5(6.0)では「カシャ」と撮影音が鳴らないことは確認できて、MediaActionSoundのAPIの説明通り実装すれば撮影時に「プルン」だけ鳴ります。

 

この2重に撮影音が鳴ってしまう現象の根本的な回避策は…今のところ思いつきません。

 

Cameraのプレビューサイズとピクチャーサイズの機種依存問題の記事みたいに機種特定の処理を入れれば、処理をいれた機種に対してはなんとかなるのですが、全機種確認が必要のため非現実だと思います。

あとはやりたくはないのですが、depricatedされているCameraを使うと撮影音は通常通り鳴ります。

どれもいい案ではありませんね。。。

 

何かいい案があればコメントいただければと思います。
そもそも実際に「プルン」「カシャ」と2重に聞いたらそこまで不自然じゃないというのもあったので、対応自体必要ないというのもアリなのかとも思っています。ただ、「カシャ」「カシャ」という機種は少し不自然かもしれないです。。

 

以上、Camera2の撮影音の機種依存の説明でした。

 

KID.A

KID.A の紹介

楽して生きることと一発逆転を夢見ている、ちゃきちゃきのAndroiderです。
いろいろアプリを出しているのですが、いつもリリース後にターゲットユーザ数を2桁見誤っていたことに気付くので、残念でなりません。下方修正で、ヒットがでません。おしいです。

明日から本気出します。
よろしくお願いします。

カテゴリー: Android タグ: , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です