Author: rawbytes

  • iOS Notification(通知)バッジナンバー表示の要点だけ

    iOSのNotificationでは、アプリケーションアイコンの右肩に数字(バッジ)を表示することができるけど、その数字を消去するときにちょっとした落とし穴があるのでメモ。まずはUIApplicationオブジェクトを取得して直接バッジを設定する場合。

    (1)アプリケーションオブジェクト(UIApplication)を通じて直接、バッジ設定する場合
    [UIApplication sharedApplication].applicationIconBadgeNumber = badgeNumber;

    この場合は、badgeNumber(NSInteger)の数字が正の数であれば、バッジ数字が表示、ゼロであればバッジアイコンは消去される。
    ではローカル通知を通じた場合はどうなるか。

    (2)ローカル通知オブジェクト(UILocalNotification)を通じたバッジ設定の場合。ちなみにローカル通知はiOS4から利用可能
    NSInteger badgeNumber = 1;
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];//30秒後
    notification.alertBody = @”ローカル通知メッセージ;
    notification.applicationIconBadgeNumber = badgeNumber;
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    [notification release];

    badgeNumberが正の数であれば、通知時に該当アプリのバッジにその数字が設定される。しかしゼロの場合は、直前のバッジ数字がそのまま残る。消去したい場合は、applicationBadgeNumberに負の数を設定すれば良い。ちなみに(1)のパターンのときもゼロでなく負の数を与えてもバッジは消える。
  • Android Developerサイトにあるデザインテンプレートまとめ(PSD)

    Android Developersサイトを見ていたら、色んなところにデザインテンプレートが落ちていたのでメモ。慣れるまではこれを下敷きにすれば、効果的にデザインが作れるのではないでしょうか。PSDで提供されてるので使いやすい。

    1.アイコン

    色んなアイコンテンプレート詰め合わせ。
    http://developer.android.com/intl/ja/guide/practices/ui_guidelines/icon_design.htm
    中身は以下のとおり
    ・ダイアログ
    ・ランチャー(HOME)
    ・リスト
    ・メニュー
    ・通知
    ・タブ
    Icon Templates Pack for Android 2.3
    http://developer.android.com/shareables/icon_templates-v2.3.zip

    2.ウィジェット
    ウィジェットもサイズに合わせて色々とテンプレが用意されてました。
    http://developer.android.com/intl/ja/guide/practices/ui_guidelines/widget_design.html

    4x1_Widget_Frame_Portrait.psd
    http://developer.android.com/images/widget_design/4x1_Widget_Frame_Portrait.psd

    3x3_Widget_Frame_Portrait.psd
    http://developer.android.com/images/widget_design/3x3_Widget_Frame_Portrait.psd

    2x2_Widget_Frame_Portrait.psd
    http://developer.android.com/images/widget_design/2x2_Widget_Frame_Portrait.psd

    4x1_Widget_Frame_Landscape.psd
    http://developer.android.com/images/widget_design/4x1_Widget_Frame_Landscape.psd

    3x3_Widget_Frame_Landscape.psd
    http://developer.android.com/images/widget_design/3x3_Widget_Frame_Landscape.psd

    2x2_Widget_Frame_Landscape.psd
    http://developer.android.com/images/widget_design/2x2_Widget_Frame_Landscape.psd

  • AndroidアプリをSDカードにインストール可能にする要点だけ

    • Android 2.2 “Froyo” からandroidmanifest.xmlで設定することでSDカードへのインストール、移動が可能になった
    • デフォルト設定は「端末のみ可」なので注意
    • <manifest>の要素にandroid:installLocationを指定する。
      • auto:通常端末内。端末容量が足りないときにSDカードへ。端末とSDカード間で移動可能
      • internalOnly:端末内のみインストール可。android:installLocationを設定しないときのデフォルト値
      • preferInternal:SDカードに優先的にインストール。SDカードの容量が足りないときに端末インストール。事後インストール可。
    • アプリがSDカードにあるときも各種データは端末内。

    <追記>
    つまり、アプリ側が対応してないと、SDカードに移動することは無理ってことですね。rootedな環境とかは知らない。

    • AndroidアプリからWEB検索させるインテント要点だけ

      1. Intent search = new Intent(Intent.ACTION_WEB_SEARCH);  
      2. search.putExtra(SearchManager.QUERY, “検索文字列”);  
      3. startActivity(search); 

      こんな感じでいけるみたい。外部のアプリが立ち上がって検索実行できる。
    • ADT Plugin for Eclipse アップデート

      Android Developers Blog: New Editing Features in Eclipse plug-in for Android

      AndroidのEclipseプラグインがアップデートしたみたい。
      あとでDLすることにして詳細は>http://developer.android.com/intl/ja/sdk/eclipse-adt.html

      あとここ http://tools.android.com/recent

      さらに、Google I/O 2011でのプレゼン動画

    • iCloudで訪れたiOSの「終わり」

      先日のWWDC 2011で事前の予告通り、Mobile meの後継になるクラウドサービスとなる”iCloud”が発表された。
      そして発表のKeynoteの中で語られたのは、iCloudは単なるネットサービスの枠を越えて、Appleの戦略上とても重要な位置を占めるものということだった。

      「10年前にAppleはデジタルハブというビジョンを掲げた。Macが様々なデジタル機器、メディアの中心になる」とジョブズ氏は語った。当時はまだやっとADSLが普及し出した頃だったしiPhoneみたいな小型の機器に一昔前のスーパーコンピューターに匹敵するみたいな性能が搭載されるなんてまだまだ先の話と思われた。レインポーiMacの発表はぶつぶつ切れるアナログモデム経由で見たんだった。

      (more…)

    • 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を見ると、何かしらエラーログが記録されているはずなのでこれをチェック。

    • WWDC 2011:「iPhoneでなければiPhoneじゃない」なのか

      「iPhoneでなければ、そんなのiPhoneじゃないんです」という奇妙なフレーズのCMをAppleが放映中だけど、日本時間6月7日午前2時からのWWDC 2011で発表される予定のMac OSX LionおよびiOS 5、iCloudでその本当の意味が分ることになるのかもしれない。
      (more…)

    • Android LogCatがすぐ消えてしまうときの対策howto要点だけ

      Androidアプリの開発で使うDDMS(Dalvik Debug Monitor Serviceっていうらしい)についてるLogCat、たまに一瞬だけ表示されてすぐ消える、みたいな現象でバグだと思ってたんだけどすごい単純なことで治るみたいだったのでメモ。

      (more…)

    • 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