iOS5だとinput type="number"で桁区切りカンマが入ってしまう対策

HTML5でinput type="number"を指定すると,iOSでもAndroidでも数字入力モードになってくれるので便利!
しかしiOS5だと数字列が欲しいのに数値になってしまうので先頭の0が省略されたり,桁区切りのカンマが入ってしまうことも確認!
こりゃ困るねーということで対応をググった.

iOS 5(iPhone等)の数字入力用inputフィールドでカンマを表示させない方法 – flairDays

type="text"にしてpatternを指定すれば良い,と.
確かにその通りでしたが,Androidは数字入力モードにならない.

ということで結果下記のような対応を取ってみることに

html部分
<input type="number" id="num" />←Android向け
<input type="text" id="num2" pattern="[0-9]*" />←iOS向け

JavaScript部分(jQuery前提)
var agent = navigator.UserAgent;
if(agent.search(iPhone|iPad|iPod) != -1){
 $(‘#num’).remove();
 $(‘#num2’).attr(‘id’,’num’);
}else{
 $(‘#num2’).remove();
}

ムリヤリ感ありますが…
Androidもnumberを数値として扱い始めると先頭が0の場合は話が違ってくるしなぁ.
というかブラウザ毎にこういうの意識するのは基本的にはイヤだなぁ…(iOSも4と5で対応違うし…ブラウザ違えばもっと違うし…)

NexusOneのカメラが壊れた


NexusOneのカメラが起動しなくなりました.
activity camera is not responding,カメラは応答していません,カメラに接続できません,等のエラーメッセージ.

最初は何かアプリが落ちたときにロックしちゃって解放してないのかなーと思いましたが違うようです.
CyanogenModのforumには問題があるとかないとか書かれていましたが結局解決していないようです.
ただ,ソフトウェア的な問題のときはストロボライト(トーチ)のアプリも同時に動かないことが多数のようですが,今回はカメラのみ動きません.

多分,先日NexusOneを落としちゃったからなんでしょうなぁー,ハードウェア故障っぽいなーと思ってカメラ周辺をぐりぐりしていたら,ちょっとだけカメラが反応しました.
もしかしてと思って探すと,やはりカメラの接触が悪くて動かないというケースがあるようです.

Some issues after upgrading to 7.1.0 – Google Nexus One Stable Mod – CyanogenMod Forum – Page 2
分解して接続し直して動いた模様.

というわけでこちらの動画やサイトを参考にバラしてカメラを一旦外し,清掃して再度組み立て.


ガジェラ: NexusOneばらし
THE BOOLEE STREET » やっちまった・・・Nexus One修理失敗。

なんどか外してはめ込み直してみましたが,カメラは動作せず.
しかしカメラは1cm角の独立モジュールになっていましたので,スペアを探せば良いのかもしれない.

Nexus One Camera Module | fokke.org

カメラモジュールの交換でなんとかなるようです.
eBayとかで入手できます.とりあえず注文してあとは待ちます.

Motorola, SonyEricsson items in gsm4world store on eBay!
HTC Camera

AndroidのブラウザでHTTP_REFERERが送られてこない?

webプログラムでHTTP_REFERERを取得したいという話があったんですが,Androidの標準ブラウザからREFERERが送られてこないという現象がありました.
いわゆるガラケー時代にはREFERERが送られてこない端末なんて普通だったんで,まぁAndroidでもそういうのがあるのかしら?なんて思いましたが,どうやら違うようです.

「デフォルトで使用するブラウザ」が決まっていないとHTTP_REFERERが送られてきません.
原因についてははっきりとした資料を当たってないのですが,下記のように推測.

Android端末に標準以外にFirefoxやらOperaやらのブラウザを入れると,webサイトでページを移動する度に「アプリケーションを選択」という画面が出てきます.

おそらく内部的には毎回「URLを開く」というインテントが動くので,通常のブラウザ内での移動とは異なり,毎度毎度新規にURLを開いている扱いになるのだろうなぁと思います.
「常にこの操作で使用する」をチェックしてデフォルトのブラウザを決めてあげると,ちゃんとHTTP_REFERERが送られてきます.

まぁそうでなくてもHTTP_REFERERなんて偽装できちゃうもんだしアテにできないのですけどね.

書いてて思ったけど,cookieでセッション情報を保持している場合,途中でブラウザを変えちゃったらセッションの継続ができないよなぁ.
一般的な他のwebサービスとかだとそのへんは保証外にしてるんだろうなぁ.もしくはガラケーよろしくGETパラメータで引渡か…

NexusOneにCyanogenModとS2E導入

NexusOneは/dataの下が小さい!
何か入れるとすぐ容量低下とか言われる!

そんなわけでapp2sdしてみたい,ということでCyanogenMod7を入れました.
RootedなのでROM Managerから導入してすぐ完了…ではなかった

自分のポイントメモ
・最新のClockworkModRecoveryが入っているように表示されても,直前に再導入したほうが良い
 …なぜかRecoveryが起動できなかった
・cacheとかdataとかwipeしないと起動しない
 …CyanogenModの起動画面がずーっとループしつづけた>Recoveryからwipeしたら起動した
・gappsを導入しないとGoogle系アプリが入らない
 …チェックしてたつもりだけど抜けていた.後から導入でもOK.
 入れておかないとマーケットがないのでいろいろ困る.

[Script/APK] S2E (simple2ext): app2sd for CyanogenMod7 – xda-developers
・ROM ManagerでもSDカードのパーティションを切れるが,最大512MBだったのでヤメ
・ClockworkModRecoveryのAdvancedから操作.2024MB切れる!
・起動後,マーケットからS2Eを導入して設定,再起動で有効になる.

flashだのadobe airだのadobe readerだの入れても内部ストレージの空き容量が100MB以上あります.
microSDHCカードは16GB,class10のものを入れてみましたが,特に問題はなさそうです.

GalaxyTabでユーザー領域に書き込みできなくなった

先日復帰したGalaxyTab.

機能になって,Androidマーケットでソフトがいくつか更新されたので,ダウンロード&インストール.
しかしインストールする段階になるとマーケットアプリが強制終了.
こりゃおかしいなーということで,とりあえず 設定→プライバシー→システムメモリを初期化 してみる.


/data,/dbdata,/cacheのフォーマットに失敗している!書き込めてない!
そんなわけで再起動しても初期化されてません.

こりゃ困ったなーということで,VolumeUp+PowerでRecoveryモードを起動.
ClockworkMod Recovery導入済みです.


wipe data/factory resetを選んでえいやー!
こちらからはフォーマットできた模様.

無事起動して,領域がクリアされたことも確認,アプリのインストールも問題なくなりました.