Android Code to Check Phone Information: A Complete Guide

When developing an Android application, you might need to check information about the device on which the app is running. Whether you're building a system for device-specific functionality or gathering data for debugging, it's important to know how to programmatically access the phone's details.

In this guide, we'll go over the essential Android code you can use to retrieve various information about the phone, such as device name, OS version, storage, battery status, and network details. All of these functionalities can be done with Android's APIs.


1. Getting Device Information:

To start, we'll explore how to retrieve basic information about the Android phone, such as its model, manufacturer, OS version, and other essential properties. This information can be accessed using the Build class.

Example Code to Get Device Information:

import android.os.Build;
import android.util.Log;

public class DeviceInfo {
    public static void printDeviceInfo() {
        // Get Device Information
        String deviceName = Build.MODEL; // Model of the device
        String manufacturer = Build.MANUFACTURER; // Manufacturer of the device
        String osVersion = Build.VERSION.RELEASE; // OS Version of the device
        String sdkVersion = Build.VERSION.SDK_INT; // SDK version of Android

        Log.d("DeviceInfo", "Device: " + deviceName);
        Log.d("DeviceInfo", "Manufacturer: " + manufacturer);
        Log.d("DeviceInfo", "OS Version: " + osVersion);
        Log.d("DeviceInfo", "SDK Version: " + sdkVersion);
    }
}

Explanation:

  • Build.MODEL: Returns the model name of the device (e.g., "Pixel 4").
  • Build.MANUFACTURER: Returns the manufacturer (e.g., "Google").
  • Build.VERSION.RELEASE: Returns the version of Android that is running (e.g., "11").
  • Build.VERSION.SDK_INT: Returns the SDK version number, useful for checking the API level.

You can call printDeviceInfo() from your activity or any other part of the application to get this information.


2. Checking Battery Information:

Knowing the current battery status (whether it's charging, the current battery level, etc.) can be critical for some apps. Android provides the BatteryManager class to check battery status.

Example Code to Get Battery Information:

import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.util.Log;

public class BatteryInfo {
    public static void printBatteryInfo(Context context) {
        // Create an intent filter to get battery status
        IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        Intent batteryStatus = context.registerReceiver(null, ifilter);

        // Get battery percentage
        int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
        int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
        int batteryPct = (int) ((level / (float) scale) * 100);

        // Get charging status
        int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;

        Log.d("BatteryInfo", "Battery Percentage: " + batteryPct + "%");
        Log.d("BatteryInfo", "Is Charging: " + isCharging);
    }
}

Explanation:

  • BatteryManager.EXTRA_LEVEL: Provides the current battery level.
  • BatteryManager.EXTRA_SCALE: Provides the maximum battery level (typically 100).
  • BatteryManager.EXTRA_STATUS: Gives the current battery status (whether the device is charging or not).
  • BatteryManager.BATTERY_STATUS_CHARGING: Indicates whether the device is charging.

Call printBatteryInfo() in your activity or service to monitor the battery status.


3. Getting Network Information:

To check the network status of the phone (e.g., Wi-Fi or mobile network status), you can use the ConnectivityManager class.

Example Code to Check Network Connectivity:

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

public class NetworkInfoCheck {
    public static void checkNetworkStatus(Context context) {
        // Get the ConnectivityManager system service
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

        // Get the current network status
        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

        if (activeNetwork != null && activeNetwork.isConnected()) {
            // Network is connected
            if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
                Log.d("NetworkInfo", "Connected to Wi-Fi");
            } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
                Log.d("NetworkInfo", "Connected to mobile data");
            }
        } else {
            // No network is available
            Log.d("NetworkInfo", "No network connection available");
        }
    }
}

Explanation:

  • ConnectivityManager.TYPE_WIFI: Indicates the Wi-Fi network type.
  • ConnectivityManager.TYPE_MOBILE: Indicates the mobile data network type.
  • activeNetwork.isConnected(): Checks if the device is connected to any network.

Call checkNetworkStatus() to see whether the device is connected to Wi-Fi, mobile data, or if there is no network available.


4. Checking Storage Information:

To check available internal storage space, you can use the StatFs class.

Example Code to Get Storage Information:

import android.os.StatFs;
import android.os.Environment;
import android.util.Log;

public class StorageInfo {
    public static void checkStorageInfo() {
        // Get the path of the internal storage
        String path = Environment.getDataDirectory().getAbsolutePath();
        StatFs stat = new StatFs(path);

        // Get the available space
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        long availableBlocks = stat.getAvailableBlocks();

        // Calculate the available space in bytes
        long totalSpace = blockSize * totalBlocks;
        long availableSpace = blockSize * availableBlocks;

        Log.d("StorageInfo", "Total Space: " + totalSpace + " bytes");
        Log.d("StorageInfo", "Available Space: " + availableSpace + " bytes");
    }
}

Explanation:

  • Environment.getDataDirectory(): Retrieves the path to the internal storage directory.
  • StatFs: A class used to get file system statistics, including the total and available storage blocks.
  • getBlockSize(), getBlockCount(), and getAvailableBlocks(): Methods to determine the total and available storage space in blocks.

Call checkStorageInfo() to print the available and total storage space on the device.


5. Checking Android Version:

Sometimes, you might want to check the Android version of the device to ensure compatibility or to apply version-specific features.

Example Code to Get Android Version:

import android.os.Build;
import android.util.Log;

public class AndroidVersion {
    public static void checkAndroidVersion() {
        // Get the Android version name and code
        String versionName = Build.VERSION.RELEASE;
        int versionCode = Build.VERSION.SDK_INT;

        Log.d("AndroidVersion", "Android Version Name: " + versionName);
        Log.d("AndroidVersion", "Android SDK Version: " + versionCode);
    }
}

Explanation:

  • Build.VERSION.RELEASE: Returns the version name of Android (e.g., "11").
  • Build.VERSION.SDK_INT: Returns the API level number (e.g., 30 for Android 11).

Call checkAndroidVersion() to retrieve the Android version running on the device.


Conclusion

In Android development, it's essential to gather device-specific information to tailor the app experience. Whether you're debugging, checking for network availability, monitoring battery health, or gathering device specifications, the Android APIs provide easy-to-use methods to retrieve these details.

By using the code examples above, you can programmatically access a wide range of information about the device, including its model, storage capacity, battery status, network connection, and Android version. This knowledge can help optimize your app and ensure it performs efficiently across different devices.