package org.greengin.sciencetoolkit.logic.signal; import java.util.HashMap; import java.util.Vector; import android.content.Context; import android.telephony.PhoneStateListener; import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.util.Log; public class SignalStrengthManager extends PhoneStateListener { HashMap<String, Float> values; Vector<SignalStrengthListener> listeners; private static SignalStrengthManager instance; public static void init(Context context) { instance = new SignalStrengthManager(); TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); manager.listen(instance, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); } public static SignalStrengthManager get() { return instance; } private SignalStrengthManager() { values = new HashMap<String, Float>(); values.put("gsm", 0f); values.put("cdma", 0f); listeners = new Vector<SignalStrengthListener>(); } public void addListener(SignalStrengthListener listener) { listeners.add(listener); } public void removeListener(SignalStrengthListener listener) { listeners.remove(listener); } private void fireEvent() { for (SignalStrengthListener listener : listeners) { listener.signalStrengthChange(); } } public void onSignalStrengthsChanged(SignalStrength signalStrength) { values.put("gsm", (float) signalStrength.getGsmSignalStrength()); values.put("cdma", (float) signalStrength.getCdmaDbm()); Log.d("stk signal", values.get("gsm") + " " + values.get("cdma")); fireEvent(); } public float getSignalStrength(String network) { return values.get(network); } }