android

Eclipseが起動しなくなったときの対応の要点だけ

Androidアプリの開発で使うEclipseだけど、作業途中でハングアップ、強制終了後に再起動しても起動中の”building workspace…”あたりで起動がハングしてしまうことがあって、その対応メモ。 Eclipseの強制終了後、起動しなくなる問題の一つはEclipseの一時ファイル.snapファイルというやつが壊れている事が原因みたい。 なので、このファイルを削除してしまえばOK。こんな感じ: rm path/to/workspace/.metadata/.plugins/org.eclipse.core.resources/.snap rm path/to/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/*/.*.snap これはワークスペースの変更を記録しているファイルで、強制終了後とかに作業状態の復帰とかに使われるものみたい。これが壊れていると復旧途中で止まってしまうということっぽい。 ということで削除後、Eclipseを普通に起動すればきちんと起動するはず。もしくは.metadata/.logを見ると、何かしらエラーログが記録されているはずなのでこれをチェック。

Android Widgetのライフサイクルについて要点だけ

Android App Widgetのライフサイクルイベントは4つ。公式ドキュメント読んだだけではいまいち分かりづらかったので調べてみたメモ。 (1)onEnabled(Context context) 一つ目のウィジェットがホームに追加されるとき。 (2)onUpdate(Context context, AppWidgetmanager appWidgetManager, int appWidgetIds) ウィジェットがホームに追加されるとき。一つ目のときはonEnabledの直後に呼ばれる。2つ目以降(=同じウィジェットが既にホームに置かれている場合)はこのonUpdateだけがコールされる。 appWidgetIdsには、アップデート対象のウィジェットのIDが入ってる。なので、widgetの追加時には基本的に1つのIDの配列で、定期更新時には2つ以上のIDが入ってる可能性があるっていうことみたい。 (3)onDeleted(Context context, int appWidgetIds) ウィジェットがホームから削除されるとき。他にウィジェットが残っているとき(=同じウィジェットがまだホームに置かれている場合)はこのonDeletedだけが呼ばれる。 (4)onDisabled(Context context) ホームから最後のウィジェットが削除されるとき、onDeletedの直後にコールされる。 もういっこonReceivedは上記3つが結局コールされるので、通常はあんまり気にしなくて大丈夫みたい。以下4つ以外のBroadcastをなんとかしたい時にきにすれば良い。 ACTION_APPWIDGET_DELETED→onDeleted ACTION_APPWIDGET_DISABLED→onDisabled ACTION_APPWIDGET_ENABLED→onEnabled ACTION_APPWIDGET_UPDATE→onUpdate

Android Manifestのuses-sdkの要点だけ

AndroidManifest.xmlの<uses-sdk>項目について調べた。 Androidにおいて、APIレベルでの複数デバイスへの互換性を確保するにはAndroidManifest.xmlの<uses-sdk>を使う。 この項目はデフォルトでは存在しない。追記は<manifest>の子要素。 android:minSdkVersion、android:maxSdkVersion、android:targetSdkVersionの3属性が設定できる。 値は整数で、Android SDKごとに設定されるAPI Levelの値を指定する。(参照:Android API Levels) 特に重要なのはandroid:minSdkVersion。この設定より古いAPI Levelの端末にはインストールされない。これはデフォルトでは1なので、Android Platform 1.0までアプリがサポートしていることになってしまう。ちなみにdocomoが初めて発売したAndroid端末はHT-03Aで、これはAndroid 1.5=API Level 3。 android:targetSdkVersionは、システムにこのバージョンでテストしていることを示すもの。OSが様々な互換性のための設定を行うときに利用されるみたい。 android:maxSdkVersionというのは設定しないほうが良い。アプリケーションが特定のバージョンより新しいものにインストールされなくできる。 参考:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html たとえばXperia arcで開発していると、ListViewの中身がスクロール時に拡大されてしまう問題というのがあるのだけど、この<uses-sdk>項目の設定で解決するようだ。以下のMLだとminSdkVersionを指定してやると解決すると書いてあるけど、上のドキュメントを読んでandroid:targetSdkVersionだけ設定してあげても解決できたみたい。 参照:http://groups.google.com/group/android-group-japan/browse_thread/thread/78e5b1b66237ee9f

Google I/O 2011: Android Honeycomb 3.1の要点だけ

Google I/O 2011のKeynoteで、Androidの新プラットフォームのAndroid 3.1 Platformが発表された。これはまだタブレット専用のもので、タブレットとスマートフォンOSの統合は次期Icecream Sandwichリリースを待つ事になる模様。 一番注目すべきは外部デバイス向けのAPIが標準化されたことかな。ともあれこれとKeynoteで別途発表されたAndroid@Home構想(あとGoogle TVも?)を合わせると大まかなAndroid Platformの方向性が見えるということかも知れない。 情報元:Android 3.1 Platform, New SDK tools, Android 3.1 Platform Highlights ユーザ向け: UIの改善:最近使ったアプリ、リサイズ可能ウィジェットなど 入力システムの拡張:マウス、キーボード、ジョイスティック等からの入力サポート Wi-Fi接続の改善 アプリのアップデート:ブラウザ、ギャラリー、カレンダー、連絡先、メール エンタープライズ向け:Wi-Fi接続にHTTP Proxyの設定が可能に。“encrypted storage card”サポート 開発者向け: Open…

Google I/O 2011 Android関連セッションの5/11分要点だけ

5/10-11日にかけて、Googleの開発者向けイベントであるGoogle I/Oが開催されます。そこで、Android関連のセッションをピックアップしてみました。5/11日分。ライブストリーム配信されるものもあるようです。あと時間はサンフランシスコ時間。ソースはhttp://www.google.com/events/io/2011/index.html、Androidアプリも出ているようです。twitterのハッシュタグは#io2011、公式アカウントは@googleio。

Google I/O 2011 Android関連セッションの5/10分要点だけ

5/10-11日にかけて、Googleの開発者向けイベントであるGoogle I/Oが開催されます。そこで、Android関連のセッションをピックアップしてみました。まずは5/10日分。ライブストリーム配信されるものもあるようです。あと時間はサンフランシスコ時間。ソースはhttp://www.google.com/events/io/2011/index.html、Androidアプリも出ているようです。twitterのハッシュタグは#io2011、公式アカウントは@googleio。

Androidの明示的インテントと暗黙的インテントについて要点だけ

Androidアプリのインテントには「明示的インテント」と「暗黙的インテント」の2種類がある。 明示的インテントは呼び出す側から「名指し」でアクティビティを起動する仕組み。 暗黙的インテントは、呼び出す側はやりたい事だけを指定する。呼ばれるアクティビティ側が自分の処理できる内容を把握(宣言)している。 あるインテントを複数のアクティビティが処理できる場合、ユーザが選択できる。

AndroidでListViewの要素の高さを固定したいときの要点だけ

AndroidのListViewで、要素(行)の高さを固定したいとき。 例えば行がLinearLayoutだとして、 <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android” android:layout_width=“fill_parent” android:layout_height=“100dp”> <!– SOME UI –></LinearLayout> みたいなheightの設定だけでは不十分で、 <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android” android:layout_width=“fill_parent” android:layout_height=“100dp” android:minHeight=“100dp”> <!– SOME UI –></LinearLayout> みたいにminHeight(最小の高さ)も設定する必要がある。