2012年8月13日月曜日

P-01D(rooted)のカメラを完全に無音にする方法

これはルート化したP-01Dのカメラを完全に無音にする事になった顛末と、その方法のメモです。

P-01Dを使い始めて1週間くらいになります。今のところとっても満足しているのですが、以前に書いたアラームの音が小さいことの他にもう一つ、使っていて困ったことがありました。
カメラの音がでかいのです。root化直後に、こちらのサイトを参考に、シャッター音だけ静かなものに変えました。
しかし、オートフォーカスの音がまたうるさい。ちょっと静かなご飯屋さんで使おうものなら軽く視線集めちゃうレベルです。小心者で視線が刺さるとダメージを受けてしまう人間としては辛い。
ということで、オートフォーカスなどシャッター音以外も差し替えよう、という試みです。もちろん無音の音源を用意すれば完全に無音化してしまえます。
上記のエントリーで差し替えているシャッター音のファイルの周辺にはオートフォーカス時などの音ファイルは見当たらなかったので、カメラアプリに入っているのかなと思って中身を見てみたらドンピシャでした。
ちなみにカメラアプリはPonyoCamera.apkという名前なんですよ。ポニョカメラです。
P-01Dの中にポニョとトトロを発見した話』で壁紙の名前にトトロとポニョがあったというのを読みましたが、開発スタッフがジブリ好きなのでしょうか。

それはさておき。
以下のメモはP-01Dをすでにルート化していることが前提です。
root化に関してのまとめメモはこちら
ルート化も以下で述べるカメラの音の変更も、システムファイルをいじります。最悪P-01Dがペーパーウェイトになってしまうこともあるらしいので、試したい方は個人の覚悟と責任でどうぞ。バックアップ、取ったほうが良いとおもいます。

概要
/system/media/audio/ui/ディレクトリにあるVideoRecord.ogg、camera_click.ogg、/system/app/にあるPonyoCamera.apk内のcam_focus.wav、cam_prepare.wav、cam_timer.wav、shutter_01.wav、shutter_continue.wavを、任意の音ファイルに置き換える。

用意するもの
変更したい音の入ったwavファイルとoggファイル
(無音のものを用意すれば無音になります)
無音のoggファイルはこちらで、wavファイルはこちらで配布されている方がいらっしゃっいます。

変更作業
oggファイルの方は簡単です。rootが取れていればsystemディレクトリにアクセスできますから、/system/media/audio/ui/にある該当のファイルをVideoRecord.ogg.bak、camera_click.ogg.bak
とでもリネームして、代わりに用意したoggファイルにVideoRecord.ogg、camera_click.oggの名前を付けて保存すれば完了です。
こちらは先ほど紹介した『P-01Dのカメラのシャッター音を消す(不完全ですが)』でやっていらっしゃるとおりです。

そのほかの、タイマーやオートフォーカスの音の方は、カメラアプリの中身をいじるので少し複雑です。
まず/system/app/にあるPonyoCamera.apkを任意の場所にコピーします。おそらくP-01D上でも必要なアプリを集めれば作業可能ではないかと思いますが、操作性や環境を整えるのが面倒だったので、MacBookProにコピーしてそちらで作業しました。
apkは無圧縮のzipファイルなので、拡張子をzipにするなどして展開します。そうすると、res/raw/ディレクトリの中にcam_focus.wav、cam_prepare.wav、cam_timer.wav、shutter_01.wav、shutter_continue.wavが入っていますので、こちらを、用意した音源ファイル(wavのもの)で置き換えます。
あとは、展開したファイルで無圧縮zipを作成し、PonyoCamera.apkと名前をつけて、/system/app/にコピーしてあげます。元のファイルはPonyoCamera.apk.bakとでもリネームして保存しておきましょう。

以上で完了です。以下は自分が作業していて詰まったところ。
音源を差し替えたファイルで無圧縮zipを作成するときに、はじめ、展開したファイルが入っているフォルダごとzip化していて上手くいきませんでした。zipする時にはMETA-INFフォルダ、resフォルダ、AndroidManifest.xml、classes.dex、resources.arscを直接選択しないといけなかったんですね。アプリ開発をやる人達にとっては常識なんでしょうが、ここではまりました。
それから、無圧縮zipを作成するときに、はじめTerminalからzipコマンドで行っていたのですが、何故かこれで作ったファイルをP-01Dがアプリとして認識してくれませんでした。無圧縮機能のついたこちらのアプリを使って作成したところアプリとして認識されました。理由はちょっと良くわかりません。

最後に。完全に無音と書きましたが、あれは嘘です。写真取るときにカメラデバイスそのものからちょっと音がします。それから、この試みは、静かな場所でのマナーとしてカメラの音を消したいために行なったものです。便利な道具は善なる心を持って使いたいものです。




9 件のコメント:

  1. こんにちは。

    こちらの変更手順についてお伺いしたいのですが、
    『/system/media/audio/ui/にある該当のファイルをVideoRecord.ogg.bak、camera_click.ogg.bak
    とでもリネームして』と言うのは、これらの元のファイルを、この場所以外の任意の場所でリネーム→バックアップ保存するという事でしょうか?元の該当ファイル(.bakリネーム変更したもの)と差し替え用無音ファイル(.ogg)は同じuiの場所に入れない、と言う事で宜しいでしょうか?

    宜しければ教えて頂けますでしょうか?
    宜しくお願い致します。

    返信削除
    返信
    1. しばらく確認できず、遅くなりました。
      リネームしたファイルは差し替え用の無音ファイルと同じuiの場所に入れておいても問題無いですよ。もちろん別の任意の場所に保存しても問題無いです。
      好みの問題だと思います。

      削除
    2. こんばんわ。

      こちらの手順を参考にさせていただき、PonyoCamera.apkの解凍、res/raw/ディレクトリ内のwavファイルの入替え、無圧縮zipの作成と
      手順通りに進めたのですが、カメラアプリを起動するとすぐに
      「com.panasonic.mobile.camera.aries が停止しました」と強制終了になります。何かしなければならないことがありますでしょうか?
      ご教授願います。宜しくお願い致します。

      削除
    3. 返信が遅くなってすみません。ちょっと情報が少なくて判断できないです。わたしの場合はzipするときに記事のように詰まって、似た表示がでました。あまりそのあたりには詳しくなく、特定の環境下で試行錯誤してうまくいったという感じなのでお役に立てないかもしれません。

      削除
  2. PonyoCamera.apk.zipとリネームした後、7zipで解凍
    res/raw/の中身を入れ替えて、7zipで
    META-INFフォルダ、resフォルダ、AndroidManifest.xml、classes.dex、resources.arscを直接選択して無圧縮zipを作成し
    PonyoCamera.apkにリネームしたらうまくいきました
    一応、パーミッションは元の644(rw-r--r--)にしてみました
    ありがとうございます

    返信削除
    返信
    1. うまく言ったようでよかったです(*^_^*)

      削除
    2. 匿名の方にお尋ねします
      「META-INFフォルダ、resフォルダ、AndroidManifest.xml、classes.dex、resources.arscを直接選択して無圧縮zipを作成し
      」とありますが、このとおりにやってみてうまくいきませんでした。
      もう少し説明をしていただっけないでしょうか?
      元の、PonyoCamera.apkのファイルサイズより大きくなってしまいました。(元のサイズ 1.99Mbが 2.33Mbに変わってしまいました)よろしくお願いします。

      削除
  3. 『/system/media/audio/ui/にある該当のファイルをVideoRecord.ogg.bak、camera_click.ogg.bakへリネームしようとしても書き込めませんとエラーメッセージが出ます。
    systemのファイルはどのようにしてリネームすれば良いのでしょうか? 
    初歩的な質問で申し訳ありませんがご教示くださいませ。

    返信削除
    返信
    1. ご覧頂きありがとうございます。
      書き込み頂いた状況だけではちょっと原因は思いつかないです。お役に立てず恐縮です。
      どのように操作されているのか、もう少し状況をお教えいただけるとなにかアドバイスできるかもしれません。
      が、いかんせんわたしもそこまで詳しいわけではないので。。

      ちなみに、わたしの場合はrootをとったあとにESファイルエクスプローラーというアプリでP-01D上でファイル名を変更しました。

      削除