package com.bigcrunch.ads.internal import android.content.Context import android.os.Build import android.provider.Settings import android.telephony.TelephonyManager import android.util.DisplayMetrics import com.bigcrunch.ads.models.DeviceData import java.util.* /** * Helper class to get device information */ internal object DeviceHelper { fun getDeviceData(context: Context): DeviceData { val displayMetrics = context.resources.displayMetrics val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager return DeviceData( deviceId = getDeviceId(context), deviceModel = "${Build.MANUFACTURER} ${Build.MODEL}", osVersion = Build.VERSION.RELEASE, appVersion = getAppVersion(context), screenWidth = displayMetrics.widthPixels, screenHeight = displayMetrics.heightPixels, language = Locale.getDefault().language, country = Locale.getDefault().country, carrier = telephonyManager?.networkOperatorName, networkType = getNetworkType(context), isTablet = isTablet(context) ) } private fun getDeviceId(context: Context): String { return Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID) ?: "unknown" } private fun getAppVersion(context: Context): String { return try { val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0) packageInfo.versionName ?: "unknown" } catch (e: Exception) { "unknown" } } private fun getNetworkType(context: Context): String? { // TODO: Implement network type detection return "unknown" } private fun isTablet(context: Context): Boolean { val displayMetrics = context.resources.displayMetrics val widthDp = displayMetrics.widthPixels / displayMetrics.density val heightDp = displayMetrics.heightPixels / displayMetrics.density val screenSize = Math.sqrt((widthDp * widthDp + heightDp * heightDp).toDouble()) return screenSize >= 600 } }