package com.jdroid.android.debug; import android.os.Bundle; import android.support.v4.util.Pair; import android.view.View; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.context.AppContext; import com.jdroid.android.context.UsageStats; import com.jdroid.android.firebase.FirebaseAppModule; import com.jdroid.android.firebase.instanceid.InstanceIdHelper; import com.jdroid.android.google.analytics.GoogleAnalyticsAppModule; import com.jdroid.android.recycler.AbstractRecyclerFragment; import com.jdroid.android.recycler.RecyclerViewAdapter; import com.jdroid.android.utils.AndroidUtils; import com.jdroid.android.utils.AppUtils; import com.jdroid.android.utils.DeviceUtils; import com.jdroid.android.utils.ScreenUtils; import com.jdroid.java.collections.Lists; import com.jdroid.java.utils.StringUtils; import java.util.List; public class DebugInfoFragment extends AbstractRecyclerFragment { private List<Pair<String, Object>> properties = Lists.newArrayList(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AppContext appContext = AbstractApplication.get().getAppContext(); properties.add(new Pair<String, Object>("Build Type", appContext.getBuildType())); properties.add(new Pair<String, Object>("Build Time", appContext.getBuildTime())); properties.add(new Pair<String, Object>("Instance ID", InstanceIdHelper.getInstanceId())); properties.add(new Pair<String, Object>("Firebase Analytics Enabled", FirebaseAppModule.get().getFirebaseAppContext().isFirebaseAnalyticsEnabled())); properties.add(new Pair<String, Object>("Google Analytics Enabled", GoogleAnalyticsAppModule.get().getGoogleAnalyticsAppContext().isGoogleAnalyticsEnabled())); properties.add(new Pair<String, Object>("Google Analytics Tracking Id", GoogleAnalyticsAppModule.get().getGoogleAnalyticsAppContext().getGoogleAnalyticsTrackingId())); properties.add(new Pair<String, Object>("Installation Source", appContext.getInstallationSource())); properties.add(new Pair<String, Object>("Screen Width Dp", ScreenUtils.getScreenWidthDp())); properties.add(new Pair<String, Object>("Screen Height Dp", ScreenUtils.getScreenHeightDp())); properties.add(new Pair<String, Object>("Screen Density", ScreenUtils.getScreenDensity())); properties.add(new Pair<String, Object>("Screen Density DPI", ScreenUtils.getDensityDpi())); properties.add(new Pair<String, Object>("Git Branch", AbstractApplication.get().getGitContext().getBranch())); properties.add(new Pair<String, Object>("Git Sha", AbstractApplication.get().getGitContext().getSha())); properties.add(new Pair<String, Object>("Application Id", AppUtils.getApplicationId())); properties.add(new Pair<String, Object>("Version Name", AppUtils.getVersionName())); properties.add(new Pair<String, Object>("Version Code", AppUtils.getVersionCode())); properties.add(new Pair<String, Object>("SO API Level", AndroidUtils.getApiLevel())); properties.add(new Pair<String, Object>("Device Manufacturer", DeviceUtils.getDeviceManufacturer())); properties.add(new Pair<String, Object>("Device Model", DeviceUtils.getDeviceModel())); properties.add(new Pair<String, Object>("Device Year Class", DeviceUtils.getDeviceYearClass())); properties.add(new Pair<String, Object>("Network Operator Name", DeviceUtils.getNetworkOperatorName())); properties.add(new Pair<String, Object>("Sim Operator Name", DeviceUtils.getSimOperatorName())); properties.add(new Pair<String, Object>("App Loads", UsageStats.getAppLoads())); properties.addAll(AbstractApplication.get().getDebugContext().getCustomDebugInfoProperties()); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); List<Pair<String, Object>> filteredProperties = Lists.newArrayList(); for(Pair<String, Object> each: properties) { if (each.second != null && StringUtils.isNotBlank(each.second.toString())) { filteredProperties.add(each); } } setAdapter(new RecyclerViewAdapter(new PairItemRecyclerViewType() { @Override public AbstractRecyclerFragment getAbstractRecyclerFragment() { return DebugInfoFragment.this; } }, filteredProperties)); } }