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? )