patrickfav/under-the-hood

View on GitHub
hood-core/src/main/java/at/favre/lib/hood/util/TypeTranslators.java

Summary

Maintainability
A
0 mins
Test Coverage
/*
 *  Copyright 2016 Patrick Favre-Bulle
 *
 *  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 at.favre.lib.hood.util;

import android.content.pm.PackageInfo;
import android.os.BatteryManager;
import android.telephony.TelephonyManager;

/**
 * Translates Android int states to human-readable Strings
 */
public final class TypeTranslators {

    private TypeTranslators() {
    }

    /**
     * @param simState expected to be from {@link TelephonyManager#getSimState()}
     * @return human-readable state
     */
    public static String translateSimState(int simState) {
        switch (simState) {
            case TelephonyManager.SIM_STATE_READY:
                return "STATE_READY";
            case TelephonyManager.SIM_STATE_PUK_REQUIRED:
            case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
            case TelephonyManager.SIM_STATE_PIN_REQUIRED:
                return "STATE_LOCKED (" + simState + ")";
            case TelephonyManager.SIM_STATE_ABSENT:
                return "STATE_ABSENT";
            default:
            case TelephonyManager.SIM_STATE_UNKNOWN:
                return "UNKNOWN (" + simState + ")";
        }
    }

    /**
     * @param networkType expected to from {@link TelephonyManager#getDataNetworkType()}
     * @return human-readable state
     */
    public static String translateTelephonyNetworkType(int networkType) {
        switch (networkType) {
            case TelephonyManager.NETWORK_TYPE_EDGE:
            case TelephonyManager.NETWORK_TYPE_GPRS:
                return "2G (" + networkType + ")";
            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_CDMA:
                return "3G (" + networkType + ")";
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
                return "3.5G (" + networkType + ")";
            case TelephonyManager.NETWORK_TYPE_LTE:
                return "4G (" + networkType + ")";
            default:
            case TelephonyManager.NETWORK_TYPE_UNKNOWN:
                return "UNKNOWN (" + networkType + ")";
        }
    }

    public static String translatePermissionState(@PermissionTranslator.PermissionState int permissionState) {
        switch (permissionState) {
            case PermissionTranslator.GRANTED:
                return "GRANTED";
            case PermissionTranslator.GRANTED_ON_INSTALL:
                return "GRANTED (INSTALL)";
            case PermissionTranslator.DENIED:
                return "DENIED";
            case PermissionTranslator.BLOCKED:
                return "BLOCKED/NOT ASKED";
            default:
                return "UNKNOWN";
        }
    }

    public static String translatePMInstallLocation(int installLocationType) {
        switch (installLocationType) {
            case PackageInfo.INSTALL_LOCATION_AUTO:
                return "AUTO";
            case PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY:
                return "INTERNAL_ONLY";
            case PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL:
                return "PREFER_EXTERNAL";
            case -1:
                return "UNSPECIFIED";
            default:
                return "UNKNOWN (" + installLocationType + ")";
        }
    }

    public static String translateBatteryStatus(int batteryStatus) {
        switch (batteryStatus) {
            case BatteryManager.BATTERY_STATUS_CHARGING:
                return "CHARGING";
            case BatteryManager.BATTERY_STATUS_DISCHARGING:
                return "DISCHARGING";
            case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
                return "NOT CHARGING";
            case BatteryManager.BATTERY_STATUS_FULL:
                return "FULL";
            case BatteryManager.BATTERY_STATUS_UNKNOWN:
                return "STATUS UNKNOWN";
            default:
                return "UNKNOWN (" + batteryStatus + ")";
        }
    }

    public static String translateBatteryHealth(int batteryHealth) {
        switch (batteryHealth) {
            case BatteryManager.BATTERY_HEALTH_UNKNOWN:
                return "UNKNOWN HEALTH";
            case BatteryManager.BATTERY_HEALTH_GOOD:
                return "GOOD";
            case BatteryManager.BATTERY_HEALTH_OVERHEAT:
                return "OVERHEAT";
            case BatteryManager.BATTERY_HEALTH_DEAD:
                return "DEAD";
            case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
                return "OVER VOLTAGE";
            case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
                return "UNSPECIFIED FAILURE";
            case BatteryManager.BATTERY_HEALTH_COLD:
                return "COLD";
            default:
                return "UNKNOWN (" + batteryHealth + ")";
        }
    }

    public static String translateBatteryPlugged(int batteryPlugged) {
        switch (batteryPlugged) {
            case 0:
                return "UNPLUGGED";
            case BatteryManager.BATTERY_PLUGGED_AC:
                return "AC";
            case BatteryManager.BATTERY_PLUGGED_USB:
                return "USB";
            case BatteryManager.BATTERY_PLUGGED_WIRELESS:
                return "WIRELESS";
            default:
                return "UNKNOWN (" + batteryPlugged + ")";
        }
    }
}