Add location provider selection

Этот коммит содержится в:
Anton Tananaev
2013-01-19 21:03:09 +13:00
родитель e9a7efca50
Коммит a395e4b8ba
6 изменённых файлов: 45 добавлений и 32 удалений
+4 -11
Просмотреть файл
@@ -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" />
+10
Просмотреть файл
@@ -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>
+8
Просмотреть файл
@@ -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"
+8
Просмотреть файл
@@ -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"
+1
Просмотреть файл
@@ -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";
+14 -21
Просмотреть файл
@@ -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);
} }
} }