Androidのステータスバーに秒数表示を追加する方法

Android
スポンサーリンク

FXや株のトレードをしていると秒単位で時間を確認したいことってよくありますよね。経済指標の発表や、決算の発表、政府要人の講演、議事録の発表等に準備するためには、やはり秒数表示は必須でしょう。私の場合は、仕事用デスクには電波時計を据え置いて入るのですが、出先などでどうしても見れない時などにはAndroidの端末にも秒数表示があれば便利というもの。

というわけで、今日はAndroid 4.4 Kitkatにステータス秒の秒数表示を入れる方法のご紹介です。

Androidのステータスバーに秒数表示を追加

方法としては新規アプリのインストール、もしくはSystemUI.apkの書き換えの2通りがあります。

もちろん新規アプリのインストールによる導入がとても手軽で便利なのですが、秒数の表示位置が本来の時計の場所とは違った場所に表示されてしまい、見栄えもよくありません。また、別で新しくプロセスを常時立ち上げすることになるため、バッテリーの持ちにも多少なり影響をしてしまうため、個人的にはSystemUI.apkの変更による秒数の追加をオススメします。

アプリのインストールで追加

SystemUI.apkの書き換えによる追加

※この作業はRoot化を必須とし、初心者向けの作業ではありません。しっかりと理解して、問題があった時に自分で解決できる方のみ行っていただくようお願いします。

筆者環境

作業する前にバックアップを

当然ですが、TWRP等でROM全体のバックアップを取っておいてください。

SystemUI.apkを取り出す

使用しているOSのSystemUI.apkを取り出します。取り出しには、「Apk Share & Backup」があると便利です。

framework-res.apkを取り出す

使用しているOSのframeworkのapkを取り出します。Nexus端末の場合はframework-res.apkになります。筆者環境では、/system/frameworkディレクトリにありました。取り出しにはRoot Explorer等を使って取り出してください。

Apktoolの入手

上記サイトより、Windows用のApktoolスクリプトを入手します。

リンクがわからない人は、2014/11/15時点での下記リンクを利用してください。

apktool.jarファイル
apktool.batファイル

ダウンロードしたファイルを解凍し、上記2つを同じディレクトリ上に保存します。apktool_2.0.0rc2.jarはapktools.jarファイルにリネームします。

SystemUI.apkとframework-res.apkをapktoolsファイルと同じディレクトリにコピーします。

Apktoolを使ってデコンパイルする

保存したディレクトリ上でSHIFTボタンを押しながら右クリックします。

WS000232

「コマンドウィンドウをここで開く」を選択します。

apktool if framework-res.apk

コマンドウィンドウに上記コマンドを入力してエンターキーを押します。これで、フレームワークが適応されてSystemUI.apkのデコンパイルができるようになります。

apktool d SystemUI.apk

コマンドウィンドウに上記コマンドを入力してエンターキーを押します。

WS000233

デコンパイルが終了したら、先ほどのディレクトリ上に「SystemUI」フォルダが作成されています。

statusbar.xmlを編集

SystemUIのフォルダから、res/layoutと移動し、statusbar.xmlを編集します。

<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="start|center" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:paddingStart="6.0dip" />

19行目辺りの上記の内容が記載された行を

<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="start|center" android:id="@id/clock" android:layout_width="0px" android:layout_height="0px" android:singleLine="true" android:paddingStart="6.0dip" android:visibility="gone" />

と変更します。既存の時計の表示をなくす処置です。((本来であれば、テキスト自体を消去してしまいたいところなのですが、消すとなぜかSystemUIが正常に動かなかったための処置です。))

先ほど、変更を加えた行のすぐ後ろに以下の行を追加します。

<TextClock android:format12Hour="EEE h:mm:ss a" android:format24Hour="EEE HH:mm:ss"  android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="start|center" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:paddingStart="6.0dip" />

format…という引数で表示フォーマットを指定できます。興味のある方は、下記リンクをご参照ください。

Apktoolを使って再コンパイルする

apktool b SystemUI

先ほどのコマンドラインに戻り、上記コマンドを実行します。

上記コマンドで、buildフォルダとdistフォルダが作成されます。

この時点でコンパイル自体は一度終了するのですが、できたapkファイルにはマニフェスト等が不足していてちゃんと動かないらしいので、元のファイルからそれらのファイルを追加する必要があります。

元のSystemUI.apkファイルを7zipやWinRARなどのソフトでZIPファイルとして閲覧、もしくは展開します。

開けるとすぐにAndroidManifest.xmlとMETA-INFフォルダがあるので、それを再コンパイルして先ほどコンパイルして作成したbuildフォルダ下のapkフォルダ内にコピーします。

apktool b SystemUI

再度上記コマンドを実行します。

変更したSystemUI.apkに置き換える

distフォルダ化に再コンパイルしたSystemUI.apkファイルが作成されているので、それをRootExplorer等で、Androidのsystem/priv-app下にコピーして、Androidを上書きすれば完了です。もしくは、自前のFlushable Zipを作成して上書き処理しましょう。

お疲れ様でした!明日はStatus BarのExtended内の時計に秒数表示を追加する方法をご紹介します。

コメント

タイトルとURLをコピーしました