implemented position privacy

obj_origin
Georg Lukas 2011-11-14 20:33:09 +01:00
rodzic d493963f4c
commit 104046dc07
6 zmienionych plików z 74 dodań i 10 usunięć

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -37,6 +37,21 @@
<item>low</item>
</string-array>
<string-array name="p_ambiguity_e">
<item>@string/p_ambiguity_off</item>
<item>@string/p_ambiguity_ddmmm</item>
<item>@string/p_ambiguity_ddmm</item>
<item>@string/p_ambiguity_ddm</item>
<item>@string/p_ambiguity_dd</item>
</string-array>
<string-array name="p_ambiguity_ev">
<item>0</item>
<item>4</item>
<item>3</item>
<item>2</item>
<item>1</item>
</string-array>
<string-array name="p_ssid_ev">
<item></item> <item>1</item> <item>2</item> <item>3</item>
<item>4</item> <item>5</item> <item>6</item> <item>7</item>

Wyświetl plik

@ -184,6 +184,22 @@
<string name="p_source_lon">Longitude</string>
<string name="p_source_get_last">Use last GPS position</string>
<!-- privacy settings -->
<string name="p_privacy">Position privacy</string>
<string name="p_privacy_summary">Position ambiguity and more</string>
<string name="p_priv_ambiguity">Position Ambiguity</string>
<string name="p_priv_ambiguity_summary">Reduced precision for own position reports</string>
<string name="p_ambiguity_off">Off (DD° MM.mm\')</string>
<string name="p_ambiguity_ddmmm">1 (DD° MM.m\')</string>
<string name="p_ambiguity_ddmm">2 (DD° MM\')</string>
<string name="p_ambiguity_ddm">3 (DD° Mx\')</string>
<string name="p_ambiguity_dd">4 (DD°)</string>
<string name="p_priv_spdbear">Send Speed &amp; Bearing</string>
<string name="p_priv_spdbear_summary">Include speed and bearing in position reports</string>
<string name="p_priv_altitude">Send Altitude</string>
<string name="p_priv_altitude_summary">Include altitude in position reports</string>
<!-- connection type properties -->
<string name="p_host">Server</string>
<string name="p_host_summary">APRS-IS server (port 8080) to send beacons</string>

Wyświetl plik

@ -73,6 +73,35 @@
android:targetClass="org.aprsdroid.app.LocationPrefs" />
</PreferenceScreen>
<PreferenceScreen
android:title="@string/p_privacy"
android:summary="@string/p_privacy_summary">
<!-- incoming messages -->
<PreferenceCategory
android:title="@string/p_privacy">
<de.duenndns.ListPreferenceWithValue
android:key="priv_ambiguity"
android:title="@string/p_priv_ambiguity"
android:summary="@string/p_priv_ambiguity_summary"
android:entries="@array/p_ambiguity_e"
android:entryValues="@array/p_ambiguity_ev"
android:defaultValue="0"
android:dialogTitle="@string/p_priv_ambiguity" />
<CheckBoxPreference
android:key="priv_spdbear"
android:title="@string/p_priv_spdbear"
android:summary="@string/p_priv_spdbear_summary"
android:defaultValue="true"
/>
<CheckBoxPreference
android:key="priv_altitude"
android:title="@string/p_priv_altitude"
android:summary="@string/p_priv_altitude_summary"
android:defaultValue="true"
/>
</PreferenceCategory>
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory

Wyświetl plik

@ -53,15 +53,6 @@ object AprsPacket {
""
}
def formatLoc(callssid : String, toCall : String, symbol : String,
status : String, location : Location) = {
new APRSPacket(callssid, toCall, null, new PositionPacket(
new Position(location.getLatitude, location.getLongitude, 0,
symbol(0), symbol(1)),
formatCourseSpeed(location) + formatAltitude(location) +
" " + status, /* messaging = */ true))
}
def formatMessage(callssid : String, toCall : String, dest : String,
message : String, msgid : String) = {
new APRSPacket(callssid, toCall, null, new MessagePacket(dest,

Wyświetl plik

@ -145,6 +145,19 @@ class AprsService extends Service {
"APDR%s".format(pi.versionName filter (_.isDigit) take 2)
}
def formatLoc(callssid : String, toCall : String, symbol : String,
status : String, location : Location) = {
val pos = new Position(location.getLatitude, location.getLongitude, 0,
symbol(0), symbol(1))
pos.setPositionAmbiguity(prefs.getStringInt("priv_ambiguity", 0))
val status_spd = if (prefs.getBoolean("priv_spdbear", true))
AprsPacket.formatCourseSpeed(location) else ""
val status_alt = if (prefs.getBoolean("priv_altitude", true))
AprsPacket.formatAltitude(location) else ""
new APRSPacket(callssid, toCall, null, new PositionPacket(
pos, status_spd + status_alt + " " + status, /* messaging = */ true))
}
def postLocation(location : Location) {
val i = new Intent(UPDATE)
i.putExtra(LOCATION, location)
@ -154,7 +167,7 @@ class AprsService extends Service {
if (symbol.length != 2)
symbol = getString(R.string.default_symbol)
val status = prefs.getString("status", getString(R.string.default_status))
val packet = AprsPacket.formatLoc(callssid, appVersion(), symbol, status, location)
val packet = formatLoc(callssid, appVersion(), symbol, status, location)
Log.d(TAG, "packet: " + packet)
val result = try {