無音化
解決したいこと
私は無音化サービスではなく、カメラアプリを趣味で開発しています。
カメラアプリの無音化に取り組み、こちらのサイトを参考にさせていただき、
https://qiita.com/anolivetree/items/31cf92d3a0ac7342d672
setMasterMute をリフレクションで使わせてもらいました。
Android 10以前のテスト機では、問題なく動作しました。
takePicture 前に無音にして、画像保存後、無音解除。という具合です。
ところが、Pixel3a Android 11(R) でカメラアプリでは、無音化できませんでした。
発生している問題・エラー
こちらのサイトの通り、権限がなくなっていました。
https://banatech.net/blog/view/25
「シャッター音消し」をインストールして試させていただきましたが、
やはり、Pixel3a Android 11(R) では、シャッター音が鳴りました。
ところが、Pixel3a Android 11(R) でも動作するカメラアプリを発見しました。
無音カメラ [最高画質] というアプリです。
https://play.google.com/store/apps/details?id=com.peace.SilentCamera&hl=ja&gl=US
どうやって無音化しているのか?今何とかこれを解析しています。
ログを追っておりますが、今のところ発見できておりません。
もし、情報があれば、お伝えいただけないか?というのが、今回のお願いでございます。
私も5日間ほど調査しておりますので、分かり次第、お伝えさせていただきます。
不躾なお願いで申し訳ございません。
サービスではなく、カメラプリ自体なら簡単じゃないか?とお思いかもしれませんが、
私には今のところ、そうでもないです。
自分で試したこと
私がカメラアプリを無音にするためのトライは次の通り。
(1) camera.takePicture(null, null, this);
ほぼ効きます。
Android 4.2から前と、Android 11以降は効きません。
それ以外にも時々、LGの端末など効かない機種もあります。
(2) camera.enableShutterSound(false);
これが推進のようですが、ほとんどのテスト機で
if (cameraInfo.canDisableShutterSound)
の時点で、対象になりません。当然、効きません。
(3) audioManager.setSpeakerphoneOn(false);
ダメでした。
(4) android.media.AudioSystem.setDeviceConnectionState()
リフレクション。スピーカ機能をOFFにするものです。
これも相当惜しいのですが、Android Q辺りから権限がありません。
よろしくお願いいたします。