Android

Androidがガラパゴス携帯になっていく!?

年末に掛けてSoftBank、au、DoCoMoなど3キャリアからAndroid端末が発売されます。またタブレットもたくさん出てくるようでこれからはAndroidの勢いが増していく!と思うのですが、開発者視点で現在起きている困った事象とこれから注意を要する部分、今後の考…

AndroidでGoogleAppEnginを使う準備をしています。

GoogleAppEnginを使うためにはまず登録が必要なのですが、そのためにSMSを利用するようですが、日本を選ぶと携帯のアドレスを入れてとなっていましたので、携帯向けのメールアドレスが必要です。って、ないじゃん。私の携帯はDesire。。。Otherを選択して国…

数字のファイル名はNG

ちょっとしたメモです。Androidではresのdrawableに画像などを置くと、R.javaが自動生成されて、Rクラスから読み込みが可能ですが、ファイル名を数字にから始めるとうまくいきません。Javaの識別子の規則で数字から始まる識別子はNGというのがあります。 フ…

GCが頻発しているはず

Androidで動作が重くなるときはLogCatを見れば分かるのだがGCが頻発していることが多い。例えばStringでfor文を回したときなどとても重くなる。こんなときはStringBuilderを使うとすごく早くなる。ApiDemoでも、例えばGrid1.javaなどはBaseAdapterでGCが頻発…

例外処理で例外

あまり深く考えずに、例外処理の中に、Log.d("TAG", e.getMessage())を入れていたら、e.getMessage()でNull ポインターエラーとな。うかつでした。

Can't create handler inside thread that has not called Looper.prepare()の対応はとりあえず下記でOKそう。

Looper | Android Developers public void run() { try { // 時間のかかる処理をここに記述。 } catch (Exception e) { Looper.prepare(); Toast.makeText(this, getString(R.string.exception_occur), Toast.LENGTH_LONG).show(); Looper.loop(); } }

java.util.Timerよりjava.util.concurrent.ScheduledExecutorServiceのほうが柔軟

サービスの中でタイマー処理を入れようとTimerを使ったのですが、停止と再開の処理が難しく例外が多く出ました。Javaの1.5より追加された、concurrentを使うようです。 concurrentのScheduledExecutorServiceを使うと思った操作になりました。これを使って、…

レイアウトのXMLはよくわからん。

ListViewの下にViewをおこうと思ったのですが、嵌ったので、XMLを晒しおきます。 android:layout_alignParentBottom="true"で下に行くようです。 android:layout_weight="1"を入れないと、右側のボタンが見えなくなります。

Google グループ の記事をもとに着信を知るためのプログラムを書いてみました。以下をActivity内のonCreateなどに TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); PhoneStateListener psListener = new PhoneStateL…

manifestの宣言を忘れずに

Androideでネットワークに接続し画像を表示することをテストしていましたが、manifestの宣言というのがよく分からずはまりました。Exceptionもでないで、Unknown socket errorでこけていたのですが、manifest宣言を書くことによってうまくいきました。おかげ…