diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9c4b80c..8b6a946 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -41,6 +41,7 @@ android { dependencies { implementation(project(":llm")) implementation(project(":tak-plugin")) + implementation(project(":core")) implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.24") implementation("androidx.appcompat:appcompat:1.7.0") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0c18b8a..c6d9bb4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + + + + + + + + diff --git a/app/src/main/java/com/example/tacticalapp/CotMarkerReceiver.kt b/app/src/main/java/com/example/tacticalapp/CotMarkerReceiver.kt new file mode 100644 index 0000000..acd3722 --- /dev/null +++ b/app/src/main/java/com/example/tacticalapp/CotMarkerReceiver.kt @@ -0,0 +1,14 @@ +package com.example.tacticalapp + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.example.core.interop.Interop + +/** Receives external marker intents and publishes them as CoT. */ +class CotMarkerReceiver : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val json = intent.getStringExtra("marker") ?: return + Interop.publishMarkerJson(json) + } +} diff --git a/app/src/main/java/com/example/tacticalapp/InteropSettingsActivity.kt b/app/src/main/java/com/example/tacticalapp/InteropSettingsActivity.kt new file mode 100644 index 0000000..3c94abf --- /dev/null +++ b/app/src/main/java/com/example/tacticalapp/InteropSettingsActivity.kt @@ -0,0 +1,31 @@ +package com.example.tacticalapp + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.example.core.interop.Interop +import com.example.tacticalapp.databinding.ActivityInteropSettingsBinding + +class InteropSettingsActivity : AppCompatActivity() { + private lateinit var binding: ActivityInteropSettingsBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityInteropSettingsBinding.inflate(layoutInflater) + setContentView(binding.root) + + // Load current settings + binding.switchEnabled.isChecked = Interop.enabled + binding.editHost.setText(Interop.host) + binding.editPort.setText(Interop.port.toString()) + + binding.btnSave.setOnClickListener { + Interop.enabled = binding.switchEnabled.isChecked + Interop.host = binding.editHost.text.toString() + Interop.port = binding.editPort.text.toString().toIntOrNull() ?: Interop.port + if (Interop.enabled) { + Interop.startSelfBeacon(this) + } + finish() + } + } +} diff --git a/app/src/main/java/com/example/tacticalapp/MainActivity.kt b/app/src/main/java/com/example/tacticalapp/MainActivity.kt index d5dd6c8..0742377 100644 --- a/app/src/main/java/com/example/tacticalapp/MainActivity.kt +++ b/app/src/main/java/com/example/tacticalapp/MainActivity.kt @@ -20,5 +20,19 @@ class MainActivity : AppCompatActivity() { binding.btnTakStatus.setOnClickListener { Toast.makeText(this, "TAK plugin status: OK", Toast.LENGTH_SHORT).show() } + + binding.btnShareCot.setOnClickListener { + val marker = com.example.core.interop.MarkerEntity( + uid = "share-${System.currentTimeMillis()}", + lat = 0.0, + lon = 0.0, + ) + com.example.core.interop.Interop.publishMarker(marker) + Toast.makeText(this, "CoT sent", Toast.LENGTH_SHORT).show() + } + + binding.btnInteropSettings.setOnClickListener { + startActivity(Intent(this, InteropSettingsActivity::class.java)) + } } } diff --git a/app/src/main/res/layout/activity_interop_settings.xml b/app/src/main/res/layout/activity_interop_settings.xml new file mode 100644 index 0000000..51b045a --- /dev/null +++ b/app/src/main/res/layout/activity_interop_settings.xml @@ -0,0 +1,32 @@ + + + + + + + + + +