2012.04.01

Galaxy Nexus SC-04D SIM Unlock

SIM  ロック解除でハマったので、メモ。
バックアップとかは、androidlover.net 様のがすごくわかりやすかったです。ありがとうございます。

■とりあえず、一回ブートしないと、clockworkrecovery でバックアップできない。

■clockworksrecovery でバックアップして、PCにコピー
<http://androidlover.net/smartphone/galaxynexus/sc-04d-clockworkmod-backup.html> を参考にさせてもらった

■radio.img もバックアップ
<http://androidlover.net/smartphone/galaxynexus/sc-04d-radio-img-backup.html> を参考にさせてもらった

■/factory もバックアップ
busybox を入れて
busybox cp –fr /factory /sdcard/hoge
adb pull /sdcard/hobe

■SIM Unlock
とりあえず、
http://forum.xda-developers.com/showthread.php?t=1548008
を実行して Unlock(Forever) ボタンではない方の Unlock ボタン押して、
Unlock(Rest or flash ROM will lock again) ボタン押せば、外れた。

でも、、、
この状態で、AOSP な 4.04 <http://rootzwiki.com/topic/21620-aosp-404-stock/> を焼いたら、Lock 状態になってしまった。(Unlock用のPINを聞かれてしまう)
そのまま FuckDocomo.apk を実行してリブートしてもダメ。
(で、ここから2時間ぐらいハマってた^^;;)

/data/radio/nv_data.bin と /data/radio/nv_data.bin.md5 を消して(factory reset とかしたら消えるファイルなので消しても大丈夫なはず)、/factory/nv_data.bin と /factory/nv_data.bin.md5 を元に戻して、リブートしたら、/factory 以下は変化なく、/data/radio 以下には nv_data.bin, nv_data_bin.md5 が作られて、正常な Lock 状態になった。(と思う)

けど、その後、FuckDocomo.apk を実行してリブートしても、Unlock できず。。
/factory/nv_data.bin とかの permission とか owner とか間違えたのかと思い、何回かやったけどダメ。

色々彷徨ったところ、
/data/radio/log/nv.log を見ると、

Sun Apr  1 08:56:59 2012: MD5 fail. orignal md5 '005f00474a6837340124397fc80804bc' computed md5 '83f9e3b0e642733b8f291fa98cf0e1a2' (rild)

みたいなログが残ったいた(FuckDocomo.apk が書き換えた md5 が間違ってる??)

ので、FackDocomo.apk が書き換えた /factory/nv_data.bin はそのままにして、/factory/nv_data.bin.md5 を log 通りに書き換えるべく

mount –o remount,rw /factory
echo 83f9e3b0e642733b8f291fa98cf0e1a2 > /factory/nv_data.bin.md5
chmod 700 /factory/nv_data.bin.md5
chown radio.radio /factory/nv_data.bin.md5
sync
rm /data/radio/nv_data.bin
rm /data/radio/nv_data.bin.md5
reboot

とやってみた(↑は今手で打ったから間違ってる可能性あり、意味的にはこうしたはず)ら、Unlcok 状態になったっぽい。
rm /data/radio/nv_data.bin & md5 をしてリブートしても問題ないってことは、IMEI を維持したまま permanent に unlock 出来た気がするな。

その後、ソフトバンクの水色SIMで特に問題なく使えている。
デフォルトの APN の andglobal.softbank.ne.jp が IMEI 規制で使えず(元々使っていた Desire HD なら当然使える)、opensoftbank.ne.jp しか使えないが、今のところパケットし放題MAXの定額内に納まっている。いつ青天井に変わるのか不安ではあるが、、、

| | コメント (0) | トラックバック (0)

2012.03.20

Fusion PCB に発注してみた。SparkFun.lbr が便利。

Eagle で回路を書こうとしたけど、部品が多すぎて、いったいどれを使えば良いのかわからなかった。個人でも容易に入手できる部品だけ使いたいので。

で、いろいろ探したところ、SparkFun-Eagle-Library (SparkFun.lbr) というのが見つかった。たぶん、これを使えば全て SparkFun で購入できる部品で回路を組めるんだ、と思ったら回路を組むのが楽しくなって、一気に Fusion PCB に発注するまでやってしまった。
(readme を読むと、Eagle 6.0 以上はこっちを使うのが正しいらしい。また、使ったら SparkFun でなんか1つ買ってとのこと。 )

以下、悩んだところのメモ。
(発注方法についてはぐぐると親切なページがいっぱい出てきてすごく助かりました。)

■まず基板サイズを設定する方法がわからず
Grid で、Size: 10 mm にして、layer の 20 Dimension に Width=0 で 5cm x 5cm とか 10cm x 10cm の正方形を描いてその中に収めるようにした。(Fusion PCB では、5cm x 5cm で $9.90 + 送料、メチャ安!)
描いたら直ぐに mil 単位に戻しておく。mil 単位にしておかないと Auto での配線ができないっぽい。Grid は、Size: 25mil,  Alt: 12.5mil にしたけど、これでいい?
結局、ちゃんとした基板サイズの設定方法はわかってないけど、自分で描いた枠内に収めればいいのだろうと思う。

■回路図の配線
よくわからんけど、Wire ではなく Net を使わないと接続されないことがあった。特にジャンパピンへの接続。

■配線は面倒なので名前で接続
部品からちょこっと配線を出して、それに Name ボタンで名前を付けて、他の部品の繋げたい部分にも同じようにちょこっと配線出して、同じ名前を付ければ、見た目は繋がってなくても、ちゃんと繋がるみたいだった。48pin のマイコンを使ったので全部配線するなんて面倒だったからほとんど名前だけで繋いだ。

■Auto ボタンでの配線
Routing Grid がデフォルトの 50 じゃ、半分以上配線してくれなかった。最終的には 4 まで細かくして配線した。この結果が Fusion PCB で受け入れられるのかは不明&心配だけど、Drc でのチェックは問題無いので、大丈夫なのかな?どうなんだろ?
パスコンだけは最短で繋ぎたいので、先に手動で配線して、残りを Auto ボタンで配線した。

■Drc
Drc ボタンで、デザインルールをチェックしてくれる。ちょっと配線間が狭いとエラーを吐いてくれるので、こまめに Drc をやるのがよさげ。
Fusion PCB のホームページから落とした Fusion_eagle_rule_v1.1.dru では、Wire-Wire 間とか、6mil になっていたけど、6mil は危ないという情報もあったので、全部 7mil に変更して使った。8mil を推奨としているホームページもあったが、8mil にすると自動配線した配線がそこら中エラーになったので 7mil にした。

■シルクのフォント
proportional と vector が選べるが、vecot にしないとガーバーデータにした時にずれるようだ。
サイズがよくわからないのだけど、シルクは 6mil でもくっきりとのことなので Size=32, Ratio=20% (32x20% = 6.4mil) で描いてみた。どうなるのかは基板が届かないとわからない。

■フォントとかその他色々変更するのは i ボタン
フォントがやけに小さくなる部品があって、大きくする方法に悩んだが、i ボタンで部品を選べばフォントサイズを選べた。

■面付けとVカット
Fusion PCB では面付けが禁止されているらしいが、かなりソフト屋さんな私にとっては、面付けの意味がわからなかった^^;;
同じ回路を一枚の基板に複数入れることを面付け、違う回路を複数入れることを異種面付け、それらを切り離すための溝を掘ることをVカットと言うらしい。
結果的には、異種面付けになって、ジャンパピンの穴を並べて切りやすくしたものになったが、これは問題無いのだろうか?穴を並べておけばリュータで軽く削れば簡単に折れると思ってやってみたのだが、受け付けてくれるだろうか?

image

■その後
3/20 20:30 ぐらいにメールしたのが、
3/21 10:50 に Status=Processing になって、
3/21 17:05 に In production になった。
3/26 17:53 に Shiped になった。
3/27 10:51 に Traceable になった。でも trace はできず。1-3 days かかるらしい。
4/1 trace できないなと思ってたら、到着した。トータル12日。はやっ。全ての基板の横にマジックで線が引かれてるので全部チェックしてくれたっぽい。本来は5枚だけの筈だが。シルクは輸送時の揺れでこすれたのか基板によっては消えかかってるなぁ。

| | コメント (0) | トラックバック (0)

2011.07.16

ハズレHDD その2

http://salt.air-nifty.com/salt/2011/06/hdd-cc00.html
のその後、、、

突然、
image
こんなダイアログが出てきた。
HDD の問題を検出したからバックアップしろと。

CrystalDiskInfo では、
image
こんな感じで、代替処理済みセクタ数は 711 から 1870 まで増えてる。。。

これ、もうだめなのかな??

| | コメント (1) | トラックバック (0)

2011.06.05

ハズレHDD

GWに買った 2TB HDD が妙に遅いので CrystalDiskInfo で見てみたら、

image

こんな状態;;
まだ、電源投入 19 回なのに、代替処理済みセクタ数 2C7h=711 ってどういうこと?
容量多いから壊れるセクタも多いのだろうけど、1270 回電源投入してる SSD は0だよ。いつもハイバネで8GBを書き込んでる SSD の方が壊れやすそうなのに。

| | コメント (0) | トラックバック (0)

2011.04.29

超音波洗浄器

シチズン超音波洗浄器SW1500を買った。
メガネ無しでは生きていけないで^^;;
もう数カ月前のことだけど。

で、ふと、ビールを入れたら細かい泡が立つのでは?と思って、やってみたら、すごい!
缶を一瞬浸けるだけで、超細かい泡が溢れてきて、大変なことになってしまったw
味はすごくマイルドになっていい感じ。

じゃ、ワインは?と思って、瓶(ハーフボトル)を1分ぐらい浸けたら、、、ちょっと甘くなった。いや結構甘くなって濃厚になってるかも?

 

肝心のメガネは、「振動子を2個使用している為、両眼レンズに気泡効果を発揮」と書かれている通り、両眼レンズはかなり綺麗になる。(ぬるま湯にして、台所用中性洗剤を数滴垂らすのがミソ)
だけど、一番汚れる鼻当ての部分が振動子から一番遠いので、いまいちな感じ^^:
鼻当て掃除には振動子1個のやつのがいいかもしれない。

。。。ということで、夕方6時というのに、ビール&ワイン三昧でベロベロになってたのでしたw

| | コメント (0) | トラックバック (0)

2011.04.27

ガイガーカウンターのキットはおかしい

自分でガイガーカウンターの回路を組めるようになると、この前買ったガイガーカウンターのキット (Chaney electronics の c6979) の回路がおかしいことがわかってきた。

息を吹きかけるだけでLEDが点きっぱになって反応しなくなるし、25mA も食ってるから、おかいいとは思ったのだが。

こういう商品の回路図を晒していいのかよくわからないが、$89.95 もする割には酷い回路だと思うのでさらしてみる。(値は別紙だし問題無いはず。)
CIMG2230
まず、高圧側のグランドが浮いている。なのに信号検出する FET (Q2) も TR (Q3) もグランドは低圧側のグランドに繋げている。トランス (T1) の中の浮遊容量で結合されているのだとは思うが、そんな結合をあてにされた回路じゃ困る。温度や湿度にすごく依存してしまう。息を吹きかけただけで動作しなくなるのは、このせいだと思う。自分の回路ではグランドは共通にして安定しているし、他の回路を見ても共通になっているのしか見つからない。

高圧側の電圧を平滑するコンデンサーが無い。1KV 3300pF なコンデンサをを付けるだけで、結構安定するようになった。いくつかのガイガーカウンターの回路を見たが、省略しているのはこのキットだけ。平滑しないと電圧が下がったタイミングでは検出ができないはず。電力ももったいない。

高圧発生用のパルスはタイマー IC 555 から出してるが、6pin と 7pin を直結してるのはおかしい。小学生の頃から 555 を使ってるので、なんとなくおかしいと感じただけだけど、秋月のキットの回路を見ると 100Ωが入っていて、100~180Ωの間で調整することになっているので、やっぱりおかしいと思う。この抵抗でパルス幅を決める。値はトランス (T1) に依存するので、0Ωでもいいと言えばいいもかもしれないけど、、、

GM 管のアノード側の抵抗 (R3) が低すぎる。100KΩになってる。GM 管 (SBM-20) の仕様では 1MΩ~5MΩ となっているし、実際に自分の回路では 1MΩ ではパルスが割れて2回検出されることがあり、3MΩは無いと安定しなかった。

。。。と、おかしいおかしいと書いてみたが、超ソフト屋な私はハードのことはたいしてわかってないので後学のためにツッコミを期待します。。。

自分の回路は、こちら

| | コメント (11) | トラックバック (0)

ガイガーミュラー管、検出時の波形。

ガイガーミュラー管、検出時の波形。
携帯から投稿テスト。その3。
もう少し写真のサイズを小さくしてみた。このサイズなら100KB以下だ。

放射線当たると一気に電流流れて、10Kを通したところに発生する電圧で1815をOnにしてLowにしたところ。HighのところはTiny45の内部の弱pull-up。(黄色の線)

それを割り込みで受けて、PWMをOnにしてBeep音発生。たち下がり判定をソフトでやってるのに意外と反応速い。(水色の線)

| | コメント (0) | トラックバック (0)

2011.04.25

自作回路でガイガーカウンタ

自作回路でガイガーカウンタ
携帯から投稿テスト。
画像がでかいと失敗するのね。数MBぐらい許してくれよ。縮小するの面倒だよぉ。

自作回路でガイガーカウンタが動いた。
この前買ったキットはカウントできないから、カウントしてUSB経由で読めるようにしてみた。
AVR Tiny45だけでV-USBでHID I/Fと高圧用パルス発生と割り込み受けてカウントとBEEP周波数生成してる。

| | コメント (0) | トラックバック (0)

2011.04.23

FRISK レーザーポインタ

FRISK レーザーポインタ
携帯からの投稿テスト。
少し前に流行った FRISK レーザーポインタを作ってみた。

| | コメント (0) | トラックバック (0)

2011.04.21

ガイガーミュラー管

昨日、ebay で買おうと思ってたGM管が、1日で40個売れたみたい;;
買っときゃよかったなぁ。。
この人送料$11だったから最安だったのに。。
image

でも、SBM-20 は元々は一本$7ぐらいみたいだよ。3倍以上になってるね。。。

| | コメント (0) | トラックバック (0)

2011.04.16

ガイガーカウンター

ガイガーカウンターのキットを買ってみた。
まだまだ漏れてきそうなので。

買ったのはこれ。$89.95+送料$33=$122.95 で、約1万円。
日曜夜に注文して、金曜夜には届いていた。(受け取ったのは土曜昼だけど)

こっちは$10安いけど送料が$50。2つ買うならこっちだね。

どっちにしても、内容からすると無駄に高い。GM管 (SBM-20) は、ebay で値上がりしてる状態で $30 ぐらいだし、昇圧回路は数百円で作れそうだしね。(トランスは入手性が悪いから、「写ルンです」とかから取ることになりそうで面倒だけど。)

まぁ、流行りだからしょうがない。国内で売ってるのはもっと無駄に高いしね。
このキットはまだ通常価格で売ってるので良心的。今のうちに買っておくべきかもよ?

キットの外観
CIMG2215

ガイガーミュラー管
CIMG2218 
完全に金属で覆われてるので、α線には反応しない、β線も強いのしか反応しないらしい。
でも、大きいので感度はいいらしい。秋月のは小さくて感度が悪いので、これに置き換えるだけで性能上がるらしい。

30分ぐらいで完成。
CIMG2221 
上部の銀色の四角いのはブザー。こんなのは初めて見た。秋葉でも見たこと無いよね。Made in UK でした。

消費電力は 9V で 25mA ぐらい。
もう少し抑えれる気がするのだが、どこで食ってるのだろうか??
006P が 500mAh ぐらいだとすると、20時間ぐらいは使えるけど。

このキット、高圧側のコンデンサーが省かれているのだけど、問題無いのだろうか?
他の回路を見てると、みんなコンデンサーで平滑してる。
今のままだと電圧下がってるタイミングで入ってきた放射線には反応しない気がするな。後で、フラッシュ用のコンデンサを付けてみるかなぁ。

| | コメント (0) | トラックバック (0)

2011.02.19

他人様の Android アプリを覗いてみよう

いつの頃からか知らないけど、Android SDK に dexdump.exe が付いてることに気付いた。

昔は、Device 側にしか無かったので、disassemble しようと思うと、Windows 上で classes.dex を抽出して、Device 側に push して、dexdump して、Windows 側に pull する、という面倒なことが必要だった。
(たぶん、Device 側にあったというのも DevPhone だったからだと思う。市販 Device の ROM には入ってないと思われる。(少なくとも Desire HD には入っていない。))

でも、Windows 側にあるならメチャ簡単じゃん、ということで、Windows 上で disassemble する方法のメモ。

■他人様の Android アプリを取り出す
/data/app/* か /data/app-private/* にアプリの apk が入っているので、それを
adb pull /data/app/hoge.hige.hage.apk .
として取り出す。
rooted じゃないと取り出せないはず。
/data/app/* の方は、ファイル名(たぶん、パッケージ名-1.apk)が分かれば取り出せる気もする。

■classes.dex を取り出す
取り出した hoge.hige.hage.apk を hoge.hige.hage.zip に名前を変えて、解凍して、classes.dex を取り出す
device 側の /data/dalvik-cache/* にも *.dex があるから、これを取り出した方が早いかも?

■dexdump.exe にかける
<SDK_DIR>\platforms\android-8\tools\dexdump –d –f –h classes.dex > undex.txt
とするだけ。
<SDK_DIR> は、c:\android-sdk とかインストールしたところ。 
オプションは適当に。
<SDK_DIR>\platform-tools に path を通してると思うけど、ここにある dexdump.exe はちゃんと逆汗してくれない気がする。ので、フルパスで書いて platforms 以下のを使った方がいい。

最近は、ProGurard かけられてるのが多いから、簡単には理解できないけど、まぁ、勉強にはなると思う。
とりあえず、invoke- (invoke-virtual, invoke-static, invoke-super, invoke-direct とかがある)で検索すれば、処理の流れはわかるよ。

#hoge, piyo, fuga, hogera とするのが一般的だよな。
#hoge, hige, hgae は変だと思う。結構使うけどw 見分け難いし使うべきじゃないよね。
#やっぱ、foo, bar, baz, qux だよなとは思ふ。

| | コメント (1) | トラックバック (1)

2011.02.02

Android Emulator から PC 側の localhost へ

Android Emulator から、Google App Engine のローカルサーバ (localhost) にアクセスしたくて、悩んだのでメモ。
#30分以上悩んだよ^^; 呑んでるとダメだわ^^;

Android アプリ上で、new HttpPost(“http://localhost:8080/”) とやっても、Android Emulator の中の 127.0.0.1 に行ってしまう。

Google App Engine の設定で --address=0.0.0.0 として GAE アプリを起動して、Android アプリ側で new HttpPost(“http://0.0.0.0:8080/”) とやっても、host は見つからず。

かといって、--address=192.168.0.1 とかでは、GAE アプリが起動できず。

結局、android developers なサイトを彷徨って、ここのとおり、10.0.2.2 が special alias to your host loopback interface で、PC 側の localhost (127.0.0.1) に繋がることがわかったのでした。

おやすみん。

| | コメント (0) | トラックバック (0)

2011.01.22

admob の設定

admob のライブラリが新しくなって、AndroidManifest.xml に追記が必要になっていたのでメモ。

半年前に設定した状態から、admob-sdk-android.jar を入れ替えただけだと、

ERROR/AdMobSDK(xxxxx): com.admob.android.ads.AdMobActivity must be registered in your AndroidManifest.xml file.

というエラーが出て広告が表示されなかったですが、
アプリの AndroidManifest.xml に

<activity android:name="com.admob.android.ads.AdMobActivity"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:configChanges="orientation|keyboard|keyboardHidden"
/>

というのを追加すれば、出るようになりました。

あと、Changelog.txt に書かれてる

<!-- Track Market installs from AdMob ads -->       
<receiver android:name="com.admob.android.ads.analytics.InstallReceiver" android:exported="true">
  <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>

も追加しておくと、install tracking ができるらしい、けど、どんなデータが取れるのかよくわからず、、、

| | コメント (0) | トラックバック (0)

2010.11.26

Desire HD で root (その2)

#輸入版ではなく、SoftBank 001HT の話。
#以下自己責任でお願いします。

前回は、S-OFF をやってなくて、/system とかを remount することができず、ファイルを書き換えることはできなかった。
(ということに気付いてなかった。読むことはできるので満足してた。)
ので、S-OFF までやってみた。

色々調べると、dd で HBOOT を直接書き込んでいてすごく危ない(失敗したらブートできない)ので、やめようと思ったが、ここのツールは MD5 を取って確認しながら作業できるので、安心だと思って、これを使わせてもらった。(失敗しても電源切る前なら書き戻せる。)

ということで、手順のメモ。

VISONary+ r13 で permroot をとる

ここから、DHD-v0.6-tempfix.zip を落とす

■それを解凍して、DHD-smart ディレクトリを、
DHD というディレクトリ名で SD-Card のルートに置く。 
PC に繋いで MSC (Mass Storage Class) モードにして、explorer でコピーするだけ。

■Android Terminal Emulator を Market からインストール
自分は、DevPhone の CM6 の terminal を抜いてインストールした後だったので、
入れる必要無かった。

■それを起動して、

$ su
# sh /sdcard/DHD/check

を実行。
CIMG2145 
上2つの MD5 sums が同じなら、次に進む。
エラーっぽく見えるところは、その下にある説明のとおり、問題なし。

■sh /sdcard/DHD/backup を実行。
CIMG2146
また同じなら次に進む。

■sh /sdcard/DHD/hboot を実行。
CIMG2147
今度は3つの MD5 sums が出るので、
1つ目と2つ目が同じなら成功。
1つ目と3つ目が同じなら失敗だけど、全く書けてないのでリブートしても大丈夫。
1つ目がどれとも同じでなければヤバい!電源切ったらもう二度と起動できない!電源切る前にフォーラムに書き込んで助けを求めれるしかない!
たぶん、sh /sdcard/DHD/restore_hboot とすれば戻せそうだけど、未確認。

ボリュームボタンの下を押しながら電源いれて、
CIMG2148
のように、1行目の S-ON が S-OFF に変わっていたら成功!

| | コメント (0) | トラックバック (0)

2010.11.20

Desire HD にストラップ

Desire HD にどうしてもストラップを付けたくて考えた末やってみたことの紹介。

下の画像の通り、釣り糸を強引に通して繋いでみた。(見えないと思うけど^^;)

CIMG2061

普通に適当に縛るとすぐ取れてしまうけど、昔よく使ってたクリンチノットをしてみたら、すごい強度になった (^^)v

釣り糸ってすごい!

ちなみに、左側のバッテリ蓋の傷はドスパラ秋葉店のおやじにつけられたもの。本体側も塗装が削れてアルミの地金が見えている。もうあそこでは買わないだろう。。。

| | コメント (0) | トラックバック (0)

2010.11.19

Desire HD で root

S-OFF と言われているのは、まだやっていない。
S-OFF にする方法は、こっち
とりあえず、root は取れたので、メモ。

輸入版ではなく、SoftBank 001HT の話。
以下自己責任でお願いします。

■私の Desire HD のバージョンは以下の通り
    □ベースバンドのバージョン:
       12.28b.60.140eU_26.03.02.26_M
    □カーネルのバージョン:
       2.6.32.21-g66cfb7a
       htc-kernel@and18-2 #1
       Tue Oct 26 15:58:17 CST 2010
    □ビルド番号:
       1.35.762.2 CL277010 release-keys
    □ソフトウェアの番号
       1.35.762.2

    これ以外だと、以下はできない可能性あり。
    海外モデルの方が kernel とかちょい古そうだし。

■用語はよく知らないけど、たぶん以下のとおり
    □temproot
       電源切るまでは root になれる。su が使える。
       001HT には標準で busybox が入ってて、色々できそう。

    □permroot
       permanent になるってことだろう。
       電源切ってリブートしても、root になれる。

    □S-OFF
       Security off ?
       recovery mode (volume down 押しながら電源 on) のイメージを書き換えて、
       野良 firm を焼けるようになる。はず。まだやってない。 
       これ間違ってた^^; recovery mode の前の HBOOT を書き換えるのだった。
       S-OFF にしないと、/system とかを remount できず、ファイルの書き込みが
       できないのでした。
       S-OFF にする方法は、こっち



■permroot の取り方
    □一言でいうと、VISIONary+ r13 を入れて、
       「temproot now」をタップして、
       「Attempt Permroot n」をタップするだけ。
       なんて便利な世の中なんだw

    □詳細
       http://android.modaco.com/content-page/320350/10-nov-r12-test-visionary-one-click-root/page/120/
       ここの #133 から、VISIONary+ r13 を落として、インストール。

adb install –r com.modaco.visionaryplus.r13.apk

       起動すると、「temproot now」 という行があるので、それをタップして、
       十秒ぐらいドキドキしながら待つ。チェックは何も付けなくていい。

       その後、「Attempt Permroot n」 という行をタップ。
       さらに十秒ぐらいをドキドキしながら待つと、 勝手にリブートして、
       root を取った状態でブートする。

       自分は、帰りの電車の中でやったので、バッテリがすごく心配でした。
       AC アダプタ繋げてやるべきだと思う。

       r12 だと、リブート繰り返すことがある、との書き込みがあったので、
       r11 か r13 が良さそう。
       r13 は Desire HD のスレではなく T-Mobile G2 のスレにあるので、
       ちょい不安だったけど、問題は無さそうだった。

       海外の Desire HD は、kernel とかちょい古いので、
       001HT な Desire HD で同じことができるのか、すごく不安で、
       これ以上試せない、、、ので、誰か S-OFF を試してくださいw

| | コメント (0) | トラックバック (0)

2010.10.23

久しぶりのカート

中央サーキット藤野でカートをしてきた。ここは3回目。
結果、5位(11人中);;
RX-8 乗りな走り屋ばかり集まっててみんな速かったな~。

自分は前回より遅くて 45”044 が Fastest lap

2時間半も RX-8 を運転してたどり着いたから疲れてたのさ~(違)

| | コメント (0) | トラックバック (0)

2010.10.16

SharedPreferences#getInt() が使えないのはなぜ?

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
nHoge_ = prefs.getInt(context.getString(R.string.pref_key_hoge), 0);

が、ClassCastException を吐くのはなぜ??

去年、ADC2 の時に悩んだけど、時間無くて SharedPreferences#getString() で文字列で取って、Integer.parseInt() で数値に変えて、

nHoge_ = Integer.parseInt(prefs.getString(context.getString(R.string.pref_key_hoge), 0));

とい感じで逃げたのだが、、、

また、今日、同じように SharedPreferneces#getInt() で exception 吐かれてしまったのでした。。。

ヘルプ的には、

Throws ClassCastException if there is a preference with this name that is not an int.

なので、xml で書いたのが、int じゃないから、ClassCastException 吐くんだけど、xml で int 指定で書く方法がわからず;;

attribute で integer を指定できる??

| | コメント (1) | トラックバック (0)

2010.09.27

プログラミングコンテストチャレンジブック

これおもしろい。
具体例が多いし、説明がわかりやすくて、安心できる。

自分のように GDD2010 のパックマンを楽しめた人(=簡単すぎてつまんないとは思わなかった方々)には、この本はお薦めだと思う。

過去のコンテストの問題が103問あって、解き方についてのわかりやすい解説がついてるので、すごく勉強になるよ!

| | コメント (0) | トラックバック (0)

2010.09.18

CPUMonitorMini が真似された^^;

http://jp.androlib.com/android.application.com-als-usagetimelines-jwAmz.aspx
これ、すごい勢いでマネしてない??

拙作の CPUMonitoMini は
http://jp.androlib.com/android.application.ms-salt-cpumonitormini-AFmB.aspx
これね。

まぁ、マネされるってのは光栄なことだけどさ。

| | コメント (4) | トラックバック (0)

2010.07.25

3Gアンテナ表示

3Gアンテナ表示というアプリをもらうべく、blog に書いてみる。
100円なんだから買えよ、とは思うが^^;

<ブログで紹介して頂ける方へ>
無償でアプリを送付しますでので、ブログのURLを添えてメールでご連絡下さい。

とのことなので。

 

先週から、b-mobile SIM U300 (とりあえず1ヶ月分) を、DevPhone で使っているのだけど、電波受信強度が常に圏外表示になってて、残念な感じなのでした。

で、ぐぐってみたら、なんと、昔お世話になった先輩の blog が出てきて、このアプリがタダで貰えるということがわかったのでした。
(ついでに、拙作の CPUMonitorMini との相性も悪いということも判明^^; (アイコンの表示場所だけの問題ね))
#っていうか世間て狭いw

できれば、本来の場所で表示したいので、CyanogenMod の frameworks/policies/baseframeworks/base を覗いてみたけど、いまいちわからず^^;

b-mobile SIM U300 は、300Kbps しか出ないけど、いまだにメイン端末として使っている ades の 64Kbps に比べれば、めちゃ速い!
Xperia と比べても、メインで使う東海道線の電車の中では、体感で 1/2 ぐらいにしか感じないので、かなり満足です。<Xperia でもそもそも遅い。特に戸塚横浜間。

ん、これ、アプリ紹介にはなってない?
もらうまでは使えないからアプリ名ぐらいしか紹介できないよね^^;

 

以下、アプリ『3Gアンテナ表示』を頂いたので、追記。

デバイス:Android Dev Phone 1
ファーム:CyanogenMod v6.0.0-RC1 + libhtc_ril.so 置き換え
に、インストールしました。

実行すると
image 
こんな感じで、
左から3つ目のアイコンで電波受信強度、
左から4つ目のアイコンでデータ通信状況、
を表示してくれます。
設定画面から、それぞれのアイコンの表示・非表示は切り替えれます。

しばらく観察した感じでは、データ通信状況は Xperia と同様に普通に更新されるのですが、電波受信強度は3本から変化しなくてちょっと寂しかったです。Xperiaは、3本だったり4本だったりするのですが。。アンテナの違いかな??

あと、framework 側に手を入れないとできないことは分かっているのですが、やっぱり、右側の標準の電波受信強度アイコンを消したくなりますね。。

 

左から4つ目のアイコンは拙作の CPUMonitorMini で、1秒毎とかで定期的に更新されてるのですが、その間にデータ通信状況が変化するとアイコンが更新され、
image 
こんな感じでアイコン位置がずれて、パタパタしてしまいます。
(後で更新されたのが右側に来る)

これも、framework の仕様で固定できないので、しょうがないのですが、データ通信してると、常に入れ替わるので、なんとか固定したいですね。。

 

。。ということで、電波受信強度アイコンとデータ通信状況アイコンを1つにまとめて表示するオプションがあるといいなぁと思いました。
#1つにまとめるには全パターンの画像を用意する必要があるので大変ですけど。
#CPUMonitorMini は、1296パターンのアイコンをかかえてますw

 

次に、TOPコマンドで使用メモリ量を確認したところ、RSS=13712 Byte でした。同じタイミングでCPUMonitorMini は 14876 Byte だったので、軽量ですが、remote service にはなってないみたいなので、remote で実装してもらえると、設定画面分を外せてもっと軽くなるのでは?と思いました。

 

。。ということで、見えない電波の状況が見えるようになって、すごく安心できるようになりました。b-mobile SIM を使う時は必須のアプリですね。
すばらしいアプリを開発してくださった modal.blue さんに感謝します。ありがとうございます。

| | コメント (0) | トラックバック (0)

2010.05.27

Android NDK r4

r3 では、build/host-setup.sh して、make APP=appname とやってたのが、
r4 では、アプリの Application.xml がある場所で ndk-build を実行する、
に変わってたので、メモ。

■android-ndk-r4-windows.zip を解凍して適当なところに置く
以下、C:\android-ndk に置いた場合

■path を設定する
ndk-build コマンド(解凍した直下にある)を使うようになったので、
そこに path を通しておく
[Win]+[R] → sysdm.cpl (Win7 以外は system.cpl か?)→ [詳細設定]タブ
→ [環境変数]ボタン→ ユーザかシステムかどちらかの PATH の最後に
C:\android-ndk を追加
(cygwin 上で .bashrc に
export PATH=$PATH:/cygdrive/c/android-ndk
を追加でもいいかな?)

■cygwin を起動して、アプリの Application.xml があるところで、

ndk-build

でコンパイルできる。
Application.xml があるディレクトリ以下に jni ディレクトリがあって、jni/Android.mk が
あることが前提。(r3 と同じ) 
あとは、

ndk-build –B

で、強制的にリビルド。

ndk-build V=1

で、詳細表示しながらビルド。
r3 と同じように、ndk のトップディレクトリでビルドするなら

ndk-build –C <project-path>

でできる。

| | コメント (1) | トラックバック (0)

2010.05.23

AdMob の設定方法

Android アプリへの登録方法が前から少し変わっていたので、メモ。

アカウントの取得方法などは、他のサイトに書かれてるので、適当にぐぐってください。

以下、Android アプリに広告を入れる方法。

AdMob に login してimage の、imageをクリック

■アプリ選択画面になるので、image をクリック

■App name: に適当に入れる(後で変更できる)

■Android Package URL: は、http://market.android.com/search?q=pname:<package name> とする。<package name> に自分のアプリのパッケージネームを入れる。
拙作の CPUMonitorMini の場合は、http://market.android.com/search?q=pname:ms.salt.cpumonitormini。(後で変更できる)

■Category: App description: は適当に。(後で変更できる)

■最後に、image を押すと、SDK のダウンロード画面に行く。
けど、既にダウンロードしてあれば必要無し。
アプリ名に依ってバイナリが変わる訳ではない。

imageに戻ると、リストに追加されているので、image をクリック

■アプリ名の下に、Publisher ID: が表示されているので、コピー
(以下、”abcdefghijklmno” と仮定する)

■アプリの AndroidManifest.xml の <application> </application> の直下に

<meta-data android:value="abcdefghijklmno" android:name="ADMOB_PUBLISHER_ID"/>

を追加。

■同じく、<manifest> </manifest> の直下に

<uses-permission android:name="android.permission.INTERNET" />

を追加。

■アプリのディレクトリに libs ディレクトリを作り、AdMob SDK に入っている admob-sdk-android.jar をコピー

■eclipse の Package Explorer で、アプリを右クリックして、[Refresh]

■同じく、eclipse の Package Explorer で、アプリを右クリックして、[Properties] → [Java Build Path] → [Libraries] タブ → [Add jars..] ボタン→先程コピーした admob-sdk-android.jar を選択→[OK] ボタンで閉じる

■res/values/attrx.xml を作る
アプリの res/values で右クリック→[New]→[Ohter..]→[Android XML File]→Fileに attrs.xml と入れて[Finish]→中身をヘルプ通りに

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="com.admob.android.ads.AdView">
<attr name="backgroundColor" format="color" />
<attr name="primaryTextColor" format="color" />
<attr name="secondaryTextColor" format="color" />
<attr name="keywords" format="string" />
<attr name="refreshInterval" format="integer" />
</declare-styleable>
</resources>

とする

■広告を入れたいレイアウトリソース(res/layout/foo.xml)の中のレイアウト(LinearLayout とか RelativeLayout とか)のタグの attribute に

xmlns:app=”http://schemas.android.com/apk/res/<package name>”

を追加し(<package name> はアプリのものに置き換える)、
要素として、

<com.admob.android.ads.AdView
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:backgroundColor="#000000"
app:primaryTextColor="#FFFFFF"
app:secondaryTextColor="#CCCCCC"
/>

を追加する。
タグの attribute で指定した xmlns: の後の app と、要素の attribute の app を合わせればいいので、myapp とかにして説明しているところもあるけど適当でOK。

■個人的には、xml の inflation が微妙に遅いので使いたくない。。。
そういう場合は、java のコードで、

AdView adView = new AdView(this);
adView.setVisibility(android.view.View.VISIBLE);
adView.requestFreshAd();
adView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

mLinearLayout.addView(adView); // LinearLayout に追加

という感じで、LayoutView に add すれば OK。

xml での layout はすごくすごく便利なのだけど、inflation が遅いので気を付けましょう。
xml ファイルは、apk にした時点で binary に変換されてるけど、java の object になっている訳ではなく、inflateする時に java の object を生成しています。(と思っています。)
なので、直接 java のコードでガリガリ書いたものに比べると、数倍~十数倍ぐらいの時間がかかります。
(実際にベンチマークテストしたのは animation 用の xml だけですけどね。たいして複雑でもないのに、15倍ぐらいの時間がかかってました。)

まぁ、自前で xml を parse することを考えてみると、時間がかかるのは自明ですよね~

■あと、注意点は、横幅が 320 dot ないと、広告が全く表示されない、ということです。
レイアウト(LinearLayout や RelativeLayout)の attribute が、android:layout_width="wrap_content" だったりすると、中の要素で width が 320 dot になるものが無い限り広告は表示されないみたいです。
popup させた AlertDialog の中に入れようとしましたが、popup した時点で 300 dot ぐらいになるため、広告が全く表示されませんでした。その場合でも、landscape 表示にすれば、AlertDialog の中でも表示されたので、横幅に影響していると思われます。

| | コメント (4) | トラックバック (0)

2010.04.19

Android のマルチタスク(2)

つっこみを頂いた^^;
Activityとマルチスレッド(oops)

確かに、Acitivity で作った Thread は onPause() で落とすべきで、裏で動かしたいなら Service にすべきですね。
CPUMonitorMiniは、既に Service に変えてます。

でも、デフォルトのブラウザとか、裏に回してもダウンロードは続けるよね。
それがマルチタスクの良さだし。
ネットーク系はどうしてもスレッドでやるのが楽だしね。
センサーロガー系のアプリや、ネットワークトラフィック監視系のアプリとかも、Service 作らず Thread でやっちゃってるのがあったはず。

Service が殺される件は、1.6 以前だけかもしれないですね。
ぐぐると、落ちないServiceの作り方(GrandNature)とかが出てきます。
2.0 になったときに、Service 周りに問題があったのでAPIを変えたとか無くしたとか、というのがあったはずなので、事情は変わってるのかもしれないけど。。。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

| | コメント (0) | トラックバック (0)

2010.04.17

Android のマルチタスク

Tuboroid の作者がマルチタスクについて書いてるのを見た。
ここここ
#あっという間に En2ch が抜かれたからね。。;;
#凄い作者だから、気になって見てる。

でも、「スレッドを使ってない場合」、という一言が足らなくないかい?

バックグラウンドに回ったアクティビティは基本的に電池を食わない、は一応正しいけど、スレッドを使っているアクティビティの場合、スレッドそのものはバックグラウンドでも普通に動く。当然、普通に電池は食う。
もちろん、スレッドを使うアプリの作者は、できるだけ電池を食わないように作るので、基本的には食わないというのは正しいかもしれない。
でも、Android のマルチタスク・マルチスレッドを生かすアプリを考えると普通にスレッドを使う。
javaは言語仕様でスレッドを規定しているので、スレッド使うの簡単だし。

実際、先週リリースした拙作の CPUMonitorMini は、バックグラウンドでもスレッドは動いてる。<棒グラフを更新しているのは1つのスレッド。
ただのアクティヴィティなので、バックボタンを押すと死ぬけど、ホームボタンを押してバックグラウンドにまわせば、スレッドでずっと動いてる。

。。。と、CPUMonitorMini の宣伝をしたくて、久しぶりに blog を書いてみたのだった^^;

あと、アクティビティとサービスを分けて考えてるけど、GUI を持てるか持てないかだけで、たいして変わらない。
アクティビティでもサービスでも、裏で動かそうとしたら、自分でスレッドを作って回す必要がある。
サービスは GUI を持たないから、メモリ消費が少ない分、OS から殺されることも少ないとは思うが、実際は、平気で殺される。
一応、onLowMemory() が呼ばれるのが、アクティヴィティより先のことが多いので、そこで何かしら手を打って、殺されないようにすることは可能だけど、DevPhone とかメモリが少ない機種の場合、どうしても殺されてしまう。
なので、AlarmManager を使って、定期的に起こす必要がある。
でも、電源 On/Off やアプリのインストール・アップデートをすると、AlarmManager で設定した内容も全部消されて。。動けなくなる。。。;;

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

| | コメント (0) | トラックバック (1)

2010.02.24

JIT 化された Dalvik で 1.5 倍速!

http://forum.xda-developers.com/showthread.php?t=637419
これを見つけた!
昨日からあったみたいだ。

linpack ベンチマークテストで、2.3 ぐらいが 3.5 ぐらいになったので、約 1.5 倍速!

ADP1 で System Recovery が RA-dream-v1.5.2 だと、↑のページに書かれてる通りでは SD card を mount できなかったけど、
> you need 1 file, it’s called libdvm.so
と書かれてる通り、libdvm.so を /system/lib に直接コピーしたら特に問題なく高速化されました!

1. Download www.androidonroids.com/dusted-donuts (File has 3 scripts backup, install, restore, 2 folders, 1 libdvm.so)

これを落として、展開して、lib/libdvm.so があることを確認。

CM4.2.14.1 を焼いた状態で、Windows の cmd.exe から、

adb push libdvm.so /sdcard
adb shell

mount –o remount,rw /system
cd /sdcard
cp libdvm.so /system/lib
sync
reboot recovery

reboot して recovery mode に入るので、全部 wipe (data/factory reset, Dalvic-cache, SD:ext partition を wipe) してから reboot

これでベンチマークテスト上では 1.5 倍速!
ちょっと引っかかる感が増えた気もするけど、速い!

SuperD 1.9.2 でも同様にできたけど、USB が繋がってるとリブートを繰返すので、CM の方がよさげ。

100309 追記
 CM 4.2.15.1 で、これをやると、Home が起動できないループにハマるのでご注意下さい。。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

| | コメント (5) | トラックバック (1)

2010.02.21

写真展

写真展に行ってみた。
With You  写真展 by 20 photographers
大学時代の同期が、大企業辞めてプロのカメラマンになるとのことで。

でも、携帯カメラで十分満足な自分には、いまいちわからない世界でした^^;
デジカメの firm 開発に関わってた頃には、それなりに写真の勉強をしたけれど、
いまいちアナログな世界についていけず脱落した経験があるので、余計尊敬したのでした。

帰りに、ちょっと思い出のあるタヒチまで行ってみたけど、、
ades で調べたらこの↑のページがでてきて、評価低かったので、入らずそのまま帰ってきたのでした^^;

#無職という単語を言ってしまったのは失礼したm(..)m
#ただの冗談のつもりだったのだが、周りに人が居る場所では良くなかったな^^;
#まぁ、来月には成功してそうだからいいけどね。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

| | コメント (0) | トラックバック (0)

2010.02.15

やっぱり化ける BufferedReader

ここの続き。

先週末、BufferedReader のバッファサイズを 3KB まで減らせば、テストコードでは全く化けなくなることを発見した。<Android 1.6 上ね。 2.0 では元々全く化けない。

(このテストコード、最後に全部 close() してるけど、全部 closeable interface を継承してるから、最後の BufferedReader だけ close() するのが正しいね。)

バッファサイズを増やせば明らかに化ける確率が減るので、減らす方向では全くテストしてなかったのだ^^:

でも、さっき、3KB に設定した En2ch Ver.1.1.15 で文字化けを発見してしまったのでした。。;;

確率的には減ってるとは思うのだけどね。。

バッファの境界で化けてるかと思ってたけど、InputStreamReader の中で化けてるっぽい。文字コード変換でしくってるのかねぇ。早く全部 2.0 にしてくれ~。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

| | コメント (0) | トラックバック (0)

2010.01.27

Ubuntu 9.10 で Android を build

Ubuntu 8.04 なら、ここの通りやればすんなりビルドできたのだけど、Windows7 にしたついでに Ubuntu 9.10 にしたら(Virtual PC 上ね)、java のバージョンが 1.6 じゃダメだよと怒られるので困ってた^^;

けど、ここの通り、ここから jdk-1_5_0_21-linnux-i586.bin を落として(rpm じゃない方ね)、インストールして、パスを $PATH より先に通せば、すんなりビルドできたのでした(^^)v

libft2.a が、さらにでかくなった気がする。2.8MB ぐらいある;;
(master branch を取ってるので、最新。2.1なコードも入ってるのかな?)

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

| | コメント (0) | トラックバック (0)

«Android NDK での native 描画を調べた結果、、