Androidステータスバーの時計拡張 手順

投稿者: | 2011年8月31日

前に書いたAndroidステータスバーの時計拡張に質問があったので公開。

1.Android本体のビルドが出来る人で、ソースをいじる場合

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar
Clock.java
(以下は7月末にDLしたCM7のソースです。たぶん最新も同じかと)

    private final CharSequence getSmallTime() {
        Context context = getContext();
        boolean b24 = DateFormat.is24HourFormat(context);
        int res;

        if (b24) {
            res = R.string.twenty_four_hour_time_format;
        } else {
            res = R.string.twelve_hour_time_format;
        }

        final char MAGIC1 = '\uEF00';
        final char MAGIC2 = '\uEF01';

        SimpleDateFormat sdf;
        String format = context.getString(res);

最後のformatにフォーマットに合った文字列を入れればOK。
前に試しに作ったものはここで直接固定文字列を指定しました。
本来はリソースを自分で作って呼んでやるのがよいかと。
 
日付のフォーマットは
SimpleDateFormatのリファレンス
を見ればわかると思います。

下のキャプチャ画像にある
「06/04 11:02 土」
のようなものなら
“MM/dd HH:mm E”を文字列に設定。
あまり長くするとステータスバーが狭くなるので適度に。

 

2.rootは取れるけどROMをビルドして焼けない場合
リソース(framework-res.apk)をいじる方法

frameworks-res.apk の中の values-ja/donottranslate-cldr.xml
にある、上の1.の手順でのせたソースで指定しているリソース自体を書き換え。

<string name="twelve_hour_time_format">h:mma</string>      //12時間表示
<string name="twenty_four_hour_time_format">H:mm</string>  //24時間表示

1.にあげたソースを見ると”h:mma”の後ろの”a”はAM/PM表示のためのもので、
12時間表示でAM/PM不要なら消すと場所が節約できそうです。

ただし、framework-res.apkにあるリソースは、フレームワーク共通のリソースであり時計だけでなく
他のアプリでも使われている可能性があるのでこれをいじると他の部分にも影響が出るかもしれません。(未確認)

Androidステータスバーの時計拡張 手順」への6件のフィードバック

  1. DarkHor.se

    こんにちは。
    ステータスバーへの日付表示を調べていて、こちらのブログへ辿り着きました。

    現在、Galaxy Nexus ICS 4.0を使用しているのですが、当たり前ながら、該当するフォルダが無い状況です。

    そこでアドバイス頂きたいのですが、/System/frammework/framework-res.apkのどこに該当ファイルがあるのかご存知ではないでしょうか?

    framework-res.apkの中には、「AndroidManifest.xml」「assets」「META-INF」「res」「resousec.arsc」というファイルが並んでいます。

    ご存知でしたらアドバイスよろしくお願い致します!

    用件だけになりますが、失礼致します。

    返信
  2. ichinomoto 投稿作成者

    今ちょっと見てみましたが、ICSのソースには
    values-ja/donottranslate-cldr.xml
    はあって、中身も同じものがあったのでたぶん無くなってはいないと思います。

    今度時間のあるときにframework-res.apk展開してみてみますので少々お待ちを。

    返信
  3. DarkHor.se

    わざわざありがとうございます!
    楽しみにさせて頂きます!

    返信
  4. ichinomoto 投稿作成者

    AOSP版をビルドして焼いてあるGalaxyNexusからframework-res.apkをpullして
    apktoolsやapk managerを使って中を見るとstrings.xmlに書いてありました。
    ただ、上記ツールだとばらした後に元に戻らないようなので現状どうしたらいいかわかりませんね。
    (ディレクトリ名が無効だと言われる)

    ソースからビルドする場合には同じ部分を書き換えれば変わることは確認できましたけど、
    この手順は面倒すぎですね……

    返信
  5. ichinomoto 投稿作成者

    http://twitpic.com/8mzdvv
    ICSだとこんな感じですね。

    framesork-res.apk入れ替えはパッケージングの問題だけなので、
    問題なくリパッケージできる方法がわかれば何とかなるとは思うんですが
    ちょっとそこは現状わからないです。

    返信
  6. DarkHor.se

    こんばんは!
    わざわざ調べて頂いてありがとうございます!

    自分も、やはりframework-res.apkのコンパイルで突っかかりました。
    やはり、ディレクトリ名で引っかかります。
    使用しているのは、apktoolです。

    現状、ここが分からないとどうしようない感じですね。
    (T T)

    リンクのキャプチャは、まさにその感じにしたいです!

    またいつかトライされたときには、是非アップして下さい!
    ありがとうございました!

    返信

コメントを残す

メールアドレスが公開されることはありません。