When developing apps on smartphones, obtaining user device information is essential. To enhance user experience and provide personalized services, it is necessary to utilize various information about the device. This course will explain in detail how to effectively obtain information from Android devices using Kotlin.
1. What is Smartphone Information?
Smartphone information refers to information about the user’s hardware and software components. It can include the following:
- Device model
- OS version
- Manufacturer
- Storage space information
- Network connectivity status
- Battery status
- Sensor information
2. Setting Necessary Permissions
To access device information, the necessary permissions must be set in the AndroidManifest.xml file. Below is a basic example of permission settings:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.deviceinfo">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
3. Information Access Libraries
Android provides various libraries to obtain information, including:
- Build: Device and OS information
- ConnectivityManager: Network status
- BatteryManager: Battery status
- PackageManager: Installed app information
4. Device Information Code Example
The example code below shows how to retrieve information from an Android device using Kotlin.
import android.content.Context
import android.os.Build
import android.content.Intent
import android.content.IntentFilter
import android.os.BatteryManager
import android.net.ConnectivityManager
import android.net.NetworkInfo
class DeviceInfo(context: Context) {
private val appContext = context.applicationContext
fun getDeviceModel(): String {
return Build.MODEL
}
fun getOSVersion(): String {
return Build.VERSION.RELEASE
}
fun getManufacturer(): String {
return Build.MANUFACTURER
}
fun getBatteryLevel(): Int {
val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { intentFilter ->
appContext.registerReceiver(null, intentFilter)
}
val level = batteryStatus?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) ?: -1
val scale = batteryStatus?.getIntExtra(BatteryManager.EXTRA_SCALE, -1) ?: -1
return (level / scale.toFloat() * 100).toInt()
}
fun isConnectedToNetwork(): Boolean {
val connectivityManager = appContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo: NetworkInfo? = connectivityManager.activeNetworkInfo
return networkInfo != null && networkInfo.isConnected
}
}
4.1 Usage
The following shows how to retrieve device information using the above class:
class MainActivity : AppCompatActivity() {
private lateinit var deviceInfo: DeviceInfo
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
deviceInfo = DeviceInfo(this)
val deviceModel = deviceInfo.getDeviceModel()
val osVersion = deviceInfo.getOSVersion()
val manufacturer = deviceInfo.getManufacturer()
val batteryLevel = deviceInfo.getBatteryLevel()
val isConnected = deviceInfo.isConnectedToNetwork()
// Displaying information on UI
displayDeviceInfo(deviceModel, osVersion, manufacturer, batteryLevel, isConnected)
}
private fun displayDeviceInfo(model: String, os: String, manufacturer: String, battery: Int, connected: Boolean) {
// UI update code
}
}
5. Displaying Various Information
There are various ways to display the information created above on the UI. You can use RecyclerView or ListView to show the information in a list format, or use TextView to simply display the information. For example:
private fun displayDeviceInfo(model: String, os: String, manufacturer: String, battery: Int, connected: Boolean) {
val infoTextView: TextView = findViewById(R.id.infoTextView)
val connectionStatus = if (connected) "Connected" else "Not Connected"
val info = "Model: $model\n" +
"OS Version: $os\n" +
"Manufacturer: $manufacturer\n" +
"Battery Level: $battery%\n" +
"Network Status: $connectionStatus"
infoTextView.text = info
}
6. Ways to Improve the Project
This project is just a starting point. It can be further improved in the following ways:
- Add various sensor information
- Improve UI design
- Provide personalized services
Conclusion
Obtaining smartphone information is essential for enhancing user experience and making apps more useful. Through the methods explained in this course, you can effectively access and utilize device information in Android apps using Kotlin. Create applications that handle more information through various practices!