بدست آوردن اطلاعات دستگاه اندرویدی

بدست آوردن اطلاعات سخت افزاری و نرم افزاری دستگاه‌های اندرویدی
در این جلسه از سری مباحث آموزش برنامه نویسی اندروید به نحوه بدست آوردن اطلاعات دستگاه اندرویدی شامل مشخصات سخت افزاری و نرم افزاری به وسیله کلاس Build می‌پردازیم.

بدست آوردن اطلاعات دستگاه‌های اندرویدی

به نام خدا. با توجه به متن باز بودن سیستم عامل اندروید، تولید کنندگان مطرح و گمنام بی شماری انواع دستگاه‌های اندرویدی را تولید و روانه بازار می‌کنند. هر مدل از این دیوایس‌ها دارای سخت افزاری متفاوت از سایر مدل‌هاست. همچنین با توجه به انتشار نسخه‌های جدید اندروید توسط گوگل، نسخه‌های مختلفی از این سیستم عامل توسط کاربران در حال استفاده است.
گاهی اوقات ممکن است بخشی از عملکرد برنامه ما وابسته به نسخه خاصی از اندروید و یا سخت افزار مانند CPU باشد. یا اینکه بخواهیم بخشی از برنامه بر اساس تفاوت سخت افزار و نرم افزار هر دستگاه، به شیوه متفاوتی اجرا شود. در هر صورت لازم است تا توسعه دهنده اندروید به ویژگی‌های نرم افزاری و سخت افزاری دستگاه دسترسی داشته باشد.
در اندروید کلاسی با نام Build این وظیفه را بعهده دارد. در آموزش‌های گذشته مانند آموزش کار با نوتیفیکیشن در اندروید و آموزش Service در اندروید نیز از این کلاس برای تشخیص نسخه اندروید و انجام عمل متناسب با آن استفاده کرده بودیم. در این جلسه قصد دارم سایر قابلیت‌های این کلاس را بررسی کنم.

ویژگی‌های کلاس Build

در جدول زیر به تعدادی از ویژگی‌های کلاس Build پرداخته و کاربرد هرکدام را به مختصر توضیح می‌دهم:

نام ویژگی شرح
BRAND برند سازنده دستگاه
MANUFACTURER نام سازنده دستگاه
DEVICE نام طرح صنعتی دستگاه
MODEL نام رسمی دستگاه
DISPLAY شناسه صفحه نمایش دستگاه
TYPE نوع دستگاه از جمله “user” و “eng”
HARDWARE مشخصات سخت افزار دستگاه
PRODUCT نام کلی دستگاه
VERSION.RELEASE نسخه اندروید
VERSION.SDK_INT نسخه SDK اندروید
نکته: خروجی برخی ویژگی‌ها مانند BRAND و MANUFACTURER در اکثر دستگاه‌ها یکسان است.

پروژه بدست آوردن اطلاعات دستگاه اندرویدی

قصد دارم تعدادی از مهمترین ویژگی‌های کلاس Build اندروید را در قالب یک پروژه ساده استفاده کنم بطوری که خروجی روی اکتیویتی نمایش داده شود. مطابق مبحث آموزش ساخت پروژه در اندروید استودیو یک پروژه اندرویدی با نام DeviceInfo می‌سازم. اکتیویتی را از نوع Empty Activity و زبان را Java انتخاب کردم.
ابتدا ۵ عدد TextView به layout اکتیویتی اضافه می‌کنم. هرکدام از این View ها یکی از مشخصات دستگاه را نمایش خواهد داد.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txt_manufacturer"
        android:textSize="20dp"
        android:text="" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txt_model"
        android:textSize="20dp"
        android:text=""
        android:layout_below="@id/txt_manufacturer" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txt_version"
        android:textSize="20dp"
        android:text=""
        android:layout_below="@id/txt_model"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txt_sdk"
        android:textSize="20dp"
        android:text=""
        android:layout_below="@id/txt_version" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txt_hardware"
        android:textSize="20dp"
        android:text=""
        android:layout_below="@id/txt_sdk" />

</RelativeLayout>

سپس اکتیویتی را به صورت زیر تکمیل می‌کنم:

MainActivity.java

package ir.android_studio.deviceinfo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    TextView manufacturerTxt, modelTxt, versionTxt, sdkTxt, hardwareTxt;

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

        manufacturerTxt = findViewById(R.id.txt_manufacturer);
        modelTxt = findViewById(R.id.txt_model);
        versionTxt = findViewById(R.id.txt_version);
        sdkTxt = findViewById(R.id.txt_sdk);
        hardwareTxt = findViewById(R.id.txt_hardware);

        String manufacturer = Build.MANUFACTURER;
        String model = Build.MODEL;
        String version = Build.VERSION.RELEASE;
        int sdk = Build.VERSION.SDK_INT;
        String hardware = Build.HARDWARE;

        manufacturerTxt.setText("Manufacturer: " + manufacturer);
        modelTxt.setText("Model: " + model);
        versionTxt.setText("Version: " + version);
        sdkTxt.setText("SDK: " + Integer.toString(sdk));
        hardwareTxt.setText("Hardware: " + hardware);

    }
}

چهار متغیر از جنس String و یک متغیر از جنس int تعریف کرده‌ام که به ترتیب، مشخصات مربوط به MANUFACTURER و MODEL و RELEASE و SDK_INT و HARDWARE را از کلاس Build گرفته و ذخیره می‌کنند. در نهایت هرکدام را روی یک TextView نمایش می‌دهم.
پروژه را اجرا می‌کنم:

نمایش ویژگی‌های دستگاه اندرویدی توسط کلاس Build

ملاحظه می‌کنید مشخصات دستگاه شامل نام سازنده، مدل دستگاه، نسخه اندروید، نسخه SDK و مدل CPU در اکتیویتی نمایش داده شده است.
از جمله کارایی‌های این کلاس می‌توان به اجرا یا عدم اجرای کد ساخت کانال نوتیفیکیشن بر اساس نسخه سیستم عامل اشاره کرد که در مبحث آموزش کار با نوتیفیکیشن در اندروید به آن پرداخته شده است:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

    // Create Notification channel

}

شرط فوق بررسی می‌کند در صورتی کد اجرا شود که نسخه اندروید دستگاه حداقل Oreo و یا بالاتر باشد.
موفق و پیروز باشید.

مطالعه‌ی بیشتر:

https://developer.android.com/reference/android/os/Build
https://developer.android.com/reference/android/os/Build.VERSION

توجه : سورس پروژه درون پوشه Exercises قرار دارد

دانلود نسخه PDF این آموزش به همراه سورس پروژه
تعداد صفحات : ۶
حجم : ۱ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۱ مگابایت لینک کمکی
این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید
4.1/5 - (14 امتیاز)
پرسش‌ها و دیدگاه‌های کاربران
دوره آموزش برنامه نویسی اندروید
دوره آموزش برنامه نویسی اندروید

با دریافت این دوره به تمامی آموزش‌های غیر رایگان و رایگان موجود در وب سایت دسترسی دارید که تخفیفی برای آموزش‌های غیر رایگان نیز درنظر گرفته شده. این پکیج به دو صورت دانلودی و ارسال پستی ارائه می‌گردد.
آموزش‌های اندروید استودیو در دو دسته «پایه» و «تکمیلی» منتشر می‌شوند.
آموزش‌های پایه شامل مباحث اصلی و ضروری و آموزش‌های تکمیلی مطالبی است که می‌بایست در کنار مطالب اصلی بررسی شود.
با خرید این دوره، به تمامی آموزش‌های غیر رایگانی که در آینده منتشر می‌شود نیز به صورت رایگان دسترسی خواهید داشت!

یک دیدگاه بنویسید

پرسش‌های زیر تایید و پاسخ داده نـــخواهند شد:
۱: جزء موارد مطرح شده در صفحات مشکلات و پرسش‌های رایج و بروزرسانی‌های محتوای آموزشی باشد
۲: سوال قبلا توسط کاربران در دیدگاه‌ها مطرح و پاسخ داده شده باشد
۳: پرسش خارج از مبحث آموزشی موجود در این صفحه باشد

  • سعید گفت:

    همین کد رو بصورت که شما نوشتید وارد کردم
    ۶ تا ارور
    package R does not exist
    میده
    بنظرم دقیق تر توضیح بدید بهتر است برای جذب مشتری الان تمایلی استفاده از سایت شما رو ندارم

    • سیدمهدی مطهری گفت:

      سلام. اروری که شما گرفتید مربوط به سینک نشدن پروژتون هست و ارتباطی به مبحث این آموزش نداره کلا!
      قسمت build پایین صفحه رو ببینید چرا بیلد نشده اگه چیزی نبود یه بار گزینه Sync رو بزنید تا پروژه سینک بشه.
      قبل اینکه سراغ مباحث تکمیلی برید با کلیت کار آشنا بشید تا برای یه ارور عمومی اینطوری دنبال جواب نباشید

  • احسان گفت:

    سلام خسته نباشید. چطور میشه فهمید برنامه ای که کتاب خانه .so دارد برای چه نوع پردازنده ای ساخته شده؟
    سوالم برای زمانی هست که از هر پردازنده یک خروجی apk میگیریم

  • حميد گفت:

    بسیار عالی بود. ساید شما داره سرآمد سایتها و مرجع میشه. واقعا به تک تک موارد دارید اشاره میکنید. دستتون درد نکنه