@rejourneyco/react-native 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle.kts +135 -0
- package/android/consumer-rules.pro +10 -0
- package/android/proguard-rules.pro +1 -0
- package/android/src/main/AndroidManifest.xml +15 -0
- package/android/src/main/java/com/rejourney/RejourneyModuleImpl.kt +2981 -0
- package/android/src/main/java/com/rejourney/capture/ANRHandler.kt +206 -0
- package/android/src/main/java/com/rejourney/capture/ActivityTracker.kt +98 -0
- package/android/src/main/java/com/rejourney/capture/CaptureEngine.kt +1553 -0
- package/android/src/main/java/com/rejourney/capture/CaptureHeuristics.kt +375 -0
- package/android/src/main/java/com/rejourney/capture/CrashHandler.kt +153 -0
- package/android/src/main/java/com/rejourney/capture/MotionEvent.kt +215 -0
- package/android/src/main/java/com/rejourney/capture/SegmentUploader.kt +512 -0
- package/android/src/main/java/com/rejourney/capture/VideoEncoder.kt +773 -0
- package/android/src/main/java/com/rejourney/capture/ViewHierarchyScanner.kt +633 -0
- package/android/src/main/java/com/rejourney/capture/ViewSerializer.kt +286 -0
- package/android/src/main/java/com/rejourney/core/Constants.kt +117 -0
- package/android/src/main/java/com/rejourney/core/Logger.kt +93 -0
- package/android/src/main/java/com/rejourney/core/Types.kt +124 -0
- package/android/src/main/java/com/rejourney/lifecycle/SessionLifecycleService.kt +162 -0
- package/android/src/main/java/com/rejourney/network/DeviceAuthManager.kt +747 -0
- package/android/src/main/java/com/rejourney/network/HttpClientProvider.kt +16 -0
- package/android/src/main/java/com/rejourney/network/NetworkMonitor.kt +272 -0
- package/android/src/main/java/com/rejourney/network/UploadManager.kt +1363 -0
- package/android/src/main/java/com/rejourney/network/UploadWorker.kt +492 -0
- package/android/src/main/java/com/rejourney/privacy/PrivacyMask.kt +645 -0
- package/android/src/main/java/com/rejourney/touch/GestureClassifier.kt +233 -0
- package/android/src/main/java/com/rejourney/touch/KeyboardTracker.kt +158 -0
- package/android/src/main/java/com/rejourney/touch/TextInputTracker.kt +181 -0
- package/android/src/main/java/com/rejourney/touch/TouchInterceptor.kt +591 -0
- package/android/src/main/java/com/rejourney/utils/EventBuffer.kt +284 -0
- package/android/src/main/java/com/rejourney/utils/OEMDetector.kt +154 -0
- package/android/src/main/java/com/rejourney/utils/PerfTiming.kt +235 -0
- package/android/src/main/java/com/rejourney/utils/Telemetry.kt +297 -0
- package/android/src/main/java/com/rejourney/utils/WindowUtils.kt +84 -0
- package/android/src/newarch/java/com/rejourney/RejourneyModule.kt +187 -0
- package/android/src/newarch/java/com/rejourney/RejourneyPackage.kt +40 -0
- package/android/src/oldarch/java/com/rejourney/RejourneyModule.kt +218 -0
- package/android/src/oldarch/java/com/rejourney/RejourneyPackage.kt +23 -0
- package/ios/Capture/RJANRHandler.h +42 -0
- package/ios/Capture/RJANRHandler.m +328 -0
- package/ios/Capture/RJCaptureEngine.h +275 -0
- package/ios/Capture/RJCaptureEngine.m +2062 -0
- package/ios/Capture/RJCaptureHeuristics.h +80 -0
- package/ios/Capture/RJCaptureHeuristics.m +903 -0
- package/ios/Capture/RJCrashHandler.h +46 -0
- package/ios/Capture/RJCrashHandler.m +313 -0
- package/ios/Capture/RJMotionEvent.h +183 -0
- package/ios/Capture/RJMotionEvent.m +183 -0
- package/ios/Capture/RJPerformanceManager.h +100 -0
- package/ios/Capture/RJPerformanceManager.m +373 -0
- package/ios/Capture/RJPixelBufferDownscaler.h +42 -0
- package/ios/Capture/RJPixelBufferDownscaler.m +85 -0
- package/ios/Capture/RJSegmentUploader.h +146 -0
- package/ios/Capture/RJSegmentUploader.m +778 -0
- package/ios/Capture/RJVideoEncoder.h +247 -0
- package/ios/Capture/RJVideoEncoder.m +1036 -0
- package/ios/Capture/RJViewControllerTracker.h +73 -0
- package/ios/Capture/RJViewControllerTracker.m +508 -0
- package/ios/Capture/RJViewHierarchyScanner.h +215 -0
- package/ios/Capture/RJViewHierarchyScanner.m +1464 -0
- package/ios/Capture/RJViewSerializer.h +119 -0
- package/ios/Capture/RJViewSerializer.m +498 -0
- package/ios/Core/RJConstants.h +124 -0
- package/ios/Core/RJConstants.m +88 -0
- package/ios/Core/RJLifecycleManager.h +85 -0
- package/ios/Core/RJLifecycleManager.m +308 -0
- package/ios/Core/RJLogger.h +61 -0
- package/ios/Core/RJLogger.m +211 -0
- package/ios/Core/RJTypes.h +176 -0
- package/ios/Core/RJTypes.m +66 -0
- package/ios/Core/Rejourney.h +64 -0
- package/ios/Core/Rejourney.mm +2495 -0
- package/ios/Network/RJDeviceAuthManager.h +94 -0
- package/ios/Network/RJDeviceAuthManager.m +967 -0
- package/ios/Network/RJNetworkMonitor.h +68 -0
- package/ios/Network/RJNetworkMonitor.m +267 -0
- package/ios/Network/RJRetryManager.h +73 -0
- package/ios/Network/RJRetryManager.m +325 -0
- package/ios/Network/RJUploadManager.h +267 -0
- package/ios/Network/RJUploadManager.m +2296 -0
- package/ios/Privacy/RJPrivacyMask.h +163 -0
- package/ios/Privacy/RJPrivacyMask.m +922 -0
- package/ios/Rejourney.h +63 -0
- package/ios/Touch/RJGestureClassifier.h +130 -0
- package/ios/Touch/RJGestureClassifier.m +333 -0
- package/ios/Touch/RJTouchInterceptor.h +169 -0
- package/ios/Touch/RJTouchInterceptor.m +772 -0
- package/ios/Utils/RJEventBuffer.h +112 -0
- package/ios/Utils/RJEventBuffer.m +358 -0
- package/ios/Utils/RJGzipUtils.h +33 -0
- package/ios/Utils/RJGzipUtils.m +89 -0
- package/ios/Utils/RJKeychainManager.h +48 -0
- package/ios/Utils/RJKeychainManager.m +111 -0
- package/ios/Utils/RJPerfTiming.h +209 -0
- package/ios/Utils/RJPerfTiming.m +264 -0
- package/ios/Utils/RJTelemetry.h +92 -0
- package/ios/Utils/RJTelemetry.m +320 -0
- package/ios/Utils/RJWindowUtils.h +66 -0
- package/ios/Utils/RJWindowUtils.m +133 -0
- package/lib/commonjs/NativeRejourney.js +40 -0
- package/lib/commonjs/components/Mask.js +79 -0
- package/lib/commonjs/index.js +1381 -0
- package/lib/commonjs/sdk/autoTracking.js +1259 -0
- package/lib/commonjs/sdk/constants.js +151 -0
- package/lib/commonjs/sdk/errorTracking.js +199 -0
- package/lib/commonjs/sdk/index.js +50 -0
- package/lib/commonjs/sdk/metricsTracking.js +204 -0
- package/lib/commonjs/sdk/navigation.js +151 -0
- package/lib/commonjs/sdk/networkInterceptor.js +412 -0
- package/lib/commonjs/sdk/utils.js +363 -0
- package/lib/commonjs/types/expo-router.d.js +2 -0
- package/lib/commonjs/types/index.js +2 -0
- package/lib/module/NativeRejourney.js +38 -0
- package/lib/module/components/Mask.js +72 -0
- package/lib/module/index.js +1284 -0
- package/lib/module/sdk/autoTracking.js +1233 -0
- package/lib/module/sdk/constants.js +145 -0
- package/lib/module/sdk/errorTracking.js +189 -0
- package/lib/module/sdk/index.js +12 -0
- package/lib/module/sdk/metricsTracking.js +187 -0
- package/lib/module/sdk/navigation.js +143 -0
- package/lib/module/sdk/networkInterceptor.js +401 -0
- package/lib/module/sdk/utils.js +342 -0
- package/lib/module/types/expo-router.d.js +2 -0
- package/lib/module/types/index.js +2 -0
- package/lib/typescript/NativeRejourney.d.ts +147 -0
- package/lib/typescript/components/Mask.d.ts +39 -0
- package/lib/typescript/index.d.ts +117 -0
- package/lib/typescript/sdk/autoTracking.d.ts +204 -0
- package/lib/typescript/sdk/constants.d.ts +120 -0
- package/lib/typescript/sdk/errorTracking.d.ts +32 -0
- package/lib/typescript/sdk/index.d.ts +9 -0
- package/lib/typescript/sdk/metricsTracking.d.ts +58 -0
- package/lib/typescript/sdk/navigation.d.ts +33 -0
- package/lib/typescript/sdk/networkInterceptor.d.ts +47 -0
- package/lib/typescript/sdk/utils.d.ts +148 -0
- package/lib/typescript/types/index.d.ts +624 -0
- package/package.json +102 -0
- package/rejourney.podspec +21 -0
- package/src/NativeRejourney.ts +165 -0
- package/src/components/Mask.tsx +80 -0
- package/src/index.ts +1459 -0
- package/src/sdk/autoTracking.ts +1373 -0
- package/src/sdk/constants.ts +134 -0
- package/src/sdk/errorTracking.ts +231 -0
- package/src/sdk/index.ts +11 -0
- package/src/sdk/metricsTracking.ts +232 -0
- package/src/sdk/navigation.ts +157 -0
- package/src/sdk/networkInterceptor.ts +440 -0
- package/src/sdk/utils.ts +369 -0
- package/src/types/expo-router.d.ts +7 -0
- package/src/types/index.ts +739 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package com.rejourney.network
|
|
2
|
+
|
|
3
|
+
import okhttp3.OkHttpClient
|
|
4
|
+
import java.util.concurrent.TimeUnit
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Central provider for OkHttpClient instances.
|
|
8
|
+
* SSL pinning has been removed — use the shared client below.
|
|
9
|
+
*/
|
|
10
|
+
object HttpClientProvider {
|
|
11
|
+
val shared: OkHttpClient = OkHttpClient.Builder()
|
|
12
|
+
.connectTimeout(15, TimeUnit.SECONDS)
|
|
13
|
+
.readTimeout(30, TimeUnit.SECONDS)
|
|
14
|
+
.writeTimeout(30, TimeUnit.SECONDS)
|
|
15
|
+
.build()
|
|
16
|
+
}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network state monitoring.
|
|
3
|
+
* Ported from iOS RJNetworkMonitor.
|
|
4
|
+
*/
|
|
5
|
+
package com.rejourney.network
|
|
6
|
+
|
|
7
|
+
import android.content.Context
|
|
8
|
+
import android.net.ConnectivityManager
|
|
9
|
+
import android.net.Network
|
|
10
|
+
import android.net.NetworkCapabilities
|
|
11
|
+
import android.net.NetworkRequest
|
|
12
|
+
import android.os.Build
|
|
13
|
+
import android.telephony.TelephonyManager
|
|
14
|
+
import com.rejourney.core.Logger
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Callback interface for network state changes.
|
|
18
|
+
*/
|
|
19
|
+
interface NetworkMonitorListener {
|
|
20
|
+
fun onNetworkChanged(quality: NetworkQuality)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
enum class NetworkType {
|
|
24
|
+
NONE,
|
|
25
|
+
WIFI,
|
|
26
|
+
CELLULAR,
|
|
27
|
+
WIRED,
|
|
28
|
+
OTHER
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
enum class CellularGeneration {
|
|
32
|
+
UNKNOWN,
|
|
33
|
+
G2,
|
|
34
|
+
G3,
|
|
35
|
+
G4,
|
|
36
|
+
G5
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
data class NetworkQuality(
|
|
40
|
+
val networkType: NetworkType = NetworkType.NONE,
|
|
41
|
+
val cellularGeneration: CellularGeneration = CellularGeneration.UNKNOWN,
|
|
42
|
+
val isConstrained: Boolean = false,
|
|
43
|
+
val isExpensive: Boolean = false,
|
|
44
|
+
val timestamp: Long = System.currentTimeMillis()
|
|
45
|
+
) {
|
|
46
|
+
fun toMap(): Map<String, Any> {
|
|
47
|
+
val networkTypeString = when (networkType) {
|
|
48
|
+
NetworkType.WIFI -> "wifi"
|
|
49
|
+
NetworkType.CELLULAR -> "cellular"
|
|
50
|
+
NetworkType.WIRED -> "wired"
|
|
51
|
+
NetworkType.OTHER -> "other"
|
|
52
|
+
NetworkType.NONE -> "none"
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
val cellularString = when (cellularGeneration) {
|
|
56
|
+
CellularGeneration.G2 -> "2G"
|
|
57
|
+
CellularGeneration.G3 -> "3G"
|
|
58
|
+
CellularGeneration.G4 -> "4G"
|
|
59
|
+
CellularGeneration.G5 -> "5G"
|
|
60
|
+
CellularGeneration.UNKNOWN -> "unknown"
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return mapOf(
|
|
64
|
+
"networkType" to networkTypeString,
|
|
65
|
+
"cellularGeneration" to cellularString,
|
|
66
|
+
"isConstrained" to isConstrained,
|
|
67
|
+
"isExpensive" to isExpensive,
|
|
68
|
+
"timestamp" to timestamp
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
class NetworkMonitor private constructor(private val context: Context) {
|
|
74
|
+
|
|
75
|
+
companion object {
|
|
76
|
+
@Volatile
|
|
77
|
+
private var instance: NetworkMonitor? = null
|
|
78
|
+
|
|
79
|
+
fun getInstance(context: Context): NetworkMonitor {
|
|
80
|
+
return instance ?: synchronized(this) {
|
|
81
|
+
instance ?: NetworkMonitor(context.applicationContext).also { instance = it }
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
var listener: NetworkMonitorListener? = null
|
|
87
|
+
private var connectivityManager: ConnectivityManager? = null
|
|
88
|
+
private var networkCallback: ConnectivityManager.NetworkCallback? = null
|
|
89
|
+
private var telephonyManager: TelephonyManager? = null
|
|
90
|
+
@Volatile
|
|
91
|
+
var currentQuality: NetworkQuality = NetworkQuality()
|
|
92
|
+
private set
|
|
93
|
+
|
|
94
|
+
@Volatile
|
|
95
|
+
var isConnected: Boolean = false
|
|
96
|
+
private set
|
|
97
|
+
|
|
98
|
+
@Volatile
|
|
99
|
+
var isWifi: Boolean = false
|
|
100
|
+
private set
|
|
101
|
+
|
|
102
|
+
@Volatile
|
|
103
|
+
var isCellular: Boolean = false
|
|
104
|
+
private set
|
|
105
|
+
|
|
106
|
+
fun startMonitoring() {
|
|
107
|
+
try {
|
|
108
|
+
connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
|
109
|
+
telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager
|
|
110
|
+
|
|
111
|
+
// Check initial state
|
|
112
|
+
updateCurrentNetworkState()
|
|
113
|
+
listener?.onNetworkChanged(currentQuality)
|
|
114
|
+
|
|
115
|
+
// Register for updates
|
|
116
|
+
networkCallback = object : ConnectivityManager.NetworkCallback() {
|
|
117
|
+
override fun onAvailable(network: Network) {
|
|
118
|
+
updateCurrentNetworkState()
|
|
119
|
+
listener?.onNetworkChanged(currentQuality)
|
|
120
|
+
Logger.debug("Network changed: ${currentQuality.toMap()}")
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
override fun onLost(network: Network) {
|
|
124
|
+
updateQuality(
|
|
125
|
+
NetworkType.NONE,
|
|
126
|
+
CellularGeneration.UNKNOWN,
|
|
127
|
+
isConstrained = false,
|
|
128
|
+
isExpensive = false
|
|
129
|
+
)
|
|
130
|
+
listener?.onNetworkChanged(currentQuality)
|
|
131
|
+
Logger.debug("Network lost")
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
override fun onCapabilitiesChanged(network: Network, networkCapabilities: NetworkCapabilities) {
|
|
135
|
+
updateNetworkCapabilities(networkCapabilities)
|
|
136
|
+
listener?.onNetworkChanged(currentQuality)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
val request = NetworkRequest.Builder()
|
|
141
|
+
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
|
142
|
+
.build()
|
|
143
|
+
|
|
144
|
+
connectivityManager?.registerNetworkCallback(request, networkCallback!!)
|
|
145
|
+
Logger.debug("Network monitoring started")
|
|
146
|
+
} catch (e: Exception) {
|
|
147
|
+
Logger.error("Failed to start network monitoring", e)
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
fun stopMonitoring() {
|
|
152
|
+
try {
|
|
153
|
+
networkCallback?.let { callback ->
|
|
154
|
+
connectivityManager?.unregisterNetworkCallback(callback)
|
|
155
|
+
}
|
|
156
|
+
networkCallback = null
|
|
157
|
+
Logger.debug("Network monitoring stopped")
|
|
158
|
+
} catch (e: Exception) {
|
|
159
|
+
Logger.error("Failed to stop network monitoring", e)
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
private fun updateCurrentNetworkState() {
|
|
164
|
+
try {
|
|
165
|
+
val activeNetwork = connectivityManager?.activeNetwork
|
|
166
|
+
if (activeNetwork != null) {
|
|
167
|
+
val capabilities = connectivityManager?.getNetworkCapabilities(activeNetwork)
|
|
168
|
+
if (capabilities != null) {
|
|
169
|
+
updateNetworkCapabilities(capabilities)
|
|
170
|
+
return
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
updateQuality(NetworkType.NONE, CellularGeneration.UNKNOWN, false, false)
|
|
174
|
+
} catch (e: Exception) {
|
|
175
|
+
Logger.error("Failed to update network state", e)
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
private fun updateNetworkCapabilities(capabilities: NetworkCapabilities) {
|
|
180
|
+
val networkType = when {
|
|
181
|
+
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> NetworkType.WIFI
|
|
182
|
+
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> NetworkType.CELLULAR
|
|
183
|
+
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> NetworkType.WIRED
|
|
184
|
+
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH) ||
|
|
185
|
+
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN) -> NetworkType.OTHER
|
|
186
|
+
capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) -> NetworkType.OTHER
|
|
187
|
+
else -> NetworkType.NONE
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
val cellularGeneration = if (networkType == NetworkType.CELLULAR) {
|
|
191
|
+
mapCellularGeneration(telephonyManager?.dataNetworkType)
|
|
192
|
+
} else {
|
|
193
|
+
CellularGeneration.UNKNOWN
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
val temporarilyNotMetered = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
197
|
+
capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED)
|
|
198
|
+
} else {
|
|
199
|
+
false
|
|
200
|
+
}
|
|
201
|
+
val isExpensive = !capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) &&
|
|
202
|
+
!temporarilyNotMetered
|
|
203
|
+
|
|
204
|
+
val restricted = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
205
|
+
!capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
|
|
206
|
+
} else {
|
|
207
|
+
false
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
val backgroundRestricted = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
211
|
+
connectivityManager?.restrictBackgroundStatus ==
|
|
212
|
+
ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED
|
|
213
|
+
} else {
|
|
214
|
+
false
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
updateQuality(networkType, cellularGeneration, restricted || backgroundRestricted, isExpensive)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
fun captureNetworkQuality(): NetworkQuality = currentQuality
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Check if network is suitable for uploads (connected and preferably on wifi).
|
|
224
|
+
*/
|
|
225
|
+
fun isSuitableForUpload(): Boolean = isConnected
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Check if network is suitable for large uploads (wifi preferred).
|
|
229
|
+
*/
|
|
230
|
+
fun isSuitableForLargeUpload(): Boolean = isConnected && isWifi
|
|
231
|
+
|
|
232
|
+
private fun updateQuality(
|
|
233
|
+
networkType: NetworkType,
|
|
234
|
+
cellularGeneration: CellularGeneration,
|
|
235
|
+
isConstrained: Boolean,
|
|
236
|
+
isExpensive: Boolean
|
|
237
|
+
) {
|
|
238
|
+
currentQuality = NetworkQuality(
|
|
239
|
+
networkType = networkType,
|
|
240
|
+
cellularGeneration = cellularGeneration,
|
|
241
|
+
isConstrained = isConstrained,
|
|
242
|
+
isExpensive = isExpensive,
|
|
243
|
+
timestamp = System.currentTimeMillis()
|
|
244
|
+
)
|
|
245
|
+
isConnected = networkType != NetworkType.NONE
|
|
246
|
+
isWifi = networkType == NetworkType.WIFI
|
|
247
|
+
isCellular = networkType == NetworkType.CELLULAR
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
private fun mapCellularGeneration(networkType: Int?): CellularGeneration {
|
|
251
|
+
return when (networkType) {
|
|
252
|
+
TelephonyManager.NETWORK_TYPE_GPRS,
|
|
253
|
+
TelephonyManager.NETWORK_TYPE_EDGE,
|
|
254
|
+
TelephonyManager.NETWORK_TYPE_CDMA,
|
|
255
|
+
TelephonyManager.NETWORK_TYPE_1xRTT,
|
|
256
|
+
TelephonyManager.NETWORK_TYPE_IDEN -> CellularGeneration.G2
|
|
257
|
+
TelephonyManager.NETWORK_TYPE_UMTS,
|
|
258
|
+
TelephonyManager.NETWORK_TYPE_EVDO_0,
|
|
259
|
+
TelephonyManager.NETWORK_TYPE_EVDO_A,
|
|
260
|
+
TelephonyManager.NETWORK_TYPE_HSDPA,
|
|
261
|
+
TelephonyManager.NETWORK_TYPE_HSUPA,
|
|
262
|
+
TelephonyManager.NETWORK_TYPE_HSPA,
|
|
263
|
+
TelephonyManager.NETWORK_TYPE_EVDO_B,
|
|
264
|
+
TelephonyManager.NETWORK_TYPE_EHRPD,
|
|
265
|
+
TelephonyManager.NETWORK_TYPE_HSPAP -> CellularGeneration.G3
|
|
266
|
+
TelephonyManager.NETWORK_TYPE_LTE,
|
|
267
|
+
TelephonyManager.NETWORK_TYPE_LTE -> CellularGeneration.G4
|
|
268
|
+
TelephonyManager.NETWORK_TYPE_NR -> CellularGeneration.G5
|
|
269
|
+
else -> CellularGeneration.UNKNOWN
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|