2013年7月14日日曜日

Xposedの簡易ステータスバーモジュールを作ってみた

ステータスバーのアイコンやテキストをXposedで可能な範囲でカスタムする
簡易ステータスバーモジュールを作成してみた。
Xperia A(SO-04E)でのみ動作確認済みだが、他機種で正常に動作するか
不明なので、試してみたい方は自己責任でどうぞ。

【動作条件】
・Android 4.0.3(ICS)以上のrooted端末
・Xposed Installerおよびフレームワークをインストール済み
・以下の自作の簡易ステータスバーモジュールをインストールして設定
https://drive.google.com/open?id=0B3bjmX6Y3dO5UHc4SlJmYXM4N28

<注意事項>
Xperia等の一部機種ではステータスバーとナビゲーションバーの背景色および透過度が
連動しているため、変更した際にナビゲーションバーも一緒に変更されるので注意。

【モジュール機能一覧】
・ステータスバーの背景色および透過度を変更する
・通知アイコンの透過度(明るさ)をMAXにする
・通知アイコンの大きさをMAXにする
・バッテリーのアイコンを非表示にする
・バッテリーのアイコンを100段階表示にする
・バッテリーのテキストを非表示にする
・バッテリーのテキストの色を変更する
・時計のテキストを非表示にする
・時計の色を変更する

【動作イメージ】
Xperia Aで通知アイコンの明るさMAX、バッテリーテキスト非表示、
バッテリーアイコン100段階を設定した場合の画面は以下の通り。


バッテリーアイコンが気に入らない人は各自差し替えて使って欲しい。

【おまけ】
Xposedのバッテリーアイコンのみ変更したい人は下記サイトがお勧め。
他にも色々とモジュール作成が可能らしいので各自試してみると面白いかも。

■ UOT Kitchen. Kitchen
http://uot.dakra.lt/kitchen/


【2013/8/2 追記】
ステータスバー透過対応バージョン0.4.0を公開した。

17 件のコメント:

  1. Statusbar Patcher、便利に使わせてもらってます。透過機能について、以下のサイトに有用な情報があるのではないかと思います。私には難しすぎて。。。(^^; 
    資材置き場-研究室 http://xperia.hagurekamome.biz/index.php?%E7%A0%94%E7%A9%B6%E5%AE%A4

    返信削除
    返信
    1. 情報ありがとうございます。ステータスバー透過対応バージョン0.4.0を公開してみたので、よかったら使ってみてください。

      削除
    2. 早速、0.4.0を使用してみましたが、私のAXでは、裏に黒の画像が残ってるかのようになって、透過しませんでした。
      資材置き場においてあるFrameworkmod.apkでは、透過できたのですが・・・

      削除
    3. 処理を一部変更してみたので再ダウンロードしてお試しください。
      ちなみに透過しないというのはステータスバーとナビゲーションバーの両方が透過しないという事でしょうか?あと設定画面で透過を有効にするためのチェックは入っていますか?

      削除
    4. お手数かけて申し訳ないです。

      今日DLしたバージョンで、ばっちり透過できました!

      ちなみに昨日までは、透過度を増やしていくと、設定色に黒が混ざる感じで、最大透過で真っ黒になるように見えました。

      大変、有用なアプリ、ありがとうございます!

      削除
  2. はじめまして。
    AQUOS PHONE ZETA SH-02Eにてステータスバーの透過が出来ました。
    xdaにあるTweakBoxやStatusBarOpacity、StatusbarIconsなどでも透過出来なかったので感激しております。
    ありがとうございました。

    返信削除
  3. cm10.2でも動きました。
    ありがとうございます。

    返信削除
  4. HTC J Butterflyでも動きました.ありがとうございます.
    ただ,バッテリーアイコンの画像を差し替えようとapk manager,apk multi toolを用いてもエラーが出てしまいデコンパイルができませんし,7-zipで画像を差し替えてもインストール時にエラーが出てしまいます.
    どうすればよいでしょうか.

    返信削除
    返信
    1. デコンパイル時にどのようなエラーが出るのでしょうか?ログとか出力されていませんか?

      削除
    2. ご返信ありがとうございます。
      apk multi-toolでのログは以下のようになっています。
      java version "1.7.0_04"
      Java(TM) SE Runtime Environment (build 1.7.0_04-b22)
      Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
      I: Baksmaling...
      I: Loading resource table...
      I: Loaded.
      I: Decoding AndroidManifest.xml with resources...
      I: Loading resource table from file: C:\Users\keiichiro\apktool\framework\1.apk
      I: Loaded.
      I: Regular manifest package...
      I: Decoding file-resources...
      W: Could not decode attr value, using undecoded value instead: ns=android, name=layerType, value=0x00000001
      W: Could not decode attr value, using undecoded value instead: ns=android, name=layerType, value=0x00000001
      I: Decoding values */* XMLs...
      Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x0105000e
      at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61)
      at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:58)
      at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:54)
      at brut.androlib.res.data.value.ResReferenceValue.getReferent(ResReferenceValue.java:62)
      at brut.androlib.res.data.value.ResReferenceValue.encodeAsResXml(ResReferenceValue.java:46)
      at brut.androlib.res.data.value.ResScalarValue.encodeAsResXmlValueExt(ResScalarValue.java:86)
      at brut.androlib.res.data.value.ResScalarValue.encodeAsResXmlValue(ResScalarValue.java:55)
      at brut.androlib.res.data.value.ResScalarValue.serializeToResValuesXml(ResScalarValue.java:95)
      at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:440)
      at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:243)
      at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:115)
      at brut.androlib.ApkDecoder.decode(ApkDecoder.java:114)
      at brut.apktool.Main.cmdDecode(Main.java:146)
      at brut.apktool.Main.main(Main.java:77)

      このログのうち、

      W: Could not decode attr value, using undecoded value instead: ns=android, name=layerType, value=0x00000001

      でgoogle検索してみたところ、xdaのスレッドのみ1件がヒットしました。ただ、このスレッドでも解決はしていないようです。
      ほかにヒットしたサイトもなく、どうすればいいかもわからない状況です。

      他のユーザーアプリのデコンパイルには問題なく行えています。

      環境はWindows7 64bitで、JAVA(ver.7 update40)、Android SDKなどはあらかたインストール済みです。

      削除
    3. HTC端末を持ってないのでよく分からないのですが、apktool ifコマンドでcom.htc.resources.apkをあらかじめインストールしてあるでしょうか?またframework-res.apkとSystemUI.apkは同じ端末のものを使用していますか?

      削除
  5. はじめまして。Statusbar Patcherありがたく使わせてもらってます。
    Xperia A(SO-04E)Android 4.4.2にて通知アイコンの大きさをmaxにすると大きくなりすぎてアイコン同士が重なるようなんですが、これは修正可能なのでしょうか?

    返信削除
    返信
    1. バージョン0.4.1に更新してみたので試してみてください。

      削除
    2. ありがとうございます。問題なく表示されました。

      削除
  6. 初めまして。
    突然の質問、お許しください。
    nexsu6端末を使用しているのですが、ステータスバーに表示されているwifiおよび4G/3Gアイコンを変更し、データ通信中の矢印も表示できるようにしたいと考えております。
    可能でしょうか?
    android studioやapk multi toolなども調べてみたのですが、複雑すぎて挫折してしまいました。
    ご多忙とは存じますが、簡単に変更できる方法をご教示いただけないでしょうか?
    勉強するつもりもありますので、よろしくお願いいたします。

    返信削除
    返信
    1. 変更は可能だと思いますが、私自身がすでにrootを取って何かする事をやめてしまったので、モジュールを作成する予定はありません。

      まずはXposed Installerをインストールして、変更できそうなモジュールを見つける事から始めるのがいいと思います。
      http://repo.xposed.info/module/de.robv.android.xposed.installer

      以下のサイトに使えそうなモジュールのリンクがあるようです。
      https://androplus.org/Entry/90/

      あとはXDA Developersあたりのサイトを検索すると何か良いモジュールが見つかるかもしれません。
      http://www.xda-developers.com/

      もし自分でモジュールを作りたいのであればXposed Frameworkについて調べてみてください。

      削除
  7. お世話になります。
    早速のご返信、心より感謝いたします。
    xposed moduleに関しましては、何日も探しまくりましたが、目的のものを見つけることはできませんでした。
    xstanaやflat style bar indicatorというmoduleにてアイコンを変えることはできましたが、データ通信状態を示す矢印(up/down)を表示させることはできませんでした。
    またxposed statusbar mods-sgsなるものを発見しましたが、googole nexusには非対応のようです。
    あと、xposed moduleではありませんが、データ通信ステータスというアプリがありました。作者もパケット通信状態を示す矢印を表示させたくて自ら作ってしまったようです。このアプリはデフォルトのアイコンを変更するのではなく、新たにアイコンを表示させるアプリのようで、ステータスバーの左側に希望通りのwifiアイコンを表示させてくれました。しかし、3G/4Gアイコンに関しては、nexus6固有の問題なのか?表示させることができませんでした。タスクキラー系アプリを使用していると表示できないようなことが記されていましたが、私の端末にはインストールしておりません。データ通信ステータスアプリのどこかをを修正することで可能かもしれませんが方法が分かりません。お時間があればアドバイスいただけたらと存じます。
    とりあえずXposed Frameworkについて真剣に調べてみます。
    ご迷惑かもしれませんが、またコメントさせてください。

    返信削除