Home > c09:技術系 > c09_02:Androidアプリ Archive
c09_02:Androidアプリ Archive
Android4.0でDatagramSocketを使うときの罠
- 2012年2月21日 23:00
- c09_02:Androidアプリ
頭に来たので書く。
Android4.0にしたNexus SでUDPソケットを使ったプログラムが動かない。
どうやら、DatagramPacketのcapacityが前回取得時の値に固定されている?
で、悩みに悩んで打った対策がこれ。
「DatagramSocket.SetData()をreceive()の前に毎回行う」
try {
m_socket.setSoTimeout(15000);
// setDataを読み込みの度に必ず行わないとAndroid4.0で受信サイズが固定されてしまう!
packet.setData(m_buffer); // byte[] m_buffer = new byte[1024];
m_socket.receive(packet);
} catch (SocketTimeoutException e) {
以下省略
これって仕様? バグ?
- Comments: 0
- TrackBacks: 0
Android SDK最新版入れるときの罠とか
- 2012年2月20日 23:18
- c09_02:Androidアプリ
何回かやってるはずなのに毎回引っかかる罠。
事の発端はNexus SにAndroid 4.0.3を適用したこと。
手持ちにAndroid4の端末がなかったので、API Level14までしかない。
さて16入れるとなると...
とりあえずEclipseからSDK Managerで更新。
するとNexus SがUSBで認識しなくなった。
ここでEclipse本体側のパッケージも更新しないといけないのを忘れてたのがいかん。
で、更新したんだけど再起動しても認識しやしない。
いや、認識しないというのは厳密には違って、最初認識するんだけどDDMSから端末をクリックすると切れる。
どういうことだろう、と思いながらもうひとつあったケーブルにつないでみたら難なく認識。
なんだよそれー。
1時間はかかったかなぁ。
そのご、アプリの動作検証したけどエラーも出ないのに音声がでない。困るね...。
- Comments: 0
- TrackBacks: 0
Androidでハードが載ってるかどうか事前に調べる
- 2012年2月 1日 23:30
- c09_02:Androidアプリ
読むべきものはGoogleのドキュメントだよなーとつくづく思うとともに反省。
if ([context].getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
// カメラある場合の処理
}
それより困ってることがあるんだけど、別の記事で。
- Comments: 0
- TrackBacks: 0
Androidでカメラを使うけれども必須でないアプリを作りたい場合
- 2012年1月31日 23:44
- c09_02:Androidアプリ
これ、探してもなかなか答えが出てこなくて数日悩んだのだが、結果はこれ。
<uses-feature android:name="android.hardware.camera" android:required="false" /><>は当然半角で。
android:requiredでfalseを指定するらしい。
パーミッションは指定しないとカメラ使った時点でアプリが落ちるし、どうしたもんかと悩みまくっていた挙句の結果でした。うがぁ。
今後はこういう小ネタも含め、色々とネタをアップしていきたい所存。
- Comments: 0
- TrackBacks: 0