| // Copyright 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.content.browser; |
| |
| import android.content.Context; |
| import android.content.pm.PackageManager; |
| |
| import org.chromium.base.CommandLine; |
| import org.chromium.content.common.ContentSwitches; |
| |
| /** |
| * A utility class that has helper methods for device configuration. |
| */ |
| public class DeviceUtils { |
| |
| /** |
| * The minimum width that would classify the device as a tablet. |
| */ |
| private static final int MINIMUM_TABLET_WIDTH_DP = 600; |
| |
| private static Boolean sIsTv = null; |
| private static Boolean sIsTablet = null; |
| |
| /** |
| * @param context Android's context |
| * @return Whether the app is should treat the device as a tablet for layout. |
| */ |
| public static boolean isTablet(Context context) { |
| if (sIsTablet == null) { |
| if (isTv(context)) { |
| sIsTablet = true; |
| return sIsTablet; |
| } |
| int minimumScreenWidthDp = context.getResources().getConfiguration(). |
| smallestScreenWidthDp; |
| sIsTablet = minimumScreenWidthDp >= MINIMUM_TABLET_WIDTH_DP; |
| } |
| return sIsTablet; |
| } |
| |
| /** |
| * Checks if the device should be treated as TV. Note that this should be |
| * invoked before {@link #isTablet(Context)} to get the correct result |
| * since they are not orthogonal. |
| * |
| * @param context Android context |
| * @return {@code true} if the device should be treated as TV. |
| */ |
| public static boolean isTv(Context context) { |
| if (sIsTv == null) { |
| PackageManager manager = context.getPackageManager(); |
| if (manager != null) { |
| sIsTv = manager.hasSystemFeature(PackageManager.FEATURE_TELEVISION); |
| return sIsTv; |
| } |
| sIsTv = false; |
| } |
| return sIsTv; |
| } |
| |
| /** |
| * Appends the switch specifying which user agent should be used for this device. |
| * @param context The context for the caller activity. |
| */ |
| public static void addDeviceSpecificUserAgentSwitch(Context context) { |
| if (isTablet(context)) { |
| CommandLine.getInstance().appendSwitch(ContentSwitches.TABLET_UI); |
| } else { |
| CommandLine.getInstance().appendSwitch(ContentSwitches.USE_MOBILE_UA); |
| } |
| } |
| } |