さまざまな物や事に関する、役に立ったり立たなかったりするテキストが綴られるブログ。

2013/03/08

[Nexus7] スリープ時のエフェクトを変更してみる

画像はイメージですAndroidがスリープする際に施されるエフェクト。標準ではフェードアウト的に消える処理がなされているのですが、これをCRTの電源切断時の画面を模したアニメーションに変更することができます。

元ネタはxdaのこちらのスレッド。実際の動作を映したビデオもこちらのリンクでご覧いただけます。

基本的には非root/rocked端末でも行けそうな雰囲気なのですが、万一の際の対応が面倒なので、「カスタムリカバリが起動するなら問題なし」と豪語できるユーザ向けの内容かもしれません。

ちなみに、本MODはICS以降であればAndroidのバージョンや端末の種類を問わず実行できます。が、ここでは"Nexus7"とCM10.1でのみ試しています。なお、作業にはWindows PCならびにJava環境が必要となります。

基本的な流れは以下の通りです。

1.どうにかして"/system/framework/framework-res.apk"をPCに持ってくる
2.xdaで公開されているPC用ソフト"Framework Flasher"をインストール
3.上記ソフトにて"framework-res.apk"をデコンパイル
4."files-to-edit\framework-res.apk\res\values\bools.xml"をエディタで開く
5.内容の一部を変更
6.ファイルをセーブして"Framework Flasher"でリコンパイル
7.最終的に"update.zip"を作成
8.できた"update.zip"をフラッシュすれば完了

箇条書きにするとわずか8ステップで完了ですが、ちとハマるポイントなどありましたので、備忘録的に記述しておきます。

まずは1.の部分。"framework-res.apk"をPCにコピーする方法ですが、元ネタのスレッドでは、"Nexus Root Toolkit"または"Google Nexus 7 TOOLKIT"の利用が推奨されております。要するにadbのpushコマンドが使えればOKという話。

なので、adb環境が整っているならそれを利用すれば良く、何ならファイル管理アプリでPCに転送する方法でもかまいません。

続いて2.以降の話。"Framework Flasher"は、インストール作業など不要で、ダウンロードしたzipを展開すればすぐに使えるようになります。pathの通ったディレクトリ下に置いておきましょう。

使い方ですが、コピーしてきた"framework-res.apk"を"place-framework-res-here"フォルダに入れ、"RunMe.bat"を実行するとターミナルエミュレータ画面のメニューが表示されます。

Framework Flasherのメニュー画面まずは、"framework-res.apk"の中身をいじれるようにするためのデコンパイルから。メニューの(1)を選ぶと処理が開始される...のですが、当方の環境ではエラーが出てしまい、正常に終了しません。

xdaのスレッドをななめ読みしてみると、どうやら関連ファイルが古いために発生する不都合な様子。そこで、該当するファイルが含まれたアーカイブ(2個)をこちらのWebページからダウンロードしてきます。

必要なのは"apktool1.5.2.tar.bz2 "と"apktool-install-windows-r05-ibot.tar.bz2"。見慣れない拡張子が付いておりますが、これを展開できるツールも必要となります。当方では"7-Zip"というオープンソースのアーカイバを使用しました。

それぞれのアーカイブに含まれる"aapt.exe"と"apktool.jar"を取り出し"Framework Flasher"の"resources"フォルダ内にあるファイルと入れ替えます。

また、Javaに関連したpathとclasspathが通っていないとダメな雰囲気なので、Windowsの環境変数も追加しておきます。当方では以下の一文をclassspathとpathの最後尾に付加しました。状況によりフォルダ構成が異なるかもしれませんが参考まで。
;C:\Program Files\Java\jre7\bin
これでエラーもなく、処理が完了するようになりました。

処理後のファイルは"files-to-edit"フォルダに保存されます。名前は"framework-res.apk"のままですが、デコンパイル済みなのでダブルクリックで開けます。フォルダを"res"→"values"と開き、その中にある"bools.xml"を適当なエディタで開きます。

Windowsのメモ帳を使うと変に改行コードなどが入ってしまうため、当方では"TeraPad"というテキストエディタを使用しました。変更箇所は以下の通り。
<bool name="config_animateScreenLights">true</bool>
これを以下のように変更します。
<bool name="config_animateScreenLights">false</bool>
編集が完了したらセーブして"Framework Flasher"画面に戻ります。続いてメニュー(2)を選んで再びコンパイルし、(3)でAPKに署名、最後に(4)で署名付きの"update.zip"を作成すればOK。

後は、"update.zip"をリネームするなり、そのまま使うなりでフラッシュすれば完了です。CacheとDalvikのワイプも忘れずに。リブート後にCRT消灯エフェクトが有効になります。

実際にやってみると、確かにCRTっぽい消え方をします。これは愉快。なのですが、画面の方向に関わらず同じアニメーションが使用されます。

縦画面だと良い感じなのですが、横画面だとマヌケな感じに。走査線の概念を理解しているユーザにはとても残念なエフェクトに見えてしまいます。わざわざリスクを冒してまでするMODではないような気が。

使い勝手は少々異なりますが"Screen Off and Lock"というアプリを使用すれば、同様なエフェクトを、簡単かつ安全に導入できます。しかも、ちゃんと画面位置に対応したエフェクトとなっております。

なので、興味のある方は、まずはこちらのアプリをインストールしてみるのがよろしいかもしれません。



Related Posts with Thumbnails

2 件のコメント:

匿名 さんのコメント...

ECHOはOFFですとのエラーがでてリコンパイル出来ません。
アドバイスをください

WHMaster さんのコメント...

デコンパイルが問題なくできたようなのでJava関連の問題ではなさそうですが、正直バッチファイルのエラーだけで原因を判断することはできません。

状況からするに”bools.xml”の編集に問題があったのかも。余計な改行コードが入ってしまったり、保存の段階でファイルが破損したりなど。この辺に気を付けて、もう一度”bools.xml”の編集からやり直してみてくだされ。

新しい投稿へ 以前の投稿へ ホームへ