リソースの設定修飾子を利用すれば、デバイスがタブレットなのか、スマートフォンなのかが
楽に判断でき、コードも非常にシンプルになります。
実装にあたっては、下記のようにリソースを配置します。
res/values/bools.xml
<bool name="isTablet">flase</bool>
res/values-sw600dp/bools.xml
<bool name="isTablet">true</bool>
上記の構成でリソースを配置して、isTabletのbool値を定義します。
(※この例では最小描画幅600dp以上をタブレットとして扱います)
これを読み込む下記のコードで、端末がタブレットかスマートフォンか判断できます。
public static boolean isTablet(Context context) { return context.getResources().getBoolean(R.bool.isTablet); }
使用する場合は対象のAndroidバージョンが3.2以上である必要があります。
(より古いバージョンではサイズセットを使用する代替案があります)
sw600dpのサイズ修飾子についての詳細は下記になります。
→http://yuki312.blogspot.com/2012/03/androidsw.html
この仕組みを利用して「最小画面幅が600dp以上であればタブレット」という条件の下、
システムの最適なリソース選択手順を利用して、タブレットかスマートフォンかを判断す
ることが可能です。
余談:
つまるところ「タブレットかスマートフォンか?」は「画面領域に余裕があるかないか?」
であることがほとんどです。それを考えるとisTabletというメソッド名はあまりよい名前
とは言えないかもしれません。
以上です。