/* * This source is part of the * _____ ___ ____ * __ / / _ \/ _ | / __/___ _______ _ * / // / , _/ __ |/ _/_/ _ \/ __/ _ `/ * \___/_/|_/_/ |_/_/ (_)___/_/ \_, / * /___/ * repository. * * Copyright (C) 2014-2015 Carmen Alvarez (c@rmen.ca) * Copyright (C) 2015 Rasmus Holm * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ca.rmen.android.networkmonitor.app.speedtest; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import java.io.File; import ca.rmen.android.networkmonitor.Constants; import ca.rmen.android.networkmonitor.util.FileUtil; import ca.rmen.android.networkmonitor.util.Log; /** * Convenience methods for getting/setting shared preferences related to the speed test. */ public class SpeedTestPreferences { private static final String TAG = Constants.TAG + SpeedTestPreferences.class.getSimpleName(); private static final String FILE = "speedtest"; static final String PREF_SPEED_TEST_ENABLED = "PREF_SPEED_TEST_ENABLED"; static final String PREF_SPEED_TEST_DOWNLOAD_URL = "PREF_SPEED_TEST_DOWNLOAD_URL"; static final String PREF_SPEED_TEST_INTERVAL = "PREF_SPEED_TEST_INTERVAL"; static final String PREF_SPEED_TEST_UPLOAD_SERVER = "PREF_SPEED_TEST_UPLOAD_SERVER"; static final String PREF_SPEED_TEST_UPLOAD_PORT = "PREF_SPEED_TEST_UPLOAD_PORT"; static final String PREF_SPEED_TEST_UPLOAD_USER = "PREF_SPEED_TEST_UPLOAD_USER"; static final String PREF_SPEED_TEST_UPLOAD_PATH = "PREF_SPEED_TEST_UPLOAD_PATH"; static final int PREF_SPEED_TEST_INTERVAL_NETWORK_CHANGE = -2; static final int PREF_SPEED_TEST_INTERVAL_DBM_OR_NETWORK_CHANGE = -1; private static final String PREF_SPEED_TEST_UPLOAD_PASSWORD = "PREF_SPEED_TEST_UPLOAD_PASSWORD"; private static final String PREF_SPEED_TEST_LAST_DOWNLOAD_RESULT = "PREF_SPEED_TEST_LAST_DOWNLOAD_RESULT"; private static final String PREF_SPEED_TEST_DEFAULT_UPLOAD_PORT = "21"; private static final String PREF_SPEED_TEST_DEFAULT_UPLOAD_PATH = "/"; private static final String PREF_SPEED_TEST_DEFAULT_INTERVAL = "1"; private static SpeedTestPreferences INSTANCE = null; private final SharedPreferences mSharedPrefs; public static synchronized SpeedTestPreferences getInstance(Context context) { if (INSTANCE == null) { INSTANCE = new SpeedTestPreferences(context.getApplicationContext()); } return INSTANCE; } private SpeedTestPreferences(Context context) { mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); } public boolean isEnabled() { return mSharedPrefs.getBoolean(PREF_SPEED_TEST_ENABLED, false); } public void setEnabled(boolean enabled) { Log.v(TAG, "setEnabled " + enabled); mSharedPrefs.edit().putBoolean(PREF_SPEED_TEST_ENABLED, enabled).apply(); } int getSpeedTestInterval() { return Integer.valueOf(mSharedPrefs.getString(PREF_SPEED_TEST_INTERVAL, PREF_SPEED_TEST_DEFAULT_INTERVAL)); } public SpeedTestUploadConfig getUploadConfig(Context context) { String server = mSharedPrefs.getString(PREF_SPEED_TEST_UPLOAD_SERVER, "").trim(); int port = Integer.valueOf(mSharedPrefs.getString(PREF_SPEED_TEST_UPLOAD_PORT, PREF_SPEED_TEST_DEFAULT_UPLOAD_PORT)); String user = mSharedPrefs.getString(PREF_SPEED_TEST_UPLOAD_USER, "").trim(); String password = mSharedPrefs.getString(PREF_SPEED_TEST_UPLOAD_PASSWORD, "").trim(); String path = mSharedPrefs.getString(PREF_SPEED_TEST_UPLOAD_PATH, PREF_SPEED_TEST_DEFAULT_UPLOAD_PATH).trim(); File file = FileUtil.getCacheFile(context, FILE); return new SpeedTestUploadConfig(server, port, user, password, path, file); } public SpeedTestDownloadConfig getDownloadConfig(Context context) { String url = mSharedPrefs.getString(PREF_SPEED_TEST_DOWNLOAD_URL, ""); File file = FileUtil.getCacheFile(context, FILE); return new SpeedTestDownloadConfig(url, file); } SpeedTestResult getLastDownloadResult() { return SpeedTestResult.read(mSharedPrefs, PREF_SPEED_TEST_LAST_DOWNLOAD_RESULT); } public void setLastDownloadResult(SpeedTestResult result) { Log.v(TAG, "setLastDownloadResult " + result); result.write(mSharedPrefs, PREF_SPEED_TEST_LAST_DOWNLOAD_RESULT); } }