diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 75a562a..1deab6b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -15,6 +15,8 @@
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1fb8e35..a9355a8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1,7 +1,25 @@
+APRSdroid
+You need to configure APRSdroid first!
Single Shot
Start Logging
-APRSdroid
Stop Logging
+Amateur Radio
+Callsign
+Your HAM radio callsign
+Enter your callsign
+Passcode
+APRS-IS validation passcode
+Enter the passcode for your call
+Networking
+Server
+APRS-IS server (port 8080) to send beacons
+Enter the APRS-IS server hostname
+Update interval
+Minutes between beacon transmissions
+Enter the update interval [min]
+Update distance
+Kilometers before beacon transmission
+Enter the update distance [km]
diff --git a/src/de/duenndns/aprsdroid/APRSdroid.scala b/src/de/duenndns/aprsdroid/APRSdroid.scala
index 0e84ad9..735f073 100644
--- a/src/de/duenndns/aprsdroid/APRSdroid.scala
+++ b/src/de/duenndns/aprsdroid/APRSdroid.scala
@@ -4,15 +4,19 @@ import _root_.android.app.Activity
import _root_.android.content._
import _root_.android.location._
import _root_.android.os.Bundle
+import _root_.android.preference.PreferenceManager
import _root_.android.util.Log
import _root_.android.view.View
import _root_.android.view.View.OnClickListener
import _root_.android.widget.Button
import _root_.android.widget.TextView
+import _root_.android.widget.Toast
class APRSdroid extends Activity with LocationListener with OnClickListener {
val TAG = "APRSdroid"
+ lazy val prefs = PreferenceManager.getDefaultSharedPreferences(this)
+
lazy val lat = findViewById(R.id.lat).asInstanceOf[TextView]
lazy val lon = findViewById(R.id.lon).asInstanceOf[TextView]
lazy val status = findViewById(R.id.status).asInstanceOf[TextView]
@@ -40,6 +44,17 @@ class APRSdroid extends Activity with LocationListener with OnClickListener {
registerReceiver(locReceiver, new IntentFilter(AprsService.UPDATE))
}
+ override def onResume() {
+ super.onResume()
+ List("callsign", "passcode", "host").foreach { p =>
+ if (!prefs.contains(p)) {
+ startActivity(new Intent(this, classOf[PrefsAct]));
+ Toast.makeText(this, R.string.firstrun, Toast.LENGTH_SHORT).show()
+ return
+ }
+ }
+ }
+
override def onDestroy() {
super.onDestroy()
unregisterReceiver(locReceiver)
diff --git a/src/de/duenndns/aprsdroid/AprsService.scala b/src/de/duenndns/aprsdroid/AprsService.scala
index ff994a2..b598c9c 100644
--- a/src/de/duenndns/aprsdroid/AprsService.scala
+++ b/src/de/duenndns/aprsdroid/AprsService.scala
@@ -4,6 +4,7 @@ import _root_.android.app.Service
import _root_.android.content.{Context, Intent}
import _root_.android.location._
import _root_.android.os.{Bundle, IBinder}
+import _root_.android.preference.PreferenceManager
import _root_.android.util.Log
import _root_.android.widget.Toast
@@ -18,8 +19,7 @@ class AprsService extends Service with LocationListener {
import AprsService._
val TAG = "AprsService"
- val UPDATE_TIME = 10000 // 10k ms = 10s
- val UPDATE_DIST = 10 // 10m
+ lazy val prefs = PreferenceManager.getDefaultSharedPreferences(this)
lazy val locMan = getSystemService(Context.LOCATION_SERVICE).asInstanceOf[LocationManager]
@@ -29,8 +29,10 @@ class AprsService extends Service with LocationListener {
showToast("Service started: " + i.getAction)
i.getAction match {
case SERVICE =>
+ val upd_int = prefs.getInt("interval", 10)
+ val upd_dist = prefs.getInt("distance", 10)
locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,
- UPDATE_TIME, UPDATE_DIST, this)
+ upd_int * 60000, upd_dist * 1000, this)
case SERVICE_ONCE =>
stopSelf()
}
diff --git a/src/de/duenndns/aprsdroid/PrefsAct.scala b/src/de/duenndns/aprsdroid/PrefsAct.scala
new file mode 100644
index 0000000..9f45df0
--- /dev/null
+++ b/src/de/duenndns/aprsdroid/PrefsAct.scala
@@ -0,0 +1,11 @@
+package de.duenndns.aprsdroid
+
+import _root_.android.os.Bundle
+import _root_.android.preference.PreferenceActivity
+
+class PrefsAct extends PreferenceActivity {
+ override def onCreate(savedInstanceState: Bundle) {
+ super.onCreate(savedInstanceState)
+ addPreferencesFromResource(R.xml.preferences)
+ }
+}