Android

java.net.PlainSocketImpl.finalize() timed out after 10 seconds

java.util.concurrent.TimeoutException: java.net.PlainSocketImpl.finalize() timed out after 10 seconds at libcore.io.Posix.close(Native Method) at libcore.io.BlockGuardOs.close( BlockGuardOs.java:101) at libcore.io.IoBridge.closeAndSignalBl…

SharedPreferences と MODE_MULTI_PROCESS がイマイチよろしくない件

運悪くAndroidで複数プロセスのアプリを作ったり、アプリ間で SharedPreferences を相互参照するハメになってしまった場合に役に立つ…いや、たぶん立たないメモ。 Context#MODE_MULTI_PROCESS フラグはどのように使われているか このフラグはContext#getShar…

Androidアプリからのファイルパーミッションの制御

アプリ間のファイルアクセスの許可/禁止には unix のファイルパーミッションの仕組みが使われています。 ファイルパーミッション - Wikipedia Androidではアプリごとにuidとgidが割り当てられていて、パーミッションのうち、otherのread,write,execute ビッ…

Bitmapのカドを丸くする

「アイコン画像を角丸にしてくれ」 とか、割とよくある話だと思うんです public static Bitmap clip_radius(Bitmap src,int out_w,int out_h,float radius_x,float radius_y){ // 入力と出力の矩形 Rect rect_in = new Rect(0,0,src.getWidth(),src.getHeigh…

Androidアプリがどうデータベースを取り扱うか

端末にデータを保存するアプリを4日くらい書いてたので、その時に調べたことのメモ。 あ、書いてたアプリはこれです。 https://market.android.com/details?id=jp.juggler.SubwayTweeter 基本的な構造 SQLiteOpenHelper ↓生成 SQLiteDatabase ↓生成 SQLiteCu…

Android 3.0の壁紙について

Android 3.0のHomeは壁紙の扱いがかなり変わった。 手元にある端末だと 画面サイズは1280x768なのに、壁紙マネージャの要望するサイズ1920x1408だ。 でかすぎるだろ… 実際に表示されるのはおおむね中央部分だけで、残りの一部はAppDrawrや追加ボタンを押した…

Androidのテキスト閲覧ソフトの比較

2chのVIP板で連載されてた小説を、Android端末で読みたくなったんですよ。 71667行、1059640文字。UTF-8のテキストで、2.77MBあります。2ch特有の記事ヘッダなどがあるのでサイズは小説一本分よりやや大きめですが、非現実的なサイズではありませんね。DropB…

Android の Application task の、 Activity stack に関する怪現象

開発中に起きた出来事。発生した端末はXperia。 再起動してアプリをインストールし直したら発症しなくなったので、原因は分からず。 アプリの構造 このアプリは起動したら画面Aが表示されて、暫く待つと自動的に画面Bに移る。 ここで Home keyを押すと、A->B…

Android の java.net.HttpURLConnection

Android SDKで使えるHTTPクライアントクラスについて、gitから取ってきたソースを見つつその挙動を調べてみる。賞味期限の短い記事だと思うので、利用には注意してほしい。Android SDKで使えるHTTPクライアントクラスは三つある。 java.net.HttpURLConnectio…

apkファイルに含まれたAndroidManifest.xmlのデコード

androidのアプリケーションパッケージであるapkファイルを適当なアプリでSDカードにバックアップした後、そのzipされてる中にある AndroidManifest.xml を読むことになったのでメモしておきます。xmlなんですがバイナリにエンコードされています。 文字列テ…

Androidアプリの間違った作り方

とある外注さんが書いてきたコードがひどかった。 バックグラウンドでのオーディオ再生を、Activityから作成したワーカースレッドで行う。キャンセル処理は全く考慮していない。 UIスレッド上でばんばんHTTPリクエストを投げる。応答を読み終わるまでループ…