Update osmo plugin
This commit is contained in:
parent
73d7be61aa
commit
143e602c79
11 changed files with 161 additions and 45 deletions
|
@ -5,16 +5,9 @@
|
|||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/motd"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dip"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -30,12 +23,28 @@
|
|||
android:src="@drawable/mon_osmo_conn_small" />
|
||||
|
||||
<Switch
|
||||
android:id="@+id/enable_tracker"
|
||||
android:layout_width="wrap_content"
|
||||
android:id="@+id/enable_service"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/osmo_enable_tracker" />
|
||||
android:text="@string/osmo_start_service" />
|
||||
</LinearLayout>
|
||||
|
||||
<Switch
|
||||
android:id="@+id/enable_tracker"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/osmo_enable_tracker" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/motd"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dip"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp" />
|
||||
|
||||
</LinearLayout>
|
|
@ -4,17 +4,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/motd"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dip"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -30,12 +23,28 @@
|
|||
android:src="@drawable/mon_osmo_conn_small" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/enable_tracker"
|
||||
android:layout_width="wrap_content"
|
||||
android:id="@+id/enable_service"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/osmo_enable_tracker" />
|
||||
android:text="@string/osmo_start_service" />
|
||||
</LinearLayout>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/enable_tracker"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/osmo_enable_tracker" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/motd"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dip"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp" />
|
||||
|
||||
</LinearLayout>
|
|
@ -1689,7 +1689,7 @@ OsmAnd - открытый источник и активно развается.
|
|||
<string name="osmo_group_policy">Политика</string>
|
||||
<string name="osmo_control">Быстрый доступ к OsMo</string>
|
||||
<string name="osmo_cancel_moving_target">Отменить движущуюся цель</string>
|
||||
<string name="osmo_set_moving_target">Установить как движущуюся цель</string>
|
||||
<string name="osmo_set_moving_target">Движущаяся цель</string>
|
||||
<string name="osmo_center_location">Центр на экране</string>
|
||||
<string name="gpx_selection_segment_title">Сегмент</string>
|
||||
<string name="gpx_info_distance">Расстояние: %1$s (%2$s точек) </string>
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||
-->
|
||||
<string name="osmo_auto_connect_descr">Automatically connect to the service after application startup</string>
|
||||
<string name="osmo_auto_connect">Auto-connect</string>
|
||||
<string name="osmo_start_service">OsMo service</string>
|
||||
<string name="osmo_gpx_track_downloaded">OsMo track %1$s downloaded.</string>
|
||||
<string name="no_index_file_to_download">Nothing to download, please check internet connection.</string>
|
||||
<string name="select_index_file_to_download">Nothing was found. If you can\'t find your region, you can make it yourself (see http://osmand.net).</string>
|
||||
|
|
|
@ -847,6 +847,10 @@ public class OsmandSettings {
|
|||
|
||||
public final OsmandPreference<String> OSMO_USER_PWD = new StringPreference("osmo_user_pwd", null).makeGlobal();
|
||||
|
||||
public final OsmandPreference<Boolean> OSMO_AUTO_CONNECT = new BooleanPreference("osmo_automatically_connect", false).makeGlobal();
|
||||
|
||||
public final OsmandPreference<Long> OSMO_LAST_PING = new LongPreference("osmo_last_ping", 0).makeGlobal().cache();
|
||||
|
||||
public final OsmandPreference<Boolean> OSMO_AUTO_SEND_LOCATIONS = new BooleanPreference("osmo_automatically_send_locations", false).makeGlobal();
|
||||
|
||||
public final OsmandPreference<Boolean> OSMO_SHOW_GROUP_NOTIFICATIONS = new BooleanPreference("osmo_show_toast_notifications", true).makeGlobal();
|
||||
|
|
|
@ -243,7 +243,7 @@ public class OsMoGroups implements OsMoReactor, OsmoTrackerListener {
|
|||
gr.description = obj.getString(DESCRIPTION);
|
||||
}
|
||||
if(obj.has(POLICY)) {
|
||||
gr.description = obj.getString(POLICY);
|
||||
gr.policy = obj.getString(POLICY);
|
||||
}
|
||||
if(obj.has(EXPIRE_TIME)) {
|
||||
gr.expireTime = obj.getLong(EXPIRE_TIME);
|
||||
|
|
|
@ -118,6 +118,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
private Object selectedObject = null;
|
||||
private String operation;
|
||||
private Paint white;
|
||||
private View header;
|
||||
|
||||
|
||||
@Override
|
||||
|
@ -134,9 +135,10 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
new OsMoIntentHandler(app, osMoPlugin).execute(getIntent());
|
||||
}
|
||||
}
|
||||
setContentView(R.layout.osmo_groups_list);
|
||||
setContentView(R.layout.expandable_list);
|
||||
getSupportActionBar().setTitle(R.string.osmo_activity);
|
||||
setSupportProgressBarIndeterminateVisibility(false);
|
||||
setupHeader();
|
||||
// getSupportActionBar().setIcon(R.drawable.tab_search_favorites_icon);
|
||||
|
||||
|
||||
|
@ -147,7 +149,19 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
|
||||
uiHandler = new Handler();
|
||||
directionPath = createDirectionPath();
|
||||
CompoundButton trackr = (CompoundButton) findViewById(R.id.enable_tracker);
|
||||
|
||||
white = new Paint();
|
||||
white.setStyle(Style.FILL_AND_STROKE);
|
||||
white.setColor(getResources().getColor(R.color.color_unknown));
|
||||
white.setAntiAlias(true);
|
||||
|
||||
updateStatus();
|
||||
}
|
||||
|
||||
private void setupHeader() {
|
||||
header = getLayoutInflater().inflate(R.layout.osmo_groups_list_header, null);
|
||||
getExpandableListView().addHeaderView(header);
|
||||
CompoundButton trackr = (CompoundButton) header.findViewById(R.id.enable_tracker);
|
||||
trackr.setChecked(osMoPlugin.getTracker().isEnabledTracker());
|
||||
trackr.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
||||
|
||||
|
@ -166,20 +180,48 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
updateStatus();
|
||||
}
|
||||
});
|
||||
TextView mtd = (TextView) findViewById(R.id.motd);
|
||||
|
||||
CompoundButton srvc = (CompoundButton) header.findViewById(R.id.enable_service);
|
||||
srvc.setChecked(osMoPlugin.getService().isEnabled());
|
||||
srvc.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
if (isChecked) {
|
||||
osMoPlugin.getService().connect(true);
|
||||
} else {
|
||||
osMoPlugin.getTracker().disableTracker();
|
||||
osMoPlugin.getService().disconnect();
|
||||
if (app.getNavigationService() != null) {
|
||||
app.getNavigationService().stopIfNeeded(app, NavigationService.USED_BY_LIVE);
|
||||
}
|
||||
}
|
||||
setSupportProgressBarIndeterminateVisibility(true);
|
||||
header.postDelayed(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
updateStatus();
|
||||
if (osMoPlugin.getService().isConnected()) {
|
||||
adapter.synchronizeGroups();
|
||||
} else {
|
||||
adapter.clear();
|
||||
}
|
||||
setSupportProgressBarIndeterminateVisibility(false);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
TextView mtd = (TextView) header.findViewById(R.id.motd);
|
||||
SessionInfo si = osMoPlugin.getService().getCurrentSessionInfo();
|
||||
boolean visible = si != null && si.motd != null && si.motd.length() > 0;
|
||||
mtd.setVisibility(visible? View.VISIBLE:View.GONE);
|
||||
if(visible) {
|
||||
mtd.setText(si.motd);
|
||||
}
|
||||
|
||||
white = new Paint();
|
||||
white.setStyle(Style.FILL_AND_STROKE);
|
||||
white.setColor(getResources().getColor(R.color.color_unknown));
|
||||
white.setAntiAlias(true);
|
||||
|
||||
updateStatus();
|
||||
}
|
||||
|
||||
long lastUpdateTime;
|
||||
|
@ -199,7 +241,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
}
|
||||
|
||||
private void updateStatus() {
|
||||
ImageView status = (ImageView) findViewById(R.id.osmo_status);
|
||||
ImageView status = (ImageView) header.findViewById(R.id.osmo_status);
|
||||
final Drawable srcSmall = getResources().getDrawable(R.drawable.mon_osmo_conn_small);
|
||||
final Drawable srcSignalSmall = getResources().getDrawable(R.drawable.mon_osmo_conn_signal_small);
|
||||
final Drawable srcBig = getResources().getDrawable(R.drawable.mon_osmo_conn_big);
|
||||
|
@ -221,6 +263,13 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
lastUpdateTime = last;
|
||||
blink(status, big, small);
|
||||
}
|
||||
if(service.isConnected()) {
|
||||
header.findViewById(R.id.motd).setVisibility(View.VISIBLE);
|
||||
header.findViewById(R.id.enable_tracker).setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
header.findViewById(R.id.motd).setVisibility(View.GONE);
|
||||
header.findViewById(R.id.enable_tracker).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private Path createDirectionPath() {
|
||||
|
@ -262,7 +311,9 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
app.getLocationProvider().addLocationListener(this);
|
||||
app.getLocationProvider().resumeAllUpdates();
|
||||
osMoPlugin.getGroups().setUiListener(this);
|
||||
adapter.synchronizeGroups();
|
||||
if(osMoPlugin.getService().isConnected()) {
|
||||
adapter.synchronizeGroups();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -297,15 +348,18 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
}
|
||||
createMenuItem(menu, SHARE_ID, R.string.share_fav, R.drawable.ic_action_gshare_light, R.drawable.ic_action_gshare_dark,
|
||||
MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
// there is a bug in Android 4.2 layout
|
||||
device != null && device.getLastLocation() != null ? MenuItem.SHOW_AS_ACTION_NEVER : MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
///
|
||||
if(device != null) {
|
||||
createMenuItem(menu, SETTINGS_DEV_ID, R.string.settings, R.drawable.ic_action_settings_light, R.drawable.ic_action_settings_dark,
|
||||
MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
// there is a bug in Android 4.2 layout
|
||||
device.getLastLocation() != null ? MenuItem.SHOW_AS_ACTION_NEVER : MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
}
|
||||
if(device != null && device.getLastLocation() != null) {
|
||||
MenuItem menuItem = createMenuItem(menu, TRACK_DEV_ID, R.string.osmo_set_moving_target, R.drawable.ic_action_flage_light, R.drawable.ic_action_flage_dark,
|
||||
MenuItem.SHOW_AS_ACTION_IF_ROOM );
|
||||
// there is a bug in Android 4.2 layout
|
||||
device.getLastLocation() != null ? MenuItem.SHOW_AS_ACTION_NEVER : MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
menuItem.setTitleCondensed(getString(R.string.osmo_follow));
|
||||
}
|
||||
if(group != null) {
|
||||
|
@ -344,6 +398,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
@Override
|
||||
public void onDestroyActionMode(ActionMode mode) {
|
||||
selectedObject = null;
|
||||
refreshList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -768,7 +823,9 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
this.grs = grs;
|
||||
this.tracker = tracker;
|
||||
this.srv = srv;
|
||||
synchronizeGroups();
|
||||
if(srv.isConnected()) {
|
||||
synchronizeGroups();
|
||||
}
|
||||
}
|
||||
|
||||
public void update(OsMoGroup group) {
|
||||
|
@ -793,6 +850,11 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
|||
}
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
users.clear();
|
||||
sortedGroups.clear();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
public void synchronizeGroups() {
|
||||
|
|
|
@ -71,7 +71,10 @@ public class OsMoPlugin extends OsmandPlugin implements MonitoringInfoControlSer
|
|||
|
||||
@Override
|
||||
public boolean init(final OsmandApplication app) {
|
||||
service.connect(true);
|
||||
if(app.getSettings().OSMO_AUTO_CONNECT.get() ||
|
||||
(System.currentTimeMillis() - app.getSettings().OSMO_LAST_PING.get() < 5 * 60 * 1000 )) {
|
||||
service.connect(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -190,6 +193,7 @@ public class OsMoPlugin extends OsmandPlugin implements MonitoringInfoControlSer
|
|||
* creates (if it wasn't created previously) the control to be added on a MapInfoLayer that shows a monitoring state (recorded/stopped)
|
||||
*/
|
||||
private BaseMapWidget createOsMoControl(final MapActivity map, Paint paintText, Paint paintSubText) {
|
||||
|
||||
final Drawable srcSmall = map.getResources().getDrawable(R.drawable.mon_osmo_conn_small);
|
||||
final Drawable srcSignalSmall = map.getResources().getDrawable(R.drawable.mon_osmo_conn_signal_small);
|
||||
final Drawable srcBig = map.getResources().getDrawable(R.drawable.mon_osmo_conn_big);
|
||||
|
|
|
@ -10,7 +10,6 @@ import java.util.List;
|
|||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.Version;
|
||||
|
@ -45,6 +44,7 @@ public class OsMoService implements OsMoReactor {
|
|||
public static final String TRACK_URL = "http://osmo.mobi/u/";
|
||||
private String lastRegistrationError = null;
|
||||
private OsMoPlugin plugin;
|
||||
private boolean enabled = false;
|
||||
|
||||
|
||||
|
||||
|
@ -95,16 +95,22 @@ public class OsMoService implements OsMoReactor {
|
|||
thread.stopConnection();
|
||||
}
|
||||
thread = new OsMoThread(this, listReactors);
|
||||
enabled = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void disconnect() {
|
||||
if(thread != null) {
|
||||
enabled = false;
|
||||
thread.stopConnection();
|
||||
app.getSettings().OSMO_LAST_PING.set(0l);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void registerReactor(OsMoReactor reactor) {
|
||||
if(!listReactors.contains(reactor)) {
|
||||
listReactors.add(reactor);
|
||||
|
@ -202,6 +208,9 @@ public class OsMoService implements OsMoReactor {
|
|||
// Add your data
|
||||
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
|
||||
nameValuePairs.add(new BasicNameValuePair("key", deviceKey));
|
||||
if(app.getSettings().OSMO_USER_PWD.get() != null) {
|
||||
nameValuePairs.add(new BasicNameValuePair("auth", app.getSettings().OSMO_USER_PWD.get()));
|
||||
}
|
||||
nameValuePairs.add(new BasicNameValuePair("protocol", "1"));
|
||||
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
|
||||
|
||||
|
@ -253,6 +262,9 @@ public class OsMoService implements OsMoReactor {
|
|||
|
||||
@Override
|
||||
public String nextSendCommand(OsMoThread tracker) {
|
||||
if(System.currentTimeMillis() - app.getSettings().OSMO_LAST_PING.get() > 30000) {
|
||||
app.getSettings().OSMO_LAST_PING.set(System.currentTimeMillis());
|
||||
}
|
||||
if(!commands.isEmpty()) {
|
||||
return commands.poll();
|
||||
}
|
||||
|
|
|
@ -214,7 +214,7 @@ public class OsMoTracker implements OsMoReactor {
|
|||
|
||||
@Override
|
||||
public void reconnect() {
|
||||
if(autoStart.get()) {
|
||||
if(autoStart.get() || startSendingLocations) {
|
||||
enableTracker();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ public class SettingsOsMoActivity extends SettingsBaseActivity {
|
|||
|
||||
private Preference debugPref;
|
||||
private Preference trackerId;
|
||||
private CheckBoxPreference sendLocationsref;
|
||||
|
||||
public static final int[] SECONDS = new int[] {0, 1, 2, 3, 5, 10, 15, 30, 60, 90};
|
||||
public static final int[] MINUTES = new int[] {2, 3, 5};
|
||||
|
@ -48,9 +49,15 @@ public class SettingsOsMoActivity extends SettingsBaseActivity {
|
|||
trackerId.setOnPreferenceClickListener(this);
|
||||
grp.addPreference(trackerId);
|
||||
|
||||
CheckBoxPreference sendLocationsref = createCheckBoxPreference(settings.OSMO_AUTO_SEND_LOCATIONS);
|
||||
CheckBoxPreference autoConnectref = createCheckBoxPreference(settings.OSMO_AUTO_CONNECT);
|
||||
autoConnectref.setTitle(R.string.osmo_auto_connect);
|
||||
autoConnectref.setSummary(R.string.osmo_auto_connect_descr);
|
||||
grp.addPreference(autoConnectref);
|
||||
|
||||
sendLocationsref = createCheckBoxPreference(settings.OSMO_AUTO_SEND_LOCATIONS);
|
||||
sendLocationsref.setTitle(R.string.osmo_auto_send_locations);
|
||||
sendLocationsref.setSummary(R.string.osmo_auto_send_locations_descr);
|
||||
sendLocationsref.setEnabled(settings.OSMO_AUTO_CONNECT.get());
|
||||
grp.addPreference(sendLocationsref);
|
||||
|
||||
grp.addPreference(createTimeListPreference(settings.OSMO_SAVE_TRACK_INTERVAL, SECONDS,
|
||||
|
@ -171,6 +178,12 @@ public class SettingsOsMoActivity extends SettingsBaseActivity {
|
|||
final OsMoPlugin plugin = OsMoPlugin.getEnabledPlugin(OsMoPlugin.class);
|
||||
plugin.getTracker().enableTracker();
|
||||
}
|
||||
} else if (id.equals(settings.OSMO_AUTO_CONNECT.getId())) {
|
||||
if ((Boolean) newValue) {
|
||||
final OsMoPlugin plugin = OsMoPlugin.getEnabledPlugin(OsMoPlugin.class);
|
||||
plugin.getService().connect(false);
|
||||
}
|
||||
sendLocationsref.setEnabled(settings.OSMO_AUTO_CONNECT.get());
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue