1ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak/* 2ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Copyright (c) 2015, Motorola Mobility LLC 3ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * All rights reserved. 4ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * 5ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Redistribution and use in source and binary forms, with or without 6ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * modification, are permitted provided that the following conditions are met: 7ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Redistributions of source code must retain the above copyright 8ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * notice, this list of conditions and the following disclaimer. 9ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Redistributions in binary form must reproduce the above copyright 10ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * notice, this list of conditions and the following disclaimer in the 11ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * documentation and/or other materials provided with the distribution. 12ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Neither the name of Motorola Mobility nor the 13ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * names of its contributors may be used to endorse or promote products 14ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * derived from this software without specific prior written permission. 15ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * 16ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 18ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MOTOROLA MOBILITY LLC BE LIABLE 20ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 26ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGE. 27ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak */ 28ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 29ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpackage com.android.service.ims.presence; 30ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 31ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.Context; 32ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.SharedPreferences; 33ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.SharedPreferences.Editor; 34ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 35ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpublic class PresencePreferences { 36ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String PREFERENCES = "PresencePolling"; 37ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static PresencePreferences sInstance; 38ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 39ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private Context mContext = null; 40ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private SharedPreferences mCommonPref = null; 41ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 42ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private PresencePreferences() { 43ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 44ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 45ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public void setContext(Context context) { 46ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mContext == null) { 47ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak mContext = context; 48ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak mCommonPref = mContext.getSharedPreferences(PREFERENCES, Context.MODE_PRIVATE); 49ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 50ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 51ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 52ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static PresencePreferences getInstance(){ 53ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (null == sInstance) { 54ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak sInstance = new PresencePreferences(); 55ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 56ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return sInstance; 57ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 58ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 59ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String CAPABILITY_DISCOVERY_TIME = "CapabilityDiscoveryTime"; 60ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 61ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public long lastCapabilityDiscoveryTime() { 62ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 63ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return 0; 64ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 65ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 66ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return mCommonPref.getLong(CAPABILITY_DISCOVERY_TIME, 0); 67ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 68ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 69ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public void updateCapabilityDiscoveryTime() { 70ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 71ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return; 72ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 73ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 74ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak Editor editor = mCommonPref.edit(); 75ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak long time = System.currentTimeMillis(); 76ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.putLong(CAPABILITY_DISCOVERY_TIME, time); 77ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.commit(); 78ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 79ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 80ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String PHONE_SUBSCRIBER_ID = "PhoneSubscriberId"; 81ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public String getSubscriberId() { 82ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 83ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return null; 84ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 85ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 86ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return mCommonPref.getString(PHONE_SUBSCRIBER_ID, null); 87ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 88ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 89ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public void setSubscriberId(String id) { 90ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 91ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return; 92ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 93ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 94ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak Editor editor = mCommonPref.edit(); 95ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.putString(PHONE_SUBSCRIBER_ID, id); 96ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.commit(); 97ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 98ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 99ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String PHONE_LINE1_NUMBER = "PhoneLine1Number"; 100ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public String getLine1Number() { 101ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 102ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return null; 103ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 104ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 105ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return mCommonPref.getString(PHONE_LINE1_NUMBER, null); 106ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 107ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 108ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public void setLine1Number(String number) { 109ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 110ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return; 111ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 112ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 113ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak Editor editor = mCommonPref.edit(); 114ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.putString(PHONE_LINE1_NUMBER, number); 115ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.commit(); 116ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 117ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 118ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String RCS_TEST_MODE = "RcsTestMode"; 119ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public boolean getRcsTestMode() { 120ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 121ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return false; 122ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 123ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 124ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return mCommonPref.getInt(RCS_TEST_MODE, 0) == 1; 125ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 126ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 127ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public void setRcsTestMode(boolean test) { 128ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if (mCommonPref == null) { 129ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return; 130ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 131ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 132ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak Editor editor = mCommonPref.edit(); 133ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.putInt(RCS_TEST_MODE, test ? 1 : 0); 134ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak editor.commit(); 135ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 136ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak} 137