Asset profile Operations
This example demonstrates:
-
Creating an Asset: Learn how to generate a new asset within your application, enabling the introduction of new assets into your tracking system.
-
Binding an Existing Asset ID to the Current Device: Discover the process of associating an existing asset ID with the device you're currently using, facilitating tracking and management of that asset.
-
Updating the Current Asset Profile: Gain insights into how to modify the profile of an asset, ensuring that the asset's information remains accurate and up-to-date.
-
Retrieving Asset Details for the Bound Asset ID: Learn how to access and retrieve detailed information about an asset that has been successfully bound to the current device, enabling comprehensive asset management.
For all code examples, refer to Asset Tracking Android Code Examples
activity_asset_profile_operation.xml view source
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 android:orientation="vertical"
8 android:padding="10dp"
9 tools:context=".codeexample.AssetProfileOperations">
10
11 <Button
12 android:id="@+id/create_asset"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:text="@string/create_asset" />
16
17 <Button
18 android:id="@+id/bind_asset_to_device"
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"
21 android:text="@string/bind_asset" />
22
23 <Button
24 android:id="@+id/update_asset"
25 android:layout_width="wrap_content"
26 android:layout_height="wrap_content"
27 android:text="@string/update_asset" />
28
29 <Button
30 android:id="@+id/get_asset_detail"
31 android:layout_width="wrap_content"
32 android:layout_height="wrap_content"
33 android:text="@string/get_asset_detail" />
34
35 <TextView
36 android:id="@+id/asset_detail"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:layout_marginTop="10dp" />
40
41</LinearLayout>
AssetProfileOperations view source
1class AssetProfileOperations : AppCompatActivity() {
2 private var assetId = ""
3 private var assetName = "testName"
4 private var assetDescription = "testDescription"
5 private var assetAttributes: Map<String, String> = mapOf("attribute 1" to "test 1", "attribute 2" to "test 2")
6
7 private lateinit var createAssetButton: Button
8 private lateinit var bindAssetButton: Button
9 private lateinit var updateAssetButton: Button
10 private lateinit var getAssetDetailButton: Button
11 private lateinit var assetDetailView: TextView
12
13
14 override fun onCreate(savedInstanceState: Bundle?) {
15 super.onCreate(savedInstanceState)
16 setContentView(R.layout.activity_asset_profile_operation)
17 initView()
18
19 // initialize the Asset Tracking SDK
20 initialize( "PUT YOUR API KEY HERE")
21 }
22
23 private fun initView() {
24 createAssetButton = findViewById(R.id.create_asset)
25 createAssetButton.setOnClickListener {
26 createAsset()
27 }
28
29 bindAssetButton = findViewById(R.id.bind_asset_to_device)
30 bindAssetButton.setOnClickListener {
31 onBindAsset()
32 }
33
34 updateAssetButton = findViewById(R.id.update_asset)
35 updateAssetButton.setOnClickListener {
36 updateAsset()
37 }
38
39 getAssetDetailButton = findViewById(R.id.get_asset_detail)
40 getAssetDetailButton.setOnClickListener {
41 getAssetDetail()
42 }
43
44 assetDetailView = findViewById(R.id.asset_detail)
45 }
46
47 private fun createAsset() {
48 val assetProfile = AssetProfile.Builder().setCustomId(UUID.randomUUID().toString()).setName(assetName)
49 .setDescription(assetDescription).setAttributes(assetAttributes).build()
50
51 createNewAsset(assetProfile, object : AssetApiCallback<AssetCreationResponse> {
52 @SuppressLint("SetTextI18n")
53 override fun onSuccess(result: AssetCreationResponse) {
54 assetId = result.data.id
55 Toast.makeText(
56 this@AssetProfileOperations,
57 "create asset successfully with asset id: $assetId",
58 Toast.LENGTH_LONG
59 ).show()
60
61 val assetJsonString = Gson().toJson(assetProfile)
62 assetDetailView.text = "asset profile is: $assetJsonString"
63 }
64
65 override fun onFailure(exception: Exception) {
66 val exceptionMessage = exception.message ?: ""
67 Toast.makeText(
68 this@AssetProfileOperations,
69 "update asset profile failed with error: $exceptionMessage",
70 Toast.LENGTH_LONG
71 ).show()
72 }
73 })
74 }
75
76 private fun onBindAsset() {
77 bindAsset(assetId, object : AssetApiCallback<Unit> {
78 override fun onSuccess(result: Unit) {
79 Toast.makeText(
80 this@AssetProfileOperations,
81 String.format(
82 "bind asset successfully with assetId: %s",
83 assetId
84 ),
85 Toast.LENGTH_LONG
86 ).show()
87 }
88
89 override fun onFailure(exception: Exception) {
90 val exceptionMessage = exception.message ?: ""
91 Toast.makeText(
92 this@AssetProfileOperations,
93 "bind asset failed: $exceptionMessage",
94 Toast.LENGTH_LONG
95 ).show()
96 }
97 })
98 }
99
100 // Operation of updating asset can only be done after binding to an asset
101 private fun updateAsset() {
102 assetName = "newName"
103 assetDescription = "newDescription"
104 val assetProfile = AssetProfile.Builder().setCustomId(assetId).setName(assetName)
105 .setDescription(assetDescription).setAttributes(assetAttributes).build()
106
107 updateAssetInfo(assetProfile, object : AssetApiCallback<Unit> {
108 @SuppressLint("SetTextI18n")
109 override fun onSuccess(result: Unit) {
110 Toast.makeText(
111 this@AssetProfileOperations,
112 "update asset profile successfully",
113 Toast.LENGTH_LONG
114 ).show()
115
116 val assetJsonString = Gson().toJson(assetProfile)
117 assetDetailView.text = "asset profile is: $assetJsonString"
118 }
119
120 override fun onFailure(exception: Exception) {
121 val exceptionMessage = exception.message ?: ""
122 Toast.makeText(
123 this@AssetProfileOperations,
124 "update asset profile failed with error: $exceptionMessage",
125 Toast.LENGTH_LONG
126 ).show()
127 }
128
129 })
130 }
131
132 // User can only get current asset info, and this operation can be done only after binding to an asset id
133 private fun getAssetDetail() {
134 getAssetInfo(object : AssetApiCallback<GetAssetResponse> {
135 @SuppressLint("SetTextI18n")
136 override fun onSuccess(result: GetAssetResponse) {
137 val asset: Asset = result.data.asset
138 val assetJsonString = Gson().toJson(asset)
139 assetDetailView.text = "full asset info: $assetJsonString"
140 }
141
142 override fun onFailure(exception: Exception) {
143 val exceptionMessage = exception.message ?: ""
144 Toast.makeText(
145 this@AssetProfileOperations,
146 "bind asset failed: $exceptionMessage",
147 Toast.LENGTH_LONG
148 ).show()
149 }
150 })
151 }
152
153}
Upon executing the code example provided above, your app's appearance will resemble the following snippet:

Code Highlights
The above code snippet is for an Android activity that demonstrates how to perform asset profile operations using the Asset Tracking SDK. The activity has the following main functionalities:
-
Initialize the Asset Tracking SDK.
-
Create an asset profile.
-
Bind the asset profile to the device.
-
Update the asset profile.
-
Get the asset profile details.
The following is a description of each step:
-
To initialize the Asset Tracking SDK, the activity calls the initialize() method with your API key.
-
To create an asset profile, the activity creates an AssetProfile object and sets its properties. The AssetProfile object specifies the asset's custom ID, name, description, and attributes.
-
To bind the asset profile to the device, the activity calls the bindAsset() method with the asset ID.
-
To update the asset profile, the activity creates a new AssetProfile object with the updated properties and calls the updateAssetInfo() method.
-
To get the asset profile details, the activity calls the getAssetInfo() method.
The code snippet also includes a few helper functions:
-
createNewAsset(): This function creates a new asset and returns the asset ID.
-
bindAsset(): This function binds an asset profile to the device.
-
updateAssetInfo(): This function updates an asset profile.
-
getAssetInfo(): This function gets the details of an asset profile.