2012/06/13

ICS 画面OFF時の通知LED

ICSで画面OFF状態でメールなりリプライなりメンションなり受信しても通知LEDは点滅しない。
本家も認めるバグらしい。




なんとかならないものかなぁとLogと睨めっこしてて分かった事。
Gmailなりなんなり受信すると
set_light_notification : color=0xff00ff00, mode=1
↑こんなのが動いてる。

何で制御してるんだろ?とそのまんまでググったら
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/com/android/server/NotificationManagerService.java
↑こんなとこに行き着く・・・
com/android/server/NotificationManagerService・・・Pathか?

com/android/server/NotificationManagerService・・・framework.jarあたりかなぁ?
とりあえず解体。
framework.jarにはなかった。

ならどれだろう?serviceだからservices.jarかなぁ?と思って解体してみたらあった。
ICSのservices.jarだけ見てても分からないから、GBのservices.jarも解体して比較。
すると、
NotificationManagerService.smali
NotificationManagerService$2.smali
この2つ(だったかな?)に違いがある。

試しに、NotificationManagerServiceと名のつくsmaliファイルを全てGBのものに入れ換えてコンパイル。
で、端末に適用してみた。
無事に起動したのでとりあえずOK。
試しにGmailにメール送信して確認(端末は画面OFF状態)

LED点滅した!

でも、他に不具合があるかもしれないから、この状態で1日常用とする。
※2012/6/18追記
通知をスワイプで消そうとすると・・・再起動してしまう・・・
GBのそのまま上書きしたから当然か。
で、ICSとGBの差分を見てると、違いがありすぎてさっぱり・・・
どこからどこまで移植すればいいのか・・・
わからん。

※2012/6/22追記
修正版が創造されていました。
http://forum.xda-developers.com/showthread.php?t=1723749

ただ僕の場合、V6 SuperChargerが有効なservices.jarらしいので、このままだと消えてしまう。
http://forum.xda-developers.com/showthread.php?t=991276
↑ここを参考に有効な状態にして焼いたところ画面OFFでもLED点滅しましたとさ。

14 件のコメント:

  1. 検証お疲れ様です
    よろしければcwmパッチとして公開して頂けると嬉しいです

    返信削除
    返信
    1. コメントありがとうございます。

      バグというのか、不具合がありましたので公開などとてもできません。
      不具合が修正できればあるいは・・・

      削除
  2. そうでしたか(^^;
    改修の目処が立つようでしたら…宜しくお願いします

    返信削除
  3. 素人考えですが、該当ファイルを4.0.3の物と差し替えるとかどうでしょうか?

    返信削除
  4. V6 SuperChargerを導入していないとLEDFIXが効かないという事でしょうか?
    V6 SuperChargerの導入がイマイチ良く分からないので合わせて教えていただけるとありがたいです

    返信削除
    返信
    1. そのままでもいいと思いますよ。
      念の為、バックアップしておけばなんら問題ないはずです。

      削除
  5. services.jarを差し替えるだけですよね?
    バックアップして試してみます・・・

    返信削除
  6. Services.jarを差し替えても通知Led点灯しないですね;
    もう少し試行錯誤してみます

    返信削除
  7. 焼き直ししても改善せずorz
    >V6 SuperChargerを有効な状態にして
    この作業が抜けてるから使えないのでしょうかね・・・
    http://forum.xda-developers.com/showthread.php?t=991276
    上記リンクを読んでも具体的な作業が分からずお手上げです;

    返信削除
    返信
    1. なんとなく思った事です。
      odex環境にdeodex入れちゃったってオチじゃないですよね?
      違うと思いますがなんとなく。

      削除
  8. コメントありがとうございます。

    android.policy.jar、apache-xml.jar、bouncycastle.jar、core.jar、core-junit.jar、ext.jar、framework.jar、services.jar
    以上をodex化して、それぞれのodexファイルも削除して再起動すると
    com.phoneやら沢山のファイルがエラーを吐いて操作できない状態になります;;
    framework内の差し替えだから、BLアンロックではダメとかないですよね?

    返信削除
  9. odex>deodex化の誤りです^^;

    返信削除
    返信
    1. deodexはロックもアンロックも関係ないはずですよ。
      エラー吐くのはdeodexに失敗してるのかな?と・・・わかりませんが。

      削除
    2. 新たにリリースされてたパッチですんなり点くようになりました
      お騒がせして申し訳ありませんでした

      削除