« 2009年8月 | トップページ | 2009年10月 »

2009年9月の8件の記事

2009.09.29

En2ch 翻訳できず;;

ADC2 の評価アプリで、やっと拙作の En2ch を見つけることができた。
たぶん、200個ぐらいスキップした。

ところが、コンテスト的にはメインな機能の翻訳ができないことが発覚;;

翻訳は、単に Google 翻訳を使ってるだけなのだが、サーバの仕様が変わったらしく、HTTP header に Content-Length が含まれなくなってて、律儀に length をチェックしてた En2ch はエラーと判断するのでした^^;

Ver.1.0.5 をリリースする前は動いてはずだから、ここ8日ぐらいのうちにサーバの仕様が変わったっぽい。
なんでこんな時に仕様変えるのだよ~凸

HTTP Header 的には Content-Length は必須だと思っていたけど、それは HTTP 1.0 の場合であって、HTTP 1.1 では変わってるのね。ちゃんと RFC 読んどくべきだったよ^^; こことか、すごく詳しく翻訳されてるのに。

はぁ、もうちょいラフに作っておくべきだったなぁ。。。

とりあえず、tWakeUpCallMaker と同じく、満点で submit してみたけど、自分の評価は無視されるよね。。

Market 側にも翻訳機能付きで出してみるかな?

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

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

2009.09.27

tWakeUpCallMaker 発見!

数十個スキップして、やっと日本製のが見つかった。
Taosoftware さんの tWakeUpCallMaker。

 

device

しばらく使って、アプリからアプリを作れることに驚いた。
(いや、blog に書かれてたので知ってたけど。)

「おきろ~」を録音して、それを内蔵したアラームアプリを作って、そのアプリをメールで送れるのね。すげー。

 

device2

ちゃんとアラームが鳴った(「おきろ~」が再生された)

 

device3

満点で submit しました!

 

ん~、デザインできる方は強いなぁ~

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

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

ADC2 評価アプリがやっとリリースされた

Taosoftware さんが、拙作の En2ch を見つけてくれたらしい。ありがとうございます。でもインストールできなかったらしい。すごく気になるんだけど、自分ところではまだ見つからず。。

この評価アプリ、Taosoftware さんも書かれてるとおり、いまいちすぎる。なぜこうなったのだろうか?普通の Market アプリと同じような、ADC2 用の Market アプリみたいなのが出るのかと思っていたのだけど、全然違った。検索もできずカテゴリもわからず全体数もわからない。ADC1 で 1500 エントリぐらいあったはずで、今回も同じぐらいはあるはずなのに、これじゃいつまでたっても評価は終わらなさそう。最低2週間とか書かれてるけど、たぶん票が集まらず延期されるのだろうな。

日本のにはいい評価付けるぞ~と思ってたのに、まだ1つも出てこないよ。。
ある意味、公正な評価になるってことかな。

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

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

2009.09.23

En2ch Ver.1.0.5 で CM (CyanogenMod) に対応しました。

対応というか修正なのだけど^^;
(CM 4.1.11.1 で動作チェックしてます)

CM は、Donut ベースの 1.6 の次の Eclair(2.0 になるのかな?)のコードが入ってるらしく、UI Thread 以外の Thread からの UI 部品へのアクセスチェックが厳しくなっていた。

なので、たぶん、2.0 になったら動かなくなるのだろうと、先に修正したのでした。(1.6 の Emulator では特に問題なく動いてるのだけどね。)

find.2ch での検索にも対応したけど、コード的には UI Thread 系の修正の方が変更量が多い^^; 全ての ListView で、UI Thread じゃない普通の Thread を使ってたからなぁ。(UI 止めないから体感的には速いので普通の Thread 使ってた。)

mastar brunch から git で取得したソース(Eclair のコードも入ってる)は、 ここ数週間前から make  するだけでは emulator が起動できないのだよね。。起動できてればもっと早く気付けたのだが。
たぶん、x86 向けにビルドするときと同じく Phone 系を抜けばいける気がするのだけど、面倒で試せてないや^^;

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

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

2009.09.16

En2ch は CyanogenMod では動かず;;

Android 1.6 SDK がリリースされたのもあって、CyanogenMod がどこまで実装されてるのか気になって試してみた。(CyanogenMod は、いつも少し先回りして実装されてるので。)

ら、4.1.10.1 で、新しい Market が入ってました!
ちゃんと登録したスクリーンショットが見れるようになってます。それも日本語で。

 device

ところが、En2ch は、まったくもって動いてくれないことが判明;;

すごい謎で、テストアプリを作ってテストテストテスト。。。

あぁ、ListView を UI Thread 以外のスレッドから触るとダメなのね、ってことがわかりました。

今までは、データが増える方向に(ListView の表示に変化が発生しないように)触る分には特に問題なかったので、裏で4スレッド(.dat ファイルに HTTP でダウンロードしながら、.dat ファイルから読んで parse して ListView に追加、時間のかかる parse を別スレッドでやって ListView に再設定、Google 翻訳を別スレッドでやって結果が来たら ListView に再設定)を走らせているいるのだが、このうち3つがダメということがわかってしまった;;
(いや、再設定は特に問題ないのか???)

痛い、痛すぎる。
Donut ベースの 1.6 の emulator だと特に問題無いので、次の Eclair 的なコードが入っているのかも?
他の View も UI Thread 以外から触るとダメなのがほとんどなので、ListView も、より厳密にチェックするようになるってことだね。

さて、どうやって直せばいいのだろう?みんなどうしてるのだろ?
Hanlder#post() で Runnable なのを登録すれば、UI Thread で動いてくれるので、簡単なのだけど、それやっちゃうと、UI が固まってしまうし、5秒固まると ANR (Application Not Responding) が出ちゃうし、、、

一旦、裏にデータ領域を確保して処理しておいて、定期的に Handler#post() して ListView 側にコピー、ってやるんだろうな。。。ちょっと変更量多そうだ。。。ふぅ。

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

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

2009.09.12

ADP1 で ad-hoc 接続成功!

Android Dev Phone 1 (や、その他の rooted android)で ad-hoc するのは、android-wifi-tether が有名だが、これは、私が期待してたのとは逆で、Internet → ADP1 の WAN → ADP1 の Wi-Fi → NotePC などの Wi-Fi、と繋ぐものだった。

私は、SIM を持ってなく ADP1 の WAN は使えないので、Internet → ZERO3 の WAN(PHS網) → ZERO3 の Wi-Fi → ADP1 の Wi-Fi、と逆に繋げたかったのだった。

なので、ずっと調べてたのですが、それがやっと成功したのでした。(8月の中旬のことだけど。)
(但し、proxy 設定できるアプリからしか使えない。Android 的には WAN 側しか proxy 設定できないみたい。(APN 設定の中にある))

以下、メモ。

android-wifi-tether のソースを見るとわかるとおり、tiwlan.ini と wpa_supplicant.conf を書き換える必要があるので、rooted な必要あり。

■この2つのファイルを吸い出す

adb pull /system/etc/wifi/tiwlan.ini .
adb pull /system/etc/wifi/wpa_supplicant.conf .

 

■tiwlan.ini の修正

WiFiAdhoc = 1

dot11DesiredSSID = adhoc
dot11DesiredBSSType = 0

 1行目は変更、あとの2行は追加
 adhoc は適当な名前でいい

 

■wpa_supplicant.conf の修正

update_config=0
eapol_version=2
ap_scan=2

network={
    ssid="adhoc"
    key_mgmt=NONE
    mode=1
}

 上3行は変更、network={...} は追加
 adhoc という文字列は tiwlan.ini に合わせる

 

■書き戻す

 直接は書けないので、一旦、別フォルダに push して、remount して、コピーして、リブート

adb push tiwlan.ini /sdcard
adb push wpa_supplicant.conf /sdcard
adb shell
mount -o remount,rw /system
mv /system/etc/wifi/tiwlan.ini /system/etc/wifi/tiwlan.ini.org
mv /sdcard/tiwlan.ini /system/etc/wifi
mv /system/etc/wifi/wpa_supplicant.conf /system/etc/wifi/wpa_supplicant.conf.org
mv /sdcard/wpa_supplicant.conf /system/etc/wifi
reboot

 

■ADP1 の Wi-Fi の設定

 ZERO3 側には DHCP アプリが無い(探せばある?)ので、ADP1 側は static IP の設定をする必要あり

Settings → Wireless conntrols → Wi-Fi settings → [Menu]button → Advanced → Use static IP にチェック
IP address = 192.168.0.2
Gateway = 192.168.0.1
Netmask = 255.255.255.0
DNS1 = 61.198.138.14
DNS2 = 61.198.139.224

 Android のソースを見てわかったのだけど、どれか1つでも空だと、static IP のチェックは無視されて、DHCP に IP を要求してしまう。ので、しょうがないから全部埋める。
 DNS1/2 は、ZERO3 で WAN 接続したときの DNS。vxIPConfig で見た。(昔入れたのがあったので。他のソフトもあると思う。)

 


■ZERO3 の Wi-Fi の設定

 ZEROProxy を使わせてもらって、普通に設定する。
 IP は 192.168.0.1 にする。
 ちょっと書くの面倒なので、ぐぐってください。多くの方々が使われてるので。

 DeleGate はいまいち設定方法がわからず繋がらず^^;
 こっちの方が軽くて安定してると評判がいいのだが。
 

 

■あとは、proxy 設定できるアプリで、192.168.0.1 と 8080 を設定するだけ

 En2ch なら設定できるよ~

 

 

結構ぐぐっても情報は見つからなかったので、意外と世界初じゃない、これ?

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

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

2009.09.11

En2ch の2重書き込みに見える問題

が、やっと再現できた。(1週間かかった^^;)

メモリ不足だと、結果を受けるべき Activity が勝手に殺されて、
onCreate() から始まっちゃうんだね。

Activity A から startActivityForResult() を使って
結果を返してもらうように Activity B を起動した場合、

普通は、B を終了させたら、A の onActivtyResult() に結果が返ってくる。

En2ch は、そこで server から差分(B で書き込んだ分)を取ってくる

A#onActivityResult() ここで server から差分取得
  ↓
A#onRestart()
  ↓
A#onResume()

 

ところが、B の状態のまま、他のアプリとかを起動してメモリを大量に使うと、
A が勝手に殺されてしまう。
B の結果を待ってるはずなのに A だけが殺されてしまう。

そうなると、B を終了したときに、既に A は殺されてるので、
まず、A  を作る必要があって、A の最初の onCreate() から始まるのでした。
当然のことながら、最初の onCreate()  では server からデータを取得しようと
するのだが、(殺されたので B の結果を待ってることも知らない)
その直後に、B から onActivityResult() に結果が来て、
「書き込み成功したから差分取得しろ」と来るので、

A#onCreate() ここで server から取得
  ↓
A#onActivityResult() ここで server から書き込んだ分を取得
  ↓
A#onResume()

と動いてしまい、書き込んだデータを2重で server から取得してしまうのでした。

結果を待つように起動してるんだから、OS が殺すとしたら両方殺すだろ、
と思い込んでいたのが甘かったのでした。。。
というか、そうあるべきだと思うのだが、、、
Windows Mobile なら、親が殺されたら、子も殺されるぞ。
onLowMemory() でハンドリングできるようになってる訳だし、
ほんとに足らなかったら両方殺してくれよ。。。

結果を待ってるとしても、親子じゃなく、同レベルの友達って感じなんだね。。。

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

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

2009.09.01

タイミングが

悪いのだか、良いのだか、、

Google Translate の対応言語が 9 ヶ国語増えて 51 ヶ国語になったらしい。

この前の土曜に ADC2 にエントリした En2ch では、ここに書かれてる 88 ヶ国分は列挙してあるのだが、今回増えた言語のうち、Irish, Welsh, Yiddish が含まれてなかったのでした。。。

あと1日でも早く発表してくれれば、簡単に対応できたのに。

でも、Google Official Blog で挙がったってことは、ちょっとは注目される可能性があるかも?!?!

#エントリされたアプリがダウンロードできるようになるのはいつだろう?

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

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

« 2009年8月 | トップページ | 2009年10月 »