Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package com.saholic.profittill.Utils;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by kshitij on 24/7/15.
 */
public class AnalyticsUtility {
    public static String getImeiNumber(Context context){
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        return telephonyManager.getDeviceId();
    }
    public static String getNetworkOperatorName(Context context){
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        return telephonyManager.getNetworkOperatorName();
    }
    public static String getNetworkOperator(Context context){
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        return telephonyManager.getNetworkOperator();
    }
    public static String checkGooglePlayServices(Context context){
        if(ConnectionResult.SUCCESS== GooglePlayServicesUtil.isGooglePlayServicesAvailable(context)){
            return "available";
        }else{
            return "error" + GooglePlayServicesUtil.isGooglePlayServicesAvailable(context);
        }
    }

    public static String getAppVersionCode(Context c){
        String appVersion;
        try {
            PackageManager manager = c.getPackageManager();
            PackageInfo info = manager.getPackageInfo(c.getPackageName(), 0);
            appVersion=info.versionCode+"";
        }catch (PackageManager.NameNotFoundException pm){
            appVersion=null;
        }
        return appVersion;
    }

    public static String getAppVersionName(Context c){
        String appVersion;
        try {
            PackageManager manager = c.getPackageManager();
            PackageInfo info = manager.getPackageInfo(c.getPackageName(), 0);
            appVersion=info.versionName+"";
        }catch (PackageManager.NameNotFoundException pm){
            appVersion=null;
        }
        return appVersion;
    }

    public static boolean checkWifi(Context context){
        boolean checkWifi;
        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (mWifi==null){
            checkWifi= Boolean.parseBoolean(null);
        }else {
            checkWifi = mWifi.isConnected();
        }
        return checkWifi;
    }

    public static int getOsVersion(){
        return android.os.Build.VERSION.SDK_INT;
    }
public static String getManufacturer(){
        return Build.MANUFACTURER;
    }

    public static String getBrand(){
        return Build.BRAND;
    }
    public static String getModel(){
        return Build.MODEL;
    }


    public static int getHeight(Context c){
        DisplayMetrics metrics = c.getResources().getDisplayMetrics();
        return metrics.heightPixels;
    }

    public static int getwidth(Context c){
        DisplayMetrics metrics = c.getResources().getDisplayMetrics();
        return metrics.widthPixels;
    }



    public static String getProperties(Context c){
        StringBuilder properties = new StringBuilder();
        properties.append("{");
        properties.append("'Imei Number':'"+UtilityFunctions.getImeiNumber(c)+"'");
        properties.append(",'Version Code':'" + AnalyticsUtility.getAppVersionCode(c)+"'");
        properties.append(",'Version Name':'" + AnalyticsUtility.getAppVersionName(c)+"'");
        properties.append(",'Os Version':'"+AnalyticsUtility.getOsVersion()+"'");
        properties.append(",'Manufacturer':'"+AnalyticsUtility.getManufacturer()+"'");
        properties.append(",'Brand':'"+AnalyticsUtility.getBrand()+"'");
        properties.append(",'Model':'"+AnalyticsUtility.getModel()+"'");
        properties.append(",'WiFi':'" + AnalyticsUtility.checkWifi(c)+"'");
        properties.append(",'Google Play Services':'" + AnalyticsUtility.checkGooglePlayServices(c)+"'");
        properties.append(",'Operator Name':'" + AnalyticsUtility.getNetworkOperatorName(c)+"'");
        properties.append(",'Operator Type':'" + AnalyticsUtility.getNetworkClass(c)+"'");
        properties.append(",'Height':'" + AnalyticsUtility.getHeight(c)+"'");
        properties.append(",'Width':'" + AnalyticsUtility.getwidth(c)+"'");
        properties.append("}");
        return properties.toString();
    }

    public static String getNetworkClass(Context context) {
        TelephonyManager mTelephonyManager = (TelephonyManager)
                context.getSystemService(Context.TELEPHONY_SERVICE);
        int networkType = mTelephonyManager.getNetworkType();
        switch (networkType) {
            case TelephonyManager.NETWORK_TYPE_GPRS:
            case TelephonyManager.NETWORK_TYPE_EDGE:
            case TelephonyManager.NETWORK_TYPE_CDMA:
            case TelephonyManager.NETWORK_TYPE_1xRTT:
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return "2G";
            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
            case TelephonyManager.NETWORK_TYPE_EHRPD:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return "3G";
            case TelephonyManager.NETWORK_TYPE_LTE:
                return "4G";
            default:
                return "Unknown";
        }
    }


    public static Map<String,String> getAnalyticsRequest(Context c, String user_id,String category,String action,String label){
        Map<String,String> analyticsRequest=new HashMap<>();
        analyticsRequest.put("user_id", user_id);
        analyticsRequest.put("category", category);
        analyticsRequest.put("action", action);
        analyticsRequest.put("label", label);
        analyticsRequest.put("properties", getProperties(c));
        return analyticsRequest;
    }
}