diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/DeviceInformationFactory.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/DeviceInformationFactory.kt
index 9397ac8..dc0a38b 100644
--- a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/DeviceInformationFactory.kt
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/DeviceInformationFactory.kt
@@ -39,10 +39,8 @@ object DeviceInformationFactory : DeviceInformation {
@RequiresPermission(
allOf = [Manifest.permission.INTERNET, Manifest.permission.ACCESS_NETWORK_STATE]
)
- override fun getNetworkTechnologiesInformation(context: Context): NetworkTechnologiesInformation {
- val getNetworkTechnologiesInformation = GetNetworkTechnologiesInformationCommand(context)
- return getNetworkTechnologiesInformation(Unit)
- }
+ override fun getNetworkTechnologiesInformation(context: Context) =
+ GetNetworkTechnologiesInformationCommand(context, api).invoke(Unit)
override fun getOSInformation(): OSInformation {
val getOSInformationCommand = GetOSInformationCommand()
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetCloudInformationCommand.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetCloudInformationCommand.kt
new file mode 100644
index 0000000..24f97ee
--- /dev/null
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetCloudInformationCommand.kt
@@ -0,0 +1,22 @@
+package com.udfsoft.androidinfo.lib.command
+
+import com.udfsoft.androidinfo.lib.command.entity.MenuIds
+import com.udfsoft.androidinfo.lib.command.entity.MutableEntity
+import com.udfsoft.androidinfo.lib.network.AndroidInfoApi
+import com.udfsoft.androidinfo.lib.network.entity.DeviceInformationItemNetwork
+
+abstract class BaseGetCloudInformationCommand
>(
+ private val api: AndroidInfoApi,
+ private val menuId: MenuIds
+) : CommandInterface
{
+
+ override fun invoke(param: P): P {
+ val deviceInformation = api.getDeviceInfo(menuId.menuId).execute().body()
+ deviceInformation?.deviceMenuItemList?.forEach {
+ processInfo(it, param)
+ }
+ return param
+ }
+
+ protected abstract fun processInfo(item: DeviceInformationItemNetwork, entity: P)
+}
\ No newline at end of file
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetLocalInformationCommand.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetLocalInformationCommand.kt
new file mode 100644
index 0000000..527b405
--- /dev/null
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetLocalInformationCommand.kt
@@ -0,0 +1,5 @@
+package com.udfsoft.androidinfo.lib.command
+
+import com.udfsoft.androidinfo.lib.command.entity.MutableEntity
+
+abstract class BaseGetLocalInformationCommand
> : CommandInterface
\ No newline at end of file
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetNetworkInformationCommand.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetNetworkInformationCommand.kt
deleted file mode 100644
index 5cf8fa9..0000000
--- a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/BaseGetNetworkInformationCommand.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.udfsoft.androidinfo.lib.command
-
-import com.udfsoft.androidinfo.lib.network.AndroidInfoApi
-import com.udfsoft.androidinfo.lib.network.entity.DeviceInformationNetwork
-
-abstract class BaseGetNetworkInformationCommand
(
- private val api: AndroidInfoApi,
- private val menuId: Int
-) : CommandInterface
{
-
- override fun invoke(param: P): R {
- val deviceInformation = api.getDeviceInfo(menuId).execute().body()
- return processInfo(deviceInformation, param)
- }
-
- abstract fun processInfo(item: DeviceInformationNetwork?, param: P): R
-}
\ No newline at end of file
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/MutableEntity.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/MutableEntity.kt
new file mode 100644
index 0000000..37365f0
--- /dev/null
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/MutableEntity.kt
@@ -0,0 +1,5 @@
+package com.udfsoft.androidinfo.lib.command.entity
+
+interface MutableEntity
{
+ fun build(): P
+}
\ No newline at end of file
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/general/GeneralIds.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/general/GeneralIds.kt
index 50e03e1..8f83ff7 100644
--- a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/general/GeneralIds.kt
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/general/GeneralIds.kt
@@ -1,7 +1,6 @@
package com.udfsoft.androidinfo.lib.command.entity.general
enum class GeneralIds(val id: Int) {
-
BRAND(1010),
MODEL(1020),
MODEL_ALIAS(1030)
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/network/MutableNetworkTechnologiesInformation.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/network/MutableNetworkTechnologiesInformation.kt
new file mode 100644
index 0000000..ccfd561
--- /dev/null
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/network/MutableNetworkTechnologiesInformation.kt
@@ -0,0 +1,24 @@
+package com.udfsoft.androidinfo.lib.command.entity.network
+
+import com.udfsoft.androidinfo.lib.command.entity.MutableEntity
+import com.udfsoft.androidinfo.lib.entity.NetworkTechnologiesInformation
+import com.udfsoft.androidinfo.lib.util.NetworkUtils
+
+data class MutableNetworkTechnologiesInformation(
+ var networkType: NetworkUtils.NetworkType = NetworkUtils.NetworkType.UNKNOWN,
+ var localIp: String? = null,
+ var mac: String? = null,
+ var gsm: String? = null,
+ var lte: String? = null,
+ var mobileNetworkTechnologies: String? = null
+) : MutableEntity {
+
+ override fun build() = NetworkTechnologiesInformation(
+ networkType,
+ localIp,
+ mac,
+ gsm,
+ lte,
+ mobileNetworkTechnologies
+ )
+}
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/network/NetworkTechnologiesIds.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/network/NetworkTechnologiesIds.kt
new file mode 100644
index 0000000..e6bf548
--- /dev/null
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/entity/network/NetworkTechnologiesIds.kt
@@ -0,0 +1,7 @@
+package com.udfsoft.androidinfo.lib.command.entity.network
+
+enum class NetworkTechnologiesIds(val id: Int) {
+ GSM(4140),
+ LTE(4160),
+ NetworkTechnologies(4180)
+}
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetCloudNetworkTechnologiesInformationCommand.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetCloudNetworkTechnologiesInformationCommand.kt
new file mode 100644
index 0000000..84463bc
--- /dev/null
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetCloudNetworkTechnologiesInformationCommand.kt
@@ -0,0 +1,28 @@
+package com.udfsoft.androidinfo.lib.command.network
+
+import com.udfsoft.androidinfo.lib.command.BaseGetCloudInformationCommand
+import com.udfsoft.androidinfo.lib.command.entity.MenuIds
+import com.udfsoft.androidinfo.lib.command.entity.network.MutableNetworkTechnologiesInformation
+import com.udfsoft.androidinfo.lib.command.entity.network.NetworkTechnologiesIds
+import com.udfsoft.androidinfo.lib.network.AndroidInfoApi
+import com.udfsoft.androidinfo.lib.network.entity.DeviceInformationItemNetwork
+
+class GetCloudNetworkTechnologiesInformationCommand(
+ api: AndroidInfoApi
+) : BaseGetCloudInformationCommand(
+ api,
+ MenuIds.MENU_ID_MOBILE_NETWORK
+) {
+
+ override fun processInfo(
+ item: DeviceInformationItemNetwork,
+ entity: MutableNetworkTechnologiesInformation
+ ) {
+ when (item.id) {
+ NetworkTechnologiesIds.GSM.id -> entity.gsm = item.value
+ NetworkTechnologiesIds.LTE.id -> entity.lte = item.value
+ NetworkTechnologiesIds.NetworkTechnologies.id ->
+ entity.mobileNetworkTechnologies = item.value
+ }
+ }
+}
\ No newline at end of file
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetLocalNetworkTechnologiesInformationCommand.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetLocalNetworkTechnologiesInformationCommand.kt
new file mode 100644
index 0000000..b2152da
--- /dev/null
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetLocalNetworkTechnologiesInformationCommand.kt
@@ -0,0 +1,24 @@
+package com.udfsoft.androidinfo.lib.command.network
+
+import android.Manifest
+import android.content.Context
+import androidx.annotation.RequiresPermission
+import com.udfsoft.androidinfo.lib.command.BaseGetLocalInformationCommand
+import com.udfsoft.androidinfo.lib.command.entity.network.MutableNetworkTechnologiesInformation
+import com.udfsoft.androidinfo.lib.util.NetworkUtils
+
+class GetLocalNetworkTechnologiesInformationCommand(
+ private val context: Context
+) : BaseGetLocalInformationCommand() {
+
+ @RequiresPermission(
+ allOf = [Manifest.permission.INTERNET, Manifest.permission.ACCESS_NETWORK_STATE]
+ )
+ override fun invoke(param: MutableNetworkTechnologiesInformation): MutableNetworkTechnologiesInformation {
+ param.networkType = NetworkUtils.getNetworkType(context)
+ param.localIp = NetworkUtils.getLocalIpAddress()
+ param.mac = NetworkUtils.getMACAddress(null)
+
+ return param
+ }
+}
\ No newline at end of file
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetNetworkTechnologiesInformationCommand.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetNetworkTechnologiesInformationCommand.kt
index 7fad8ce..0b4f1aa 100644
--- a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetNetworkTechnologiesInformationCommand.kt
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/command/network/GetNetworkTechnologiesInformationCommand.kt
@@ -4,20 +4,22 @@ import android.Manifest
import android.content.Context
import androidx.annotation.RequiresPermission
import com.udfsoft.androidinfo.lib.command.CommandInterface
+import com.udfsoft.androidinfo.lib.command.entity.network.MutableNetworkTechnologiesInformation
import com.udfsoft.androidinfo.lib.entity.NetworkTechnologiesInformation
-import com.udfsoft.androidinfo.lib.util.NetworkUtils
+import com.udfsoft.androidinfo.lib.network.AndroidInfoApi
class GetNetworkTechnologiesInformationCommand(
- private val context: Context
+ private val context: Context,
+ val api: AndroidInfoApi
) : CommandInterface {
@RequiresPermission(
allOf = [Manifest.permission.INTERNET, Manifest.permission.ACCESS_NETWORK_STATE]
)
override fun invoke(param: Unit): NetworkTechnologiesInformation {
- val networkType = NetworkUtils.getNetworkType(context)
- val localIp = NetworkUtils.getLocalIpAddress()
- val mac = NetworkUtils.getMACAddress(null)
- return NetworkTechnologiesInformation(networkType, localIp, mac)
+ val mutableEntity = MutableNetworkTechnologiesInformation()
+ GetLocalNetworkTechnologiesInformationCommand(context).invoke(mutableEntity)
+ GetCloudNetworkTechnologiesInformationCommand(api).invoke(mutableEntity)
+ return mutableEntity.build()
}
}
\ No newline at end of file
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkInformation.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkInformation.kt
index 649d80f..78178af 100644
--- a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkInformation.kt
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkInformation.kt
@@ -1,5 +1,3 @@
package com.udfsoft.androidinfo.lib.entity
-class NetworkInformation {
-
-}
+class NetworkInformation
diff --git a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkTechnologiesInformation.kt b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkTechnologiesInformation.kt
index f4572ca..73c2087 100644
--- a/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkTechnologiesInformation.kt
+++ b/AndroidInfoLib/src/main/java/com/udfsoft/androidinfo/lib/entity/NetworkTechnologiesInformation.kt
@@ -5,5 +5,8 @@ import com.udfsoft.androidinfo.lib.util.NetworkUtils
data class NetworkTechnologiesInformation(
val networkType: NetworkUtils.NetworkType,
val localIp: String?,
- val mac: String?
+ val mac: String?,
+ val gsm: String?,
+ val lte: String?,
+ val mobileNetworkTechnologies: String?
)