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) + } +}