読者です 読者をやめる 読者になる 読者になる

自分用メモ:GPSロガーを実装する際に参考となるOSS

「これだ!」って状態が見極められたら、ちゃんとGPS周りのエントリー書くつもりだけど、とりあえずメモ。 mytracks - MyTracks for Android - Google Project Hosting com.google.android.apps.mytracks.services.TrackRecordingService.java open-gpstrack…

別プロセスで動作させているServiceでGPSを使う方法

android:process=":remote"なServiceではGPS(LocationManager)を利用できない - DenkiYagiの解決編。 現象 別プロセスで動作させているService(AndroidManifestでandroid:process=":remote"のように指定しているService)で、GPSを使おうとすると(Locati…

LocationManager.requestLocationUpdates()の挙動を深追いしてみた

あとでちゃんと書き直すけど、だいたいこんな感じ。このエントリを書いてから、色々知見があったので、改めて新しくエントリを書く予定。 LocationManager.requestLocationUpdates()の第一引数にはminTimeを指定するようになっている。 minTimeを指定すると…

Androidの設定画面(Activity)を表示する

AndroidのWifi設定画面を開く方法(Honeycomb対応) (理ろぐ)を参考に、WiFi設定画面を呼び出す例。 startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)); これだけ。簡単すね。設定画面の定数値はAndroidのリファレンスに載ってます…

ネットワーク接続/切断イベントをハンドリング

掲載コードに問題があったので、こっそりエントリを再々修正。 ネットワーク接続状態は必ずConnectivityManagerを使って取得する。なお、ConnectivityManagerを利用するには、AndroidManifest.xmlにを追加する必要がある。 サンプルコード public class Netw…

Android組込みのHttpComponent(HttpClient)の正しい使い方といくつかのtips

ブログ等に掲載されているHttpComponentのサンプルコードは、重要なところが端折られて紹介されている(というか間違っている事を知らずに書いている疑惑すらある)ことが多いので、正しいサンプルコードを書いておく。 まぁ、ここだけでなくApache HttpComp…

android:process=":remote"なServiceではGPS(LocationManager)を利用できない

追記:解決した→別プロセスで動作させているServiceでGPSを使う方法 - DenkiYagiandroid:process=":remote"なServiceでは何故かGPSをキャッチできない。ドキュメントに:remoteなServiceで使える/使えないと明記されている訳ではないので、何か間違えるだけな…

Foregroundで起動させているServiceを強制終了させると勝手に再起動してしまう

再起動自体を無効化させる方法が判らなくて困ってる感じ。 現象 startForeground()でForeground実行しているServiceを(DDMSなどを使って)強制終了させると、Android OSが勝手にServiceをForegroundで再起動してくれる。 Notificationも復活させてくれるの…

Serviceのデバッグができない(breakpointが仕込めない)

Serviceがandroid:process=":remote"になってるとbreakpointが仕込めないみたいなので、開発中は外しましょう。

画面描画やアニメーションがちらつく件につきまして

もしかしてLayoutに対してstartAnimation()を使っていないでしょうか?Layoutをアニメーションさせる場合はstartLayoutAnimation()を利用しましょう。このコードは意図した通りに動きません。 TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 50…

Galleryに表示するItemが重なってしまう現象への対応

現象 Galleryに適当なViewを表示させようと思ったら、重なって表示されてしまった。 コードの重要な部分だけ抜粋。 layout.xml

MapView使おうとしたら、verifyerrorとかClassNotFoundExceptionとか出る

しょーもないことで1時間ぐらい潰した。MapView使おうとしたら、verifyerrorとかClassNotFoundExceptionとか出る場合、単純ミスの可能性が高い。AndroidManifest.xmlのの位置が間違ってないか確認する。 誤

エミュレータかどうか判定する

id:gabuchan 本を参考にして、こんな感じになった。 public boolean isEmulator() { return Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID) == null; } AndroidSDK開発のレシピ―104個のレシピで学ぶAndroidアプリ開発の極意p…

疑似ロケーション(mock location)が有効になっているか判定する

こんな感じでいけるみたい。 public boolean isMockLocationAllowed() { try { return Settings.Secure.getInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION) == 1; } catch (SettingNotFoundException e) { e.printStackTrace(); return fal…

OpenGLに行く前にSurfaceViewを実装してみた

Android + OpenGL ESをちょっと調べてて、そこに行くよりも前にSurfaceViewを扱ったほうが良さそうなことに気がついた。 SurfaceViewというのは、名前からも分かるとおり、Viewのサブクラスです。以前連載第4回の「簡単でワクワクするAndroidウィジェット10…

Android 1.6 + OpenGL ES 1.0に触れてみた。

社長に「お前は3Dやゲームプログラミング(グラフィック周り)もわからんのか!だからお前はアホなのだぁぁぁ!(意訳」とよく言われるので、ちったあOpenGL ESでも触ってみようかと思って本を買ってきた。OpenGL ES 2.0 プログラミングガイドposted with am…

ディスクに空きがない時にSQLiteへINSERTしようとした場合の挙動

Androidでディスクに空きがない時にSQLiteへINSERTしようとした場合の挙動を確認してみた。てか、どんな挙動するのかぐらいドキュメントに書いとけよ>Google結果として、以下の2つのタイミングでSQLiteDiskIOExceptionが発生することが確認できた。 書き込…

Androidでパスワード付きzipを生成する

Java Zipユーティリティークラス (Hishidama's Java Zip class)のhmzip16.jarをdarty hackする必要がある。 hmzip16.jarはAndroidで使うことができない ダウンロードしてきたjarをそのまま使おうとすると java.lang.VerifyErrorが発生する。このExceptionは…

Serviceのライフサイクルの動作確認

ググればライフサイクルのフローチャートが出てくるだけど、念のため動作確認してみた。想定していたのと違う挙動をしたパターンがいくつかあった。 要点 unbind()せずにServiceは停止できない。 テストコード 基本的にはAIDLを使ったServiceを作ってるだけ…

他のアプリ(パッケージ)からもアクセスできるServiceを作る

サンプルと要点 unable to bind to a service - Android Developers | Google Groups の一番最後に実装例が紹介されていた。要はAIDL(Android Interface Definition Language)を用意すればOK。 Remote Service(提供側) cw-advandroid/AdvServices/Remote…

インストール済みアプリの一覧を取得したり、指定アプリがインストールされているか判定したり

PackageManagerを使えば良いらしい。 import java.util.List; import android.app.Activity; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; imp…

Androidで個体識別番号を取得する

Androidの個体識別番号の取得には、「ANDROID_ID(Marketで使われるID)を取得する方法」と「SIMから取得する方法」の2通りがあるけど、SIMなしWi-Fi運用してる人も多そうだから、特に理由がなければ後者は使わない方がいいような気もする。以下、ANDROID_ID…

Windows7(x64)にXperia USBドライバ(Android ADB Interface)をインストール

たくまけい: Xperia X10とWindows 7 64bit の USBドライバに書いてある手順の通りなんだけど、もうちょっと親切な書き方に。 XperiaをPCから外す Xperia側で「メニュー>設定>アプリケーション>開発>USBデバッグ」を有効にする PdaNet -- USB Tether/Bluetoot…

Android SDK 1.0 r1がリリースされてたのでブラウザチェック。

T-Mobileの発表に合わせてだと思いますが、Android SDK 1.0 r1がリリースされてますね。 とりあえず、さっくりとSDK同梱のエミュレータのブラウザ起動してUserAgentをチェックしてみた。結果的にはSDK 0.9betaの頃と変わってなさげな雰囲気。 WebKit 523.12.…