package com.openxc.enabler.preferences; import android.content.Context; import android.content.SharedPreferences; import android.util.Log; import com.openxc.interfaces.network.NetworkVehicleInterface; import com.openxc.remote.VehicleServiceException; import com.openxcplatform.enabler.R; /** * Enable or disable receiving vehicle data from a Network device */ public class NetworkPreferenceManager extends VehiclePreferenceManager { private final static String TAG = "NetworkPreferenceManager"; public NetworkPreferenceManager(Context context) { super(context); } protected PreferenceListener createPreferenceListener() { return new PreferenceListener() { private int[] WATCHED_PREFERENCE_KEY_IDS = { R.string.vehicle_interface_key, R.string.network_host_key, R.string.network_port_key, }; protected int[] getWatchedPreferenceKeyIds() { return WATCHED_PREFERENCE_KEY_IDS; } public void readStoredPreferences() { setNetworkStatus(getPreferences().getString( getString(R.string.vehicle_interface_key), "").equals( getString(R.string.network_interface_option_value))); } }; } private void setNetworkStatus(boolean enabled) { Log.i(TAG, "Setting network data source to " + enabled); if(enabled) { String address = getPreferenceString(R.string.network_host_key); String port = getPreferenceString(R.string.network_port_key); String combinedAddress = address + ":" + port; if(address == null || port == null || !NetworkVehicleInterface.validateResource( combinedAddress)) { String error = "Network host URI (" + combinedAddress + ") not valid -- not starting network data source"; Log.w(TAG, error); SharedPreferences.Editor editor = getPreferences().edit(); editor.putBoolean(getString(R.string.uploading_checkbox_key), false); editor.commit(); } else { try { getVehicleManager().setVehicleInterface( NetworkVehicleInterface.class, combinedAddress); } catch(VehicleServiceException e) { Log.e(TAG, "Unable to add network interface", e); } } } } }