BaseConfig.java 3.54 KB
package com.hhmedic.android.sdk.base;

import android.os.Build;
import android.text.TextUtils;

import java.util.UUID;

public class BaseConfig {


    public static boolean isTest = false;

    public static boolean canPrintLog = false;

    public static boolean isDebug = false;

    private static String DEVICE_ID;

    private static String mPId;

    private static String mCoopId;

    private static String mHardwareId;

    private static String mSdkVersion;

    private static String mAppVersion;

    static  {

        DEVICE_ID = getUniqueID();
    }


    public static String getPid(){

        if (TextUtils.isEmpty(mPId)){

            mPId = "3001";
        }

        return mPId;
    }


    public static String getCoopId(){

        if (TextUtils.isEmpty(mCoopId)){

            mCoopId = "coopId";
        }

        return mCoopId;
    }




    public static String getDeviceId(){

        return DEVICE_ID;
    }


    public static String getHardwareId(){

        return  mHardwareId;
    }



    public static void setPid(String pid) {

        mPId = pid;
    }

    public static void setHardwareId(String id){

        mHardwareId = id;
    }

    public static void setCoopId(String id) {

        mCoopId = id;
    }


    public static void setSdkVersion(String version){

        mSdkVersion = version;
    }


    public static void setAppVersion(String version){

        mAppVersion = version;
    }


    public static String getAppVersion(){

        if (TextUtils.isEmpty(mAppVersion)){

            return  getSdkVersion();
        }

        return mAppVersion;

    }


    public static String getSdkVersion(){

        if (TextUtils.isEmpty(mSdkVersion)){

            return "2.6.0";

        }

        return mSdkVersion;
    }


    private static String getUniqueID()
    {
        // If all else fails, if the user does have lower than API 9 (lower
        // than Gingerbread), has reset their device or 'Secure.ANDROID_ID'
        // returns 'null', then simply the ID returned will be solely based
        // off their Android device information. This is where the collisions
        // can happen.
        // Thanks http://www.pocketmagic.net/?p=1662!
        // Try not to use DISPLAY, HOST or ID - these items could change.
        // If there are collisions, there will be overlapping data
        String m_szDevIDShort = "35" + (Build.BOARD.length() % 10) + (Build.BRAND.length() % 10) + (Build.CPU_ABI.length() % 10) + (Build.DEVICE.length() % 10) + (Build.MANUFACTURER.length() % 10) + (Build.MODEL.length() % 10) + (Build.PRODUCT.length() % 10);

        // Thanks to @Roman SL!
        // http://stackoverflow.com/a/4789483/950427
        // Only devices with API >= 9 have android.os.Build.SERIAL
        // http://developer.android.com/reference/android/os/Build.html#SERIAL
        // If a user upgrades software or roots their device, there will be a duplicate entry
        String serial = null;
        try {
            serial = Build.class.getField("SERIAL").get(null).toString();

            // Go ahead and return the serial for api => 9
            return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
        } catch (Exception exception) {
            // String needs to be initialized
            serial = "serial"; // some value
        }

        // Thanks @Joe!
        // http://stackoverflow.com/a/2853253/950427
        // Finally, combine the values we have found by using the UUID class to create a unique identifier
        return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
    }


}