Add location provider selection
Этот коммит содержится в:
@@ -8,29 +8,22 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
|
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
|
||||||
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
|
||||||
|
|
||||||
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:allowBackup="true">
|
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:allowBackup="true">
|
||||||
|
|
||||||
<activity
|
<activity android:name="TraccarActivity">
|
||||||
android:name="TraccarActivity"
|
|
||||||
android:label="@string/app_name">
|
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity android:name="StatusActivity">
|
||||||
android:name="StatusActivity"
|
|
||||||
android:label="@string/app_name">
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity android:name="AboutActivity">
|
||||||
android:name="AboutActivity"
|
|
||||||
android:label="@string/app_name">
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<service android:name="TraccarService" />
|
<service android:name="TraccarService" />
|
||||||
|
|||||||
@@ -18,6 +18,16 @@
|
|||||||
<string name="settings_status_on">Stop</string>
|
<string name="settings_status_on">Stop</string>
|
||||||
<string name="settings_status_off_summary">Service stopped</string>
|
<string name="settings_status_off_summary">Service stopped</string>
|
||||||
<string name="settings_status_on_summary">Service running</string>
|
<string name="settings_status_on_summary">Service running</string>
|
||||||
|
<string name="settings_provider_title">Location provider</string>
|
||||||
|
<string name="settings_provider_summary">Source of location data</string>
|
||||||
|
<string-array name="settings_provider_names">
|
||||||
|
<item>GPS provider</item>
|
||||||
|
<item>Network provider</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="settings_provider_values">
|
||||||
|
<item>gps</item>
|
||||||
|
<item>network</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<string name="menu_status">Status</string>
|
<string name="menu_status">Status</string>
|
||||||
<string name="menu_about">About</string>
|
<string name="menu_about">About</string>
|
||||||
|
|||||||
@@ -26,6 +26,14 @@
|
|||||||
android:numeric="integer"
|
android:numeric="integer"
|
||||||
android:defaultValue="60" />
|
android:defaultValue="60" />
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="provider"
|
||||||
|
android:title="@string/settings_provider_title"
|
||||||
|
android:summary="@string/settings_provider_summary"
|
||||||
|
android:entries="@array/settings_provider_names"
|
||||||
|
android:entryValues="@array/settings_provider_values"
|
||||||
|
android:defaultValue="gps" />
|
||||||
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="debug"
|
android:key="debug"
|
||||||
android:title="@string/settings_debug_title"
|
android:title="@string/settings_debug_title"
|
||||||
|
|||||||
@@ -26,6 +26,14 @@
|
|||||||
android:numeric="integer"
|
android:numeric="integer"
|
||||||
android:defaultValue="60" />
|
android:defaultValue="60" />
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="provider"
|
||||||
|
android:title="@string/settings_provider_title"
|
||||||
|
android:summary="@string/settings_provider_summary"
|
||||||
|
android:entries="@array/settings_provider_names"
|
||||||
|
android:entryValues="@array/settings_provider_values"
|
||||||
|
android:defaultValue="gps" />
|
||||||
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="debug"
|
android:key="debug"
|
||||||
android:title="@string/settings_debug_title"
|
android:title="@string/settings_debug_title"
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public class TraccarActivity extends PreferenceActivity {
|
|||||||
public static final String KEY_ADDRESS = "address";
|
public static final String KEY_ADDRESS = "address";
|
||||||
public static final String KEY_PORT = "port";
|
public static final String KEY_PORT = "port";
|
||||||
public static final String KEY_INTERVAL = "interval";
|
public static final String KEY_INTERVAL = "interval";
|
||||||
|
public static final String KEY_PROVIDER = "provider";
|
||||||
public static final String KEY_DEBUG = "debug";
|
public static final String KEY_DEBUG = "debug";
|
||||||
public static final String KEY_STATUS = "status";
|
public static final String KEY_STATUS = "status";
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public class TraccarService extends Service {
|
|||||||
private String address;
|
private String address;
|
||||||
private int port;
|
private int port;
|
||||||
private int interval;
|
private int interval;
|
||||||
|
private String provider;
|
||||||
|
|
||||||
private SharedPreferences sharedPreferences;
|
private SharedPreferences sharedPreferences;
|
||||||
private ClientController clientController;
|
private ClientController clientController;
|
||||||
@@ -52,16 +53,17 @@ public class TraccarService extends Service {
|
|||||||
|
|
||||||
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
|
||||||
|
id = sharedPreferences.getString(TraccarActivity.KEY_ID, null);
|
||||||
address = sharedPreferences.getString(TraccarActivity.KEY_ADDRESS, null);
|
address = sharedPreferences.getString(TraccarActivity.KEY_ADDRESS, null);
|
||||||
port = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_PORT, null));
|
port = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_PORT, null));
|
||||||
interval = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_INTERVAL, null));
|
interval = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_INTERVAL, null));
|
||||||
id = sharedPreferences.getString(TraccarActivity.KEY_ID, null);
|
provider = sharedPreferences.getString(TraccarActivity.KEY_PROVIDER, null);
|
||||||
|
|
||||||
clientController = new ClientController(this, address, port, Protocol.createLoginMessage(id));
|
clientController = new ClientController(this, address, port, Protocol.createLoginMessage(id));
|
||||||
clientController.start();
|
clientController.start();
|
||||||
|
|
||||||
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
||||||
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, interval * 1000, 0, locationListener);
|
locationManager.requestLocationUpdates(provider, interval * 1000, 0, locationListener);
|
||||||
|
|
||||||
sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener);
|
sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener);
|
||||||
|
|
||||||
@@ -111,32 +113,23 @@ public class TraccarService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
StatusActivity.addMessage(getString((R.string.status_preference_update)));
|
StatusActivity.addMessage(getString((R.string.status_preference_update)));
|
||||||
|
|
||||||
boolean serverChanged = false;
|
|
||||||
|
|
||||||
if (key.equals(TraccarActivity.KEY_ADDRESS)) {
|
if (key.equals(TraccarActivity.KEY_ADDRESS)) {
|
||||||
address = sharedPreferences.getString(TraccarActivity.KEY_ADDRESS, null);
|
address = sharedPreferences.getString(TraccarActivity.KEY_ADDRESS, null);
|
||||||
serverChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key.equals(TraccarActivity.KEY_PORT)) {
|
|
||||||
port = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_PORT, null));
|
|
||||||
serverChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (serverChanged) {
|
|
||||||
clientController.setNewServer(address, port);
|
clientController.setNewServer(address, port);
|
||||||
}
|
} else if (key.equals(TraccarActivity.KEY_PORT)) {
|
||||||
|
port = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_PORT, null));
|
||||||
if (key.equals(TraccarActivity.KEY_INTERVAL)) {
|
clientController.setNewServer(address, port);
|
||||||
|
} else if (key.equals(TraccarActivity.KEY_INTERVAL)) {
|
||||||
interval = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_INTERVAL, null));
|
interval = Integer.valueOf(sharedPreferences.getString(TraccarActivity.KEY_INTERVAL, null));
|
||||||
locationManager.removeUpdates(locationListener);
|
locationManager.removeUpdates(locationListener);
|
||||||
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, interval * 1000, 0, locationListener);
|
locationManager.requestLocationUpdates(provider, interval * 1000, 0, locationListener);
|
||||||
}
|
} else if (key.equals(TraccarActivity.KEY_ID)) {
|
||||||
|
|
||||||
if (key.equals(TraccarActivity.KEY_ID)) {
|
|
||||||
id = sharedPreferences.getString(TraccarActivity.KEY_ID, null);
|
id = sharedPreferences.getString(TraccarActivity.KEY_ID, null);
|
||||||
clientController.setNewLogin(Protocol.createLoginMessage(id));
|
clientController.setNewLogin(Protocol.createLoginMessage(id));
|
||||||
|
} else if (key.equals(TraccarActivity.KEY_PROVIDER)) {
|
||||||
|
provider = sharedPreferences.getString(TraccarActivity.KEY_PROVIDER, null);
|
||||||
|
locationManager.removeUpdates(locationListener);
|
||||||
|
locationManager.requestLocationUpdates(provider, interval * 1000, 0, locationListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user