diff --git a/mobile/build.gradle.kts b/mobile/build.gradle.kts index 09f864a..99f9ba8 100644 --- a/mobile/build.gradle.kts +++ b/mobile/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.android.application) + kotlin("plugin.serialization") version "2.2.20" } android { @@ -47,4 +48,6 @@ dependencies { androidTestImplementation(libs.androidx.junit) implementation(libs.zxing.core) implementation(libs.zxing.android) + implementation("com.google.android.gms:play-services-wearable:18.1.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") } \ No newline at end of file diff --git a/mobile/src/main/ic_launcher-playstore.png b/mobile/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..1042be9 Binary files /dev/null and b/mobile/src/main/ic_launcher-playstore.png differ diff --git a/mobile/src/main/java/ru/omni_devel/cards/CardInfo.kt b/mobile/src/main/java/ru/omni_devel/cards/CardInfo.kt index a8d9d64..6c2b210 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/CardInfo.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/CardInfo.kt @@ -1,7 +1,9 @@ package ru.omni_devel.cards import com.google.zxing.BarcodeFormat +import kotlinx.serialization.Serializable +@Serializable class CardInfo ( val id: Int, val name: String, diff --git a/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt index 505c045..90c96f9 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt @@ -7,11 +7,13 @@ import android.widget.Button import android.widget.LinearLayout import android.widget.PopupMenu import android.widget.TextView +import android.widget.Toast import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.google.android.material.button.MaterialButton +import kotlinx.serialization.json.Json import org.w3c.dom.Text class MainActivity : AppCompatActivity() { @@ -32,9 +34,23 @@ class MainActivity : AppCompatActivity() { cardsList = findViewById(R.id.cardsList) val addCardButton: Button = findViewById(R.id.addCardButton) + val syncWithWearOSButton: Button = findViewById(R.id.syncWithWearOSButton) + addCardButton.setOnClickListener { startActivity(Intent(this, AddCardActivity::class.java)) } + + syncWithWearOSButton.setOnClickListener { + Toast.makeText(this, "Sync in progress...", Toast.LENGTH_SHORT).show() + + val isSuccess = sendToWatch(this, "/updateCards", Json.encodeToString(db.getCards())) + + if (isSuccess) { + Toast.makeText(this, "Synced!", Toast.LENGTH_SHORT).show() + } else { + Toast.makeText(this, "Sync failed! Please, check your connection", Toast.LENGTH_LONG).show() + } + } } override fun onResume() { diff --git a/mobile/src/main/java/ru/omni_devel/cards/Utils.kt b/mobile/src/main/java/ru/omni_devel/cards/Utils.kt index 52664af..2babdcd 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/Utils.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/Utils.kt @@ -1,6 +1,9 @@ package ru.omni_devel.cards +import android.content.Context import android.graphics.Bitmap +import android.widget.Toast +import com.google.android.gms.wearable.Wearable import com.google.zxing.BarcodeFormat import com.google.zxing.MultiFormatWriter import com.journeyapps.barcodescanner.BarcodeEncoder @@ -11,3 +14,29 @@ fun generateCode(value: String, format: BarcodeFormat): Bitmap { return BarcodeEncoder().createBitmap(matrix) } + +fun sendToWatch(context: Context, path: String, message: String): Boolean { + val nodeClient = Wearable.getNodeClient(context) + + var isSuccess = false + + nodeClient.connectedNodes.addOnSuccessListener { nodes -> + if (nodes.isEmpty()) { + Toast.makeText(context, "Watch is not connected", Toast.LENGTH_SHORT).show() + + return@addOnSuccessListener + } + + nodes.forEach { node -> + Wearable.getMessageClient(context).sendMessage( + node.id, + path, + message.toByteArray(Charsets.UTF_8) + ).addOnSuccessListener { + isSuccess = true + } + } + } + + return isSuccess +} diff --git a/mobile/src/main/res/layout/activity_main.xml b/mobile/src/main/res/layout/activity_main.xml index 9064420..65fb4fe 100644 --- a/mobile/src/main/res/layout/activity_main.xml +++ b/mobile/src/main/res/layout/activity_main.xml @@ -58,4 +58,16 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> +