github.nisrulz.projecteasydeviceinfo.MainActivity.java Source code

Java tutorial

Introduction

Here is the source code for github.nisrulz.projecteasydeviceinfo.MainActivity.java

Source

/*
 * Copyright (C) 2016 Nishant Srivastava
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package github.nisrulz.projecteasydeviceinfo;

import android.Manifest;
import android.annotation.TargetApi;
import android.hardware.Sensor;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.util.ArrayMap;
import android.support.v7.app.AppCompatActivity;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import github.nisrulz.easydeviceinfo.ads.EasyAdsMod;
import github.nisrulz.easydeviceinfo.base.BatteryHealth;
import github.nisrulz.easydeviceinfo.base.ChargingVia;
import github.nisrulz.easydeviceinfo.base.DeviceType;
import github.nisrulz.easydeviceinfo.base.EasyAppMod;
import github.nisrulz.easydeviceinfo.base.EasyBatteryMod;
import github.nisrulz.easydeviceinfo.base.EasyBluetoothMod;
import github.nisrulz.easydeviceinfo.base.EasyConfigMod;
import github.nisrulz.easydeviceinfo.base.EasyCpuMod;
import github.nisrulz.easydeviceinfo.base.EasyDeviceMod;
import github.nisrulz.easydeviceinfo.base.EasyDisplayMod;
import github.nisrulz.easydeviceinfo.base.EasyFingerprintMod;
import github.nisrulz.easydeviceinfo.base.EasyIdMod;
import github.nisrulz.easydeviceinfo.base.EasyLocationMod;
import github.nisrulz.easydeviceinfo.base.EasyMemoryMod;
import github.nisrulz.easydeviceinfo.base.EasyNetworkMod;
import github.nisrulz.easydeviceinfo.base.EasyNfcMod;
import github.nisrulz.easydeviceinfo.base.EasySensorMod;
import github.nisrulz.easydeviceinfo.base.EasySimMod;
import github.nisrulz.easydeviceinfo.base.NetworkType;
import github.nisrulz.easydeviceinfo.base.OrientationType;
import github.nisrulz.easydeviceinfo.base.PhoneType;
import github.nisrulz.easydeviceinfo.base.RingerMode;
import github.nisrulz.easydeviceinfo.common.EasyDeviceInfo;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ArrayAdapter<String> adapter;

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

        //Data Array List of Info Object
        final ArrayList<String> data = new ArrayList<>();

        //Add Data
        ArrayMap<String, String> deviceDataMap = new ArrayMap<>();

        // Setup the value to be returned when result is either not found or invalid/null
        EasyDeviceInfo.setNotFoundVal("na");
        // Enable Debugging when in Debug build
        if (BuildConfig.DEBUG) {
            EasyDeviceInfo.debug();
        }

        // Library Info
        data.add(EasyDeviceInfo.getLibraryVersion());

        // ID Mod
        EasyIdMod easyIdMod = new EasyIdMod(this);

        String[] emailIds = easyIdMod.getAccounts();
        StringBuilder emailString = new StringBuilder();
        if (emailIds != null && emailIds.length > 0) {
            for (String e : emailIds) {
                emailString.append(e).append("\n");
            }
        } else {
            emailString.append("-");
        }

        EasyAdsMod easyAdsMod = new EasyAdsMod(this);
        easyAdsMod.getAndroidAdId(new EasyAdsMod.AdIdentifierCallback() {
            @Override
            public void onSuccess(String adIdentifier, boolean adDonotTrack) {
                // Add Data
                data.add("Android Advertiser ID :" + adIdentifier);
                data.add("Ad Do not Track :" + adDonotTrack);
                adapter.notifyDataSetChanged();
            }
        });

        // Config Mod
        EasyConfigMod easyConfigMod = new EasyConfigMod(this);
        deviceDataMap.put("Time (ms)", String.valueOf(easyConfigMod.getTime()));
        deviceDataMap.put("Formatted Time (24Hrs)", easyConfigMod.getFormattedTime());
        deviceDataMap.put("UpTime (ms)", String.valueOf(easyConfigMod.getUpTime()));
        deviceDataMap.put("Formatted Up Time (24Hrs)", easyConfigMod.getFormattedUpTime());
        deviceDataMap.put("Date", String.valueOf(easyConfigMod.getCurrentDate()));
        deviceDataMap.put("Formatted Date", easyConfigMod.getFormattedDate());
        deviceDataMap.put("SD Card available", String.valueOf(easyConfigMod.hasSdCard()));
        deviceDataMap.put("Running on emulator", String.valueOf(easyConfigMod.isRunningOnEmulator()));

        @RingerMode
        int ringermode = easyConfigMod.getDeviceRingerMode();
        switch (ringermode) {
        case RingerMode.NORMAL:
            deviceDataMap.put(getString(R.string.ringer_mode), "normal");
            break;
        case RingerMode.VIBRATE:
            deviceDataMap.put(getString(R.string.ringer_mode), "vibrate");
            break;
        case RingerMode.SILENT:
        default:
            deviceDataMap.put(getString(R.string.ringer_mode), "silent");
            break;
        }

        // Fingerprint Mod
        EasyFingerprintMod easyFingerprintMod = new EasyFingerprintMod(this);
        deviceDataMap.put("Is Fingerprint Sensor present?",
                String.valueOf(easyFingerprintMod.isFingerprintSensorPresent()));
        deviceDataMap.put("Are fingerprints enrolled",
                String.valueOf(easyFingerprintMod.areFingerprintsEnrolled()));

        // Sensor Mod
        EasySensorMod easySensorMod = new EasySensorMod(this);
        List<Sensor> list = easySensorMod.getAllSensors();
        for (Sensor s : list) {
            if (s != null) {
                StringBuilder stringBuilder = new StringBuilder().append("\nVendor : ").append(s.getVendor())
                        .append("\n").append("Version : ").append(s.getVersion()).append("\n").append("Power : ")
                        .append(s.getPower()).append("\n").append("Resolution : ").append(s.getResolution())
                        .append("\n").append("Max Range : ").append(s.getMaximumRange());
                deviceDataMap.put("Sensor Name - " + s.getName(), stringBuilder.toString());
            } else {
                deviceDataMap.put("Sensor", "N/A");
            }
        }

        // SIM Mod
        EasySimMod easySimMod = new EasySimMod(this);
        deviceDataMap.put("IMSI", easySimMod.getIMSI());
        deviceDataMap.put("SIM Serial Number", easySimMod.getSIMSerial());
        deviceDataMap.put("Country", easySimMod.getCountry());
        deviceDataMap.put("Carrier", easySimMod.getCarrier());
        deviceDataMap.put("SIM Network Locked", String.valueOf(easySimMod.isSimNetworkLocked()));
        deviceDataMap.put("Is Multi SIM", String.valueOf(easySimMod.isMultiSim()));
        deviceDataMap.put("Number of active SIM", String.valueOf(easySimMod.getNumberOfActiveSim()));

        if (easySimMod.isMultiSim()) {
            List<SubscriptionInfo> activeMultiSimInfo = easySimMod.getActiveMultiSimInfo();
            if (activeMultiSimInfo != null) {
                StringBuilder stringBuilder = new StringBuilder();
                for (int i = 0; i < activeMultiSimInfo.size(); i++) {
                    stringBuilder.append("\nSIM ").append(i).append(" Info").append("\nPhone Number :")
                            .append(activeMultiSimInfo.get(i).getNumber()).append("\n").append("Carrier Name :")
                            .append(activeMultiSimInfo.get(i).getCarrierName()).append("\n").append("Country :")
                            .append(activeMultiSimInfo.get(i).getCountryIso()).append("\n").append("Roaming :")
                            .append(activeMultiSimInfo.get(i)
                                    .getDataRoaming() == SubscriptionManager.DATA_ROAMING_ENABLE)
                            .append("\n").append("Display Name :")
                            .append(activeMultiSimInfo.get(i).getDisplayName()).append("\n").append("Sim Slot  :")
                            .append(activeMultiSimInfo.get(i).getSimSlotIndex()).append("\n");
                }
                deviceDataMap.put("Multi SIM Info", stringBuilder.toString());
            }
        }

        // Device Mod
        EasyDeviceMod easyDeviceMod = new EasyDeviceMod(this);
        deviceDataMap.put("Language", easyDeviceMod.getLanguage());
        deviceDataMap.put("Android ID", easyIdMod.getAndroidID());
        deviceDataMap.put("IMEI", easyDeviceMod.getIMEI());
        deviceDataMap.put("User-Agent", easyIdMod.getUA());
        deviceDataMap.put("GSF ID", easyIdMod.getGSFID());
        deviceDataMap.put("Pseudo ID", easyIdMod.getPseudoUniqueID());
        deviceDataMap.put("Device Serial", easyDeviceMod.getSerial());
        deviceDataMap.put("Manufacturer", easyDeviceMod.getManufacturer());
        deviceDataMap.put("Model", easyDeviceMod.getModel());
        deviceDataMap.put("OS Codename", easyDeviceMod.getOSCodename());
        deviceDataMap.put("OS Version", easyDeviceMod.getOSVersion());
        deviceDataMap.put("Display Version", easyDeviceMod.getDisplayVersion());
        deviceDataMap.put("Phone Number", easyDeviceMod.getPhoneNo());
        deviceDataMap.put("Radio Version", easyDeviceMod.getRadioVer());
        deviceDataMap.put("Product ", easyDeviceMod.getProduct());
        deviceDataMap.put("Device", easyDeviceMod.getDevice());
        deviceDataMap.put("Board", easyDeviceMod.getBoard());
        deviceDataMap.put("Hardware", easyDeviceMod.getHardware());
        deviceDataMap.put("BootLoader", easyDeviceMod.getBootloader());
        deviceDataMap.put("Device Rooted", String.valueOf(easyDeviceMod.isDeviceRooted()));
        deviceDataMap.put("Fingerprint", easyDeviceMod.getFingerprint());
        deviceDataMap.put("Build Brand", easyDeviceMod.getBuildBrand());
        deviceDataMap.put("Build Host", easyDeviceMod.getBuildHost());
        deviceDataMap.put("Build Tag", easyDeviceMod.getBuildTags());
        deviceDataMap.put("Build Time", String.valueOf(easyDeviceMod.getBuildTime()));
        deviceDataMap.put("Build User", easyDeviceMod.getBuildUser());
        deviceDataMap.put("Build Version Release", easyDeviceMod.getBuildVersionRelease());
        deviceDataMap.put("Screen Display ID", easyDeviceMod.getScreenDisplayID());
        deviceDataMap.put("Build Version Codename", easyDeviceMod.getBuildVersionCodename());
        deviceDataMap.put("Build Version Increment", easyDeviceMod.getBuildVersionIncremental());
        deviceDataMap.put("Build Version SDK", String.valueOf(easyDeviceMod.getBuildVersionSDK()));
        deviceDataMap.put("Build ID", easyDeviceMod.getBuildID());

        @DeviceType
        int deviceType = easyDeviceMod.getDeviceType(this);
        switch (deviceType) {
        case DeviceType.WATCH:
            deviceDataMap.put(getString(R.string.device_type), "watch");
            break;
        case DeviceType.PHONE:
            deviceDataMap.put(getString(R.string.device_type), "phone");
            break;
        case DeviceType.PHABLET:
            deviceDataMap.put(getString(R.string.device_type), "phablet");
            break;
        case DeviceType.TABLET:
            deviceDataMap.put(getString(R.string.device_type), "tablet");
            break;
        case DeviceType.TV:
            deviceDataMap.put(getString(R.string.device_type), "tv");
            break;
        default:
            //do nothing
            break;
        }

        @PhoneType
        int phoneType = easyDeviceMod.getPhoneType();
        switch (phoneType) {

        case PhoneType.CDMA:
            deviceDataMap.put(getString(R.string.phone_type), "CDMA");
            break;
        case PhoneType.GSM:
            deviceDataMap.put(getString(R.string.phone_type), "GSM");
            break;
        case PhoneType.NONE:
            deviceDataMap.put(getString(R.string.phone_type), "None");
            break;
        default:
            deviceDataMap.put(getString(R.string.phone_type), "Unknown");
            break;
        }

        @OrientationType
        int orientationType = easyDeviceMod.getOrientation(this);
        switch (orientationType) {
        case OrientationType.LANDSCAPE:
            deviceDataMap.put(getString(R.string.orientation), "Landscape");
            break;
        case OrientationType.PORTRAIT:
            deviceDataMap.put(getString(R.string.orientation), "Portrait");
            break;
        case OrientationType.UNKNOWN:
        default:
            deviceDataMap.put(getString(R.string.orientation), "Unknown");
            break;
        }

        // App Mod
        EasyAppMod easyAppMod = new EasyAppMod(this);
        deviceDataMap.put("Installer Store", easyAppMod.getStore());
        deviceDataMap.put("App Name", easyAppMod.getAppName());
        deviceDataMap.put("Package Name", easyAppMod.getPackageName());
        deviceDataMap.put("Activity Name", easyAppMod.getActivityName());
        deviceDataMap.put("App version", easyAppMod.getAppVersion());
        deviceDataMap.put("App versioncode", easyAppMod.getAppVersionCode());
        deviceDataMap.put("Does app have Camera permission?",
                String.valueOf(easyAppMod.isPermissionGranted(Manifest.permission.CAMERA)));

        //Network Mod
        EasyNetworkMod easyNetworkMod = new EasyNetworkMod(this);
        deviceDataMap.put("WIFI MAC Address", easyNetworkMod.getWifiMAC());
        deviceDataMap.put("WIFI LinkSpeed", easyNetworkMod.getWifiLinkSpeed());
        deviceDataMap.put("WIFI SSID", easyNetworkMod.getWifiSSID());
        deviceDataMap.put("WIFI BSSID", easyNetworkMod.getWifiBSSID());
        deviceDataMap.put("IPv4 Address", easyNetworkMod.getIPv4Address());
        deviceDataMap.put("IPv6 Address", easyNetworkMod.getIPv6Address());
        deviceDataMap.put("Network Available", String.valueOf(easyNetworkMod.isNetworkAvailable()));
        deviceDataMap.put("Wi-Fi enabled", String.valueOf(easyNetworkMod.isWifiEnabled()));

        @NetworkType
        int networkType = easyNetworkMod.getNetworkType();

        switch (networkType) {
        case NetworkType.CELLULAR_UNKNOWN:
            deviceDataMap.put(getString(R.string.network_type), "Cellular Unknown");
            break;
        case NetworkType.CELLULAR_UNIDENTIFIED_GEN:
            deviceDataMap.put(getString(R.string.network_type), "Cellular Unidentified Generation");
            break;
        case NetworkType.CELLULAR_2G:
            deviceDataMap.put(getString(R.string.network_type), "Cellular 2G");
            break;
        case NetworkType.CELLULAR_3G:
            deviceDataMap.put(getString(R.string.network_type), "Cellular 3G");
            break;
        case NetworkType.CELLULAR_4G:
            deviceDataMap.put(getString(R.string.network_type), "Cellular 4G");
            break;

        case NetworkType.WIFI_WIFIMAX:
            deviceDataMap.put(getString(R.string.network_type), "Wifi/WifiMax");
            break;
        case NetworkType.UNKNOWN:
        default:
            deviceDataMap.put(getString(R.string.network_type), "Unknown");
            break;
        }

        // Battery Mod
        EasyBatteryMod easyBatteryMod = new EasyBatteryMod(this);
        deviceDataMap.put("Battery Percentage", String.valueOf(easyBatteryMod.getBatteryPercentage()) + "%");
        deviceDataMap.put("Is device charging", String.valueOf(easyBatteryMod.isDeviceCharging()));
        deviceDataMap.put("Battery present", String.valueOf(easyBatteryMod.isBatteryPresent()));
        deviceDataMap.put("Battery technology", String.valueOf(easyBatteryMod.getBatteryTechnology()));
        deviceDataMap.put("Battery temperature", String.valueOf(easyBatteryMod.getBatteryTemperature()) + " deg C");
        deviceDataMap.put("Battery voltage", String.valueOf(easyBatteryMod.getBatteryVoltage()) + " mV");

        @BatteryHealth
        int batteryHealth = easyBatteryMod.getBatteryHealth();
        switch (batteryHealth) {
        case BatteryHealth.GOOD:
            deviceDataMap.put("Battery health", "Good");
            break;
        case BatteryHealth.HAVING_ISSUES:
        default:
            deviceDataMap.put("Battery health", "Having issues");
            break;
        }

        @ChargingVia
        int isChargingVia = easyBatteryMod.getChargingSource();
        switch (isChargingVia) {
        case ChargingVia.AC:
            deviceDataMap.put(getString(R.string.device_charging_via), "AC");
            break;
        case ChargingVia.USB:
            deviceDataMap.put(getString(R.string.device_charging_via), "USB");
            break;
        case ChargingVia.WIRELESS:
            deviceDataMap.put(getString(R.string.device_charging_via), "Wireless");
            break;
        case ChargingVia.UNKNOWN_SOURCE:
        default:
            deviceDataMap.put(getString(R.string.device_charging_via), "Unknown Source");
            break;
        }

        //Bluetooth Mod
        EasyBluetoothMod easyBluetoothMod = new EasyBluetoothMod(this);
        deviceDataMap.put("BT MAC Address", easyBluetoothMod.getBluetoothMAC());

        // Display Mod
        EasyDisplayMod easyDisplayMod = new EasyDisplayMod(this);
        deviceDataMap.put("Display Resolution", easyDisplayMod.getResolution());
        deviceDataMap.put("Screen Density", easyDisplayMod.getDensity());
        deviceDataMap.put("Screen Size", String.valueOf(easyDisplayMod.getPhysicalSize()));
        deviceDataMap.put("Screen Refresh rate", String.valueOf(easyDisplayMod.getRefreshRate()) + " Hz");

        deviceDataMap.put("Email ID", emailString.toString());

        // Location Mod
        EasyLocationMod easyLocationMod = new EasyLocationMod(this);
        double[] l = easyLocationMod.getLatLong();
        String lat = String.valueOf(l[0]);
        String lon = String.valueOf(l[1]);
        deviceDataMap.put("Latitude", lat);
        deviceDataMap.put("Longitude", lon);

        // Memory Mod
        EasyMemoryMod easyMemoryMod = new EasyMemoryMod(this);
        deviceDataMap.put("Total RAM",
                String.valueOf(easyMemoryMod.convertToGb(easyMemoryMod.getTotalRAM())) + " Gb");
        deviceDataMap.put("Available Internal Memory",
                String.valueOf(easyMemoryMod.convertToGb(easyMemoryMod.getAvailableInternalMemorySize())) + " Gb");
        deviceDataMap.put("Available External Memory",
                String.valueOf(easyMemoryMod.convertToGb(easyMemoryMod.getAvailableExternalMemorySize())) + " Gb");
        deviceDataMap.put("Total Internal Memory",
                String.valueOf(easyMemoryMod.convertToGb(easyMemoryMod.getTotalInternalMemorySize())) + " Gb");
        deviceDataMap.put("Total External memory",
                String.valueOf(easyMemoryMod.convertToGb(easyMemoryMod.getTotalExternalMemorySize())) + " Gb");

        // CPU Mod
        EasyCpuMod easyCpuMod = new EasyCpuMod();
        deviceDataMap.put("Supported ABIS", easyCpuMod.getStringSupportedABIS());
        deviceDataMap.put("Supported 32 bit ABIS", easyCpuMod.getStringSupported32bitABIS());
        deviceDataMap.put("Supported 64 bit ABIS", easyCpuMod.getStringSupported64bitABIS());

        // NFC Mod
        EasyNfcMod easyNfcMod = new EasyNfcMod(this);
        deviceDataMap.put("is NFC present", String.valueOf(easyNfcMod.isNfcPresent()));
        deviceDataMap.put("is NFC enabled", String.valueOf(easyNfcMod.isNfcEnabled()));

        for (String key : deviceDataMap.keySet()) {
            data.add(key + " : " + deviceDataMap.get(key));
        }

        ListView lv = (ListView) findViewById(R.id.listview);
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
        lv.setAdapter(adapter);
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        finish();
    }
}