[iCalMobile] Ver.1.03 省電力化 待ち受け起動時, 2分無操作でSleep

またバージョンアップです。
Ver.1.03 省電力化 待ち受け起動時, 2分無操作でSleep
携帯「iCalビューアー」としてはだんだん満足してきました。
関連:
[iCalMobile] Ver.1.02 定例イベント限定対応, 複数iCal対応
PC向けiCalMobile紹介ページへ
NTTDoCoMo携帯電話向けiCalMobile紹介、ダウンロードページへ

[iCalMobile] Ver.1.02 定例イベント限定対応, 複数iCal対応

バージョンアップです。
Ver.1.01 -> Ver.1.02 定例イベント限定対応, 複数iCal対応
[定例イベント限定対応]
携帯で日本の休日を見たいなと思ったので。
iCalの定例イベントの仕様が複雑なので、
Google CalendarのJapanese Holidays[Google HTML] Japanese Holidays[Google iCal]
だけ見れればいいかな、という意味で限定対応です。
Yearlyの定例イベントは対応してます。
それより間隔の短い定例イベントはスルーしてます。ご了承ください。
[複数iCal対応]
Google Calendarをプライベート/仕事で「マイカレンダー」を使い分けてたりするので、
さらに日本の休日も含めて携帯で見たいな、と。
3つまでokです。
新しいスクリーンショットはこんな。

PC向けiCalMobile紹介ページへ
NTTDoCoMo携帯電話向けiCalMobile紹介、ダウンロードページへ

[iCalMobile] Ver.1.01 省電力化

早速バージョンアップです。
一日常駐アプリにしておくと電池無くなってたので。。
Ver.1.0 -> Ver.1.01 折りたたみ携帯を閉じるとSleep
PC向けiCalMobile紹介ページへ
NTTDoCoMo携帯電話向けiCalMobile紹介、ダウンロードページへ

[iCalMobile] 携帯iCalビューアーiアプリ スクリーンショット

PC向けiCalMobile紹介ページへ

NTTDoCoMo携帯電話向けiCalMobile紹介、ダウンロードページへ
待受け画面

通常画面

スケジュール詳細画面

設定画面

HELP

[iCalMobile] 携帯iCalビューアーiアプリαリリース

[iCalMobile] 携帯iCalビューアーiアプリαリリース
です。
iアプリをダウンロード(NTTDoCoMoの携帯電話用ページ)
スクリーンショット
iCalMobileは、
・iCalendarフォーマットのカレンダー、スケジュールを携帯電話で軽快に操作、表示するためのiアプリです。
・フリーのiアプリです。
参考: iCalendarフォーマットは、GoogleCalendar等メジャーなオンラインカレンダーツールで採用されているカレンダー、スケジュール用のファイルフォーマットです。
関連:
[iCalMobile] Ver.1.02 定例イベント限定対応, 複数iCal対応

携帯iアプリ開発ではまったところ

ひさびさにNTTDoCoMo向けiアプリをつくってました。
もうすぐα版出そうと思うので、はまったところのノウハウ紹介。
JavaSDKは、最新版ではだめ
「サポートされていないエンコーディングです: SJIS_i」
とかってエラーが出ます。
j2sdk-1_4_2_12-windows-i586-p.exe
これで開発できてます。
一番はまったのが、iαppliTool for DoJa-4.0(FOMA) って
携帯電話のJava環境の、PC上で動くエミュレータでは問題無く動くのに、
携帯にダウンロードして動かすと、
「αエラーが発生しました」
ってエラーが出て落ちる時がありました。。
開発環境と実機で動きが違う故のバグって、
実機では落ちる時の情報も取れないので厄介なもの。
現象は、ネットにつなごうとするときに落ちる。
地道に切り分けていきます。。
結局、原因はサーバの返すHTTPヘッダの「Content-Length」が間違っていたこと。
iアプリは携帯からアクセスできるサーバが、
そのiアプリをダウンロードしたサーバに限定されるので、
サーバ側も自分で開発していたのですが、それがバグってた。。
ご参考までにiアプリ側のJavaコードはこんな感じ
PLAIN TEXT
CODE:

try {

String param = com.nttdocomo.net.URLEncoder.encode( param_unencoded );

String url = url_base+param;

HttpConnection conn = (HttpConnection)Connector.open(url,Connector.READ);

conn.setRequestMethod(HttpConnection.GET);

conn.connect();

if(conn.getResponseCode() == HttpConnection.HTTP_OK){

InputStream in = conn.openInputStream();

InputStreamReader isr = new InputStreamReader(in);

 

int contentLength = (int)conn.getLength();

char[] data = new char[contentLength];

isr.read( data, 0, contentLength );

ret = new String(data);

// retを使ってごにょごにょ

PC上のエミュレータでは、誤ったContent-Lengthでも動いちゃってたものが、
携帯実機上では許されなかった、と。
よく考えると、ネットワーク関連の機能って、
PC上のエミュレータと携帯とでは実装が異なるはずです。
エミュレータはPCのネットワークを使ってるし、携帯は自力でDoCoMoのネットワークにつなげる。
ネットワーク関連は全部HttpConnectionってクラスに抽象化されてるのですが、
そこの設計がしょぼいのかもしれませんね。
入出力系、注意。