Bescottee苦しいときは伸びてるとき、楽なときは伸びていないとき

15 1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法

admin to KnowHow, development — Tags: , ,  

「Android デベロッパーラボ 東京 2011」に参加して、Androidタブレット向けアプリ開発方法を聞いてきました。その1その2で内容を紹介しています。

このイベントの codelab ではスマートフォン向けアプリをタブレット向けアプリに変更する実践を行いました。さらにそれを発展させて、1apkでタブレット向けとスマートフォン向けアプリに対応させる方法を検討してみました。
codelab でスマートフォン向けアプリをタブレット向けアプリに変更して、以下のようなクラス図になりました。
adl2011jpのstep7時点のクラス図

1apkで両対応させるために、以下の方針でクラス設計を行います。
タブレット向けアプリ: 1 Acrivity に 複数の Fragment を割り当てる(変更なし)
スマートフォン向けアプリ: 1 Activity に 1つの Fragment を割り当てる

更新したクラス図は以下のようになる予定です。タブレット向けとスマートフォン向けのActivity が明確になるように、パッケージをそれぞれ tablet と phone を追加して、そのパッケージ内に Activity をいれました。緑色のところが今回のために追加・変更した部分です。Fragment を実装した各画面パーツはそのまま上位のパッケージのままとしました。

ここで1つ重大な課題が発生しました。1apkのため、アプリ起動時に起動した端末がタブレットかスマートフォンかを判定するロジックが必要になりました。
これについては、

Google IO 2011 のスケジュールアプリ(http://code.google.com/p/iosched/)の中で Honeycomb 3.1かつ大画面タブレット と それ以外(大半がSDK Version 10(GingerBread 2.3.3)以内でしょうが)の判定ロジックがあり、参考になります。今回はこのあり方を採用させて頂くことになると思います。

年末に出るといわれている Ice Cream Sandwich (ICS)(バージョン番号不明)ではタブレットとスマートフォンの両方に標準対応するそうで、このあたりの判定ロジックも提供されると思うので、それまではこのやり方が利用できそうです。

public static boolean isHoneycomb() {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}

public static boolean isHoneycombTablet(Context context) {
    return isHoneycomb() && (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            == Configuration.SCREENLAYOUT_SIZE_XLARGE;
}

クラス設計を行ったクラスの具体的な実装はまた後日紹介する予定です。

以上

15件のコメント »

  1. gom より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 | Bescottee – http://andbrowser.com/develop...

  2. gom より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 | Bescottee – http://andbrowser.com/develop...

  3. わかめ より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 – http://andbrowser.com/develop...

  4. vvakame より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 http://ff.im/-HYbIn

  5. bilyakudan より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 http://ff.im/-HYbIn

  6. t_furu より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 http://ff.im/-HYbIn

  7. miquniqu より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 http://ff.im/-HYbIn

  8. designingsolid より:

    http://andbrowser.com/development/knowhow/186/1apk-tablet-phone-development/ 1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 | Bescottee

  9. Tsubaki Naoko より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 | Bescottee – http://andbrowser.com/develop...

  10. tryal より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 | Bescottee http://goo.gl/fjVZb

  11. kno-rsr75 より:

    スマフォ、タブレット判定ロジック

  12. kurose_yuji より:

    http://is.gd/s4u4kU
    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法。
    たまたま見つけた。へぇ~。

  13. irgaly より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 | Bescottee http://t.co/y14tgmb

  14. farvel より:

    1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 | Bescottee – http://andbrowser.com/develop...

  15. [...] 考にさせていただきました。 1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 – Bescottee [...]

このコメント欄の RSS フィード トラックバック URL

コメントをどうぞ