Подтвердить что ты не робот

Как обнаружить устройство - это Android-телефон или планшет Android?

У меня есть два приложения для планшетов Android и телефонов Android. Для приложения для планшета я установил android:minSdkVersion="11". Но в настоящее время телефоны Android, такие как Galaxy S3, имеют версию Android 4.0.4, поэтому пользователи S3 могут загрузить приложение для моего планшета из Google Play Store. Я хочу предупредить пользователей телефона, чтобы они загружали приложение для телефона при установке приложения для планшета. И наоборот, пользователи планшетов загружают приложение для планшета, когда запускают приложение для телефона.

Есть ли простой способ определить тип устройства?

Редактировать:

Я нашел решение по этой ссылке.

В своем файле манифеста вы можете объявить функцию экрана для телефона и планшета, после чего Google Play определит разрешения на загрузку для телефона и планшета.

4b9b3361

Ответ 2

Вы также можете попробовать это
Добавьте параметр boolean в файл ресурсов.
в res/values ​​/dimen.xml файл добавить эту строку

<bool name="isTab">false</bool>

в то время как в res/values-sw600dp/dimen.xml файл добавляет эту строку:

<bool name="isTab">true</bool>

то в вашем java файле получите это значение:

if(getResources().getBoolean(R.bool.isTab)) {
    System.out.println("tablet");
} else {
    System.out.println("mobile");
}

Ответ 3

В этом фрагменте кода будет указано, имеет ли тип устройства 7 дюймов или более, а также Mdpi или более высокое разрешение. Вы можете изменить реализацию в соответствии с вашими потребностями.

 private static boolean isTabletDevice(Context activityContext) {
        boolean device_large = ((activityContext.getResources().getConfiguration().screenLayout &
                Configuration.SCREENLAYOUT_SIZE_MASK) ==
                Configuration.SCREENLAYOUT_SIZE_LARGE);

        if (device_large) {
            DisplayMetrics metrics = new DisplayMetrics();
            Activity activity = (Activity) activityContext;
            activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

            if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT
                    || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH
                    || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM
                    || metrics.densityDpi == DisplayMetrics.DENSITY_TV
                    || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) {
                AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True");
                return true;
            }
        }
        AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False");
        return false;
    }

Ответ 4

Используйте возможности магазина Google Play и разрешайте загружать приложение планшета на планшеты и приложение телефона на телефонах.

Если пользователь затем устанавливает неправильное приложение, то они должны быть установлены с использованием другого метода.

Ответ 5

У нас была аналогичная проблема с нашим приложением, которое должно переключаться на основе типа устройства - Tab/Phone. IOS отлично дал нам тип устройства, но эта же идея не работала с Android. метод разрешения /DPI не удался с небольшими вкладками res, телефонами с высоким разрешением. после того, как много порванных волос и ударило головой о стену, мы попробовали странную идею, и она работала исключительно хорошо, что не будет зависеть от резолюций. это тоже поможет вам.

в главном классе, напишите это, и вы должны получить свой тип устройства как null для TAB и мобильного телефона для телефона.

String ua=new WebView(this).getSettings().getUserAgentString();


if(ua.contains("Mobile")){
   //Your code for Mobile
}else{
   //Your code for TAB            
}

Ответ 6

Используйте следующий код для идентификации типа устройства.

private boolean isTabletDevice() {
     if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb
         // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11
         Configuration con = getResources().getConfiguration();
         try {
              Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast");
              Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE
              return r;
         } catch (Exception x) {
              return false;
         }
      }
    return false;
}

Ответ 7

Если вы хотите определить, является ли устройство планшетом или телефоном с диагональю экрана, вы можете использовать следующие

Устройство размером 6,5 дюйма или выше считается планшетом, но у некоторых последних портативных телефонов диагональ выше. Хорошо, что с помощью следующего решения вы можете установить маржу.

public boolean isDeviceTablet(){
    DisplayMetrics metrics = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    float yInches= metrics.heightPixels/metrics.ydpi;
    float xInches= metrics.widthPixels/metrics.xdpi;
    double diagonalInches = Math.sqrt(xInches*xInches + yInches*yInches);
    if (diagonalInches>=6.5) {
        return true;
    }
    return false;
}

Ответ 8

Я думаю, что это должно обнаружить, если что-то может сделать phonecall, все остальное будет планшет/телевизор без возможностей телефона.

Насколько я видел, это единственное, что не полагается на экраны.

public static boolean isTelephone(){
    //pseudocode, don't have the copy and paste here right know and can't remember every line
    return new Intent(ACTION_DIAL).resolveActivity() != null;
}