2011年10月22日土曜日

Motorola Droid3とBionicにCyanogenMod7を焼いてみた



Hash of Codes: How CM7 fell onto my Droid 3 (and possibly yours too)
Hashcodeさんスゲー!

とりあえず動くってレベルでsdcardが使えなかったりカメラが使えなかったりします。
このROMというかHashcodeさんmethodの凄い所は既存の/systemを維持したままCustomROMをインストールする事が出来るという事。
ROMはpreinstall領域に入ります。/dataや/cacheは今までと同じパーティション。

DroidBionicにはWebtop用のパーティションも用意されているため、このパーティションを/dataとしてあげれば2つのROMを共存させる事も可能かと思います。(Droid3の場合、/dataのnandbackupを取り、使いたい方のROMをリストアするという形になります、現状)

Webtop使わないなら…ですがね。まぁsdcardにextパーティション切ってそこにWebtop入れるなり/dataをextに入れるなりいくらでもやり方はあるかと思いますが。

たのしくなってきたで!

2011年9月17日土曜日

Motorola Droid3 XT862にClockworkModRecoveryがやってきた



Thx!! Hashcode

Hash of Codes: Droid 3 Bootstrap

Droid3Bootstrap.apkをインストールし実行、Install Recoveryボタンを押下すればOKなお手軽仕様

CWMRecoveryへの入り方は
1)電源断
2)M+Powerで起動
3)BP ToolsまでVolDownキーで移動
4)VolUpを押し、BP Toolsを選択
5)しばらくするとCWMRecoveryが起動する

これで準備は整いましたね…

2011年9月15日木曜日

[update]Motorola Droid3 XT862 Battery1PercentStepMod



DROID3XT862 5.6.890 Battery1PercentStepMod v2

Update
11/09/27 originalのBatteryService.smaliとmod版のsmaliファイル置いておきますね。
source(smali)
#海の向こうの人にservices.odexまるパクリされて「俺が作った!」言われてだね…そーいうのやめれ。


イマイチだった部分、BatteryFullStateが95%の段階で発出される件とBatteryピクトの表示がこれまた95%でFull表示される問題の修正を行った。

まず先にピクト表示の件、getIcon methodの修正箇所について

.method private final getIcon(I)I
.locals 5
.parameter "level"

.prologue
.line 526

iget v2, p0, Lcom/android/server/BatteryService;->mBatteryLevel1Step:I
const/16 v3, 0x64
const/16 v4, 0x5

iget v0, p0, Lcom/android/server/BatteryService;->mBatteryStatus:I

if-ne v0, v4, :cond_3
if-ge v2, v3, :cond_4

const/16 v0, 0x2

:cond_4
:cond_3

const/4 v1, 0x2

if-ne v0, v1, :cond_0

.line 527
const v0, 0x10802eb

.line 533
:goto_0
return v0

.line 528
:cond_0
iget v0, p0, Lcom/android/server/BatteryService;->mBatteryStatus:I

const/4 v1, 0x3

if-eq v0, v1, :cond_1

iget v0, p0, Lcom/android/server/BatteryService;->mBatteryStatus:I

const/4 v1, 0x4

if-eq v0, v1, :cond_1

iget v0, p0, Lcom/android/server/BatteryService;->mBatteryStatus:I

const/4 v1, 0x5

if-ne v0, v1, :cond_2

.line 531
:cond_1
const v0, 0x10802d5

goto :goto_0

.line 533
:cond_2
const v0, 0x10802f2

goto :goto_0
.end method


BatteryStatusはこんな感じ
BATTERY_STATUS_UNKNOWN = 1/CHARGING = 2/DISCHARGING = 3/NOT_CHARGING = 4/FULL = 5
になっており、上記コードでは

const/4 v1, 0x2

if-ne v0, v1, :cond_0

const v0, 0x10802eb

:goto_0
return v0

:cond_0

の部分が判定式になっとります…v1にBatteryStatus、上のだとCHARGING = 2が入ってその下のif-neで判別。
const v0, 0x10802ebって部分はjavaのコードだと「com.android.internal.R.drawable.stat_sys_battery_charge;」な部分

今回追加で処理を入れたのはこの部分

iget v2, p0, Lcom/android/server/BatteryService;->mBatteryLevel1Step:I
const/16 v3, 0x64
const/16 v4, 0x5

iget v0, p0, Lcom/android/server/BatteryService;->mBatteryStatus:I

if-ne v0, v4, :cond_3
if-ge v2, v3, :cond_4

const/16 v0, 0x2

:cond_4
:cond_3

元々はiget v0, p0, Lcom/android/server/BatteryService;->mBatteryStatus:IとmBatteryStatusをv0にぶち込むだけの所なのだがコレに
mBatteryStatusがFullかつmBatteryLevel1Stepが100%未満だったらmBatteryStatusをChargingに置き換えるという処理を入れてる。


次はIntentを投げてるsendIntent

.method private final sendIntent()V
.locals 8

.prologue
.line 397
new-instance v2, Landroid/content/Intent;

const-string v3, "android.intent.action.BATTERY_CHANGED"

invoke-direct {v2, v3}, Landroid/content/Intent;->(Ljava/lang/String;)V

.line 398
.local v2, intent:Landroid/content/Intent;
const/high16 v3, 0x6000

invoke-virtual {v2, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;

.line 401
invoke-direct {p0}, Lcom/android/server/BatteryService;->getBatteryLevel1Step()V
iget v3, p0, Lcom/android/server/BatteryService;->mBatteryLevel1Step:I

invoke-direct {p0, v3}, Lcom/android/server/BatteryService;->getIcon(I)I

move-result v1

.line 403
.local v1, icon:I
const-string v3, "status"

iget v5, p0, Lcom/android/server/BatteryService;->mBatteryLevel1Step:I
const/16 v6, 0x64
const/16 v7, 0x5

iget v4, p0, Lcom/android/server/BatteryService;->mBatteryStatus:I

if-ne v4, v7, :cond_2
if-ge v5, v6, :cond_3

const/16 v4, 0x2

:cond_3
:cond_2

invoke-virtual {v2, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

.line 404
const-string v3, "health"

iget v4, p0, Lcom/android/server/BatteryService;->mBatteryHealth:I

invoke-virtual {v2, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

.line 405
const-string v3, "present"

iget-boolean v4, p0, Lcom/android/server/BatteryService;->mBatteryPresent:Z

invoke-virtual {v2, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

.line 406
const-string v3, "level"

iget v4, p0, Lcom/android/server/BatteryService;->mBatteryLevel1Step:I

invoke-virtual {v2, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;



解説面倒くさいからソースから読み取って下さい 糸冬

書き換えてるのは3箇所で、
1)invoke-direct {p0, v3}, Lcom/android/server/BatteryService;->getIcon(I)Iのv3の値を1%stepの値に
2)status投げてる所をさっき書いたBatteryピクトで割り込ませたのと同じ処理させてる
3)levelを1%stepのものに

元ネタはmeyskldとかいう人のこれ
あれ - Motorola Milestone2のBatteryLevelを1%Stepにしてみた


( ó㉨ò)もっとスマートな実装したいっすね…

2011年9月12日月曜日

Motorola Droid3 XT862のBatteryLevelを1%Stepにしてみた



smaliのコードは以前書いたコレと同じ
Motorola Milestone2のBatteryLevelを1%Stepにしてみた

インテント飛ばしてる場所だけちょいと違うのでメモ
/smali/com/android/server/BatteryService.smali

#iget v4, p0, Lcom/android/server/BatteryService;->mBatteryLevel:I

invoke-direct {p0}, Lcom/android/server/BatteryService;->getBatteryLevel1Step()V

iget v4, p0, Lcom/android/server/BatteryService;->mBatteryLevel1Step:I

invoke-virtual {v2, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;


需要あるか分からんがとりあえず置いておく…
DROID3XT862 5.6.890 Battery1PercentStepMod http://bit.ly/om3w7W

2011/09/13 追記
基本的にはこの処理で問題無い感じではあるのだがイケてない、95%でBatteryFullです通知出るのでそのうちなんとかします…

2011/09/14 めも…
こんな感じの処理を追加した…あまり自信無い…

const-string v3, "status"

invoke-direct {p0}, Lcom/android/server/BatteryService;->getBatteryLevel1Step()V
iget v5, p0, Lcom/android/server/BatteryService;->mBatteryLevel1Step:I
const/16 v6, 0x64
const/16 v7, 0x5

iget v4, p0, Lcom/android/server/BatteryService;->mBatteryStatus:I

if-ne v4, v7, :cond_2
if-ge v5, v6, :cond_3

const/16 v4, 0x2

:cond_3
:cond_2

invoke-virtual {v2, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

2011年9月10日土曜日

Motorola Droid3 XT862のフルリカバリが可能に



systemファイルいじり放題だね!

[Recovery] RSD v5.4.3 and 5.5.184 (aka 5.6.890) fastboot partitions/flashable zip

手順


1.電源を落とす
2.キーボードのMを押しながら電源を入れる
3.VolDownキーでAP Fastbootまでカーソルを移動させる
4.VolUpキーを押下し、Fastbootモードに入る。

5.swu.zipを解凍する。
6.RSDLiteを立ち上げ、VRZ_XT862_5.5.1_84_D3G-55_1FF_01.xmlを選択
7.Droid3をPCに接続し、RSDLiteがDroid3を認識する事を確認する。
8.下のリストに表示されているDroid3を選択
9.Startボタンを押下
10.コーヒーでも飲みながら焼きあがるのを待つ

ここもダメだよ! TOSHIBA IS12T au by KDDI


ナニ芝さんでしたっけ?製造してるの?

検索ボタンの動作がダメ



PeopleHubを開いた時の画面です。
アドレス帳検索しようと思った際、ナビキーの検索ボタン(物理キーの方)を押したくなると思いますが押しちゃダメです、押すとbingが立ち上がります…
画面上に表示されている検索ボタンとナビキーのボタンの挙動が異なるのはイマイチすぎです、MSさん…

日本語の扱い



設定の「地域&言語」で表示言語と地域設定を日本語以外にするとちょっと悲しい事になります…
アルファベット表記の方がカッコイイというか日本語表記だとダサすぎると感じる人、結構多いかと思いますが、

表示言語に日本語以外、例えばEnglishを設定するとUIが英語表記になるのですが日本語が中華フォントで表示されるようになります…

地域設定の方に関しては上の写真を見ていただければ分かるかと思いますが、アドレス帳などがアルファベットとその他という扱いになり、日本語で名前が登録されている人は全部地球アイコン?に入ってしまいます。

上手く説明出来ないのですがUIダサいの我慢して全て日本語設定で使うのが良いのかなと…

Office2003形式の文書が編集出来ない




ななふぉ - Windows Phone 7.5 は Office 2003 形式の文書を編集できない

Office 2003形式の文書がメインの企業って多いと思います…ウチも2003ですね。
この辺の扱いについては売り手側もあまり理解できていなく、「2003形式も編集可能ですよ!」と説明していたショップもあったそうです、フォロワーさん曰く



Androidですらマトモな対応が出来ないショップが多い中、このタイミングでWP7出すって何考えてるんでしょうかね…