Как программно получить версию ОС Android и другую информацию об устройстве

| 27.03.2015

В редких случаях, но может оказаться нужным получить некоторую информацию о версии ОС Андроид, на которой запускается приложение. Это может определить выбор реализации того или иного функционала. Рассмотрим простой пример, как это можно сделать. Помимо версии ОС будем выводить на экран и другую информацию, например, название устройства, производителя, модель.

Итак, создайте новое приложение. Мы будем использовать только один экран с TextView, в котором, собственно, все и будем отображать.

1. Разметка экрана res/layout/activity_main.xml

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/txtV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"/>

</RelativeLayout>

2. Я использовал базовые отступы res/values/dimens.xml

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>

3. Класс MainActivity.java

package ru.androiddocs.getosversion;

import android.os.Build;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView txtV = (TextView) findViewById(R.id.txtV);
        txtV.setText("Your Android OS version: " + Build.VERSION.SDK_INT + "\n"
                + "DEVICE: " + Build.DEVICE + "\n"
                + "PRODUCT: " + Build.PRODUCT + "\n"
                + "MANUFACTURER: " + Build.MANUFACTURER + "\n"
                + "BRAND: " + Build.BRAND + "\n"
                + "MODEL: " + Build.MODEL
                );
    }

}

Мы используем класс Build, который позволяет получить нужную нам информацию. Класс имеет множество интересных статических свойств, которыми мы и воспользуемся.

Build.VERSION.SDK_INT — числовой код версии ОС
DEVICE — позволяет получить «кодовое» имя устройства
PRODUCT — очень схоже с предыдущим, возвращает то же самое значение. Хотя не исключаю, что может быть различным
MANUFACTURER — производитель
BRAND — бренд, с которым ассоциируется данное устройство
MODEL — модель устройства

Запускаем приложение. Вот такую информацию я получил на своем Nexus 5.

Как программно получить версию ОС Android и другую информацию об устройстве

Помимо оперирования числовым значением текущей версии, имеются также константы для всех версий ОС Андроид:

Build.JELLY_BEAN — 16
Build.KITKAT — 19
Build.LOLLIPOP — 21

и т.д.

Эти константы можно использовать в коде:

if (Build.VERSION.SDK_INT < Build.JELLY_BEAN) {
    // здесь код для версий меньше, чем 16    
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*