PageRenderTime 40ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/android/SignalStrengthFacade/src/com/googlecode/android_scripting/facade/SignalStrengthFacade.java

https://code.google.com/p/android-scripting/
Java | 79 lines | 65 code | 9 blank | 5 comment | 0 complexity | 643cb8ee65a9f15eef004cdd6862b2ed MD5 | raw file
Possible License(s): GPL-3.0, 0BSD, GPL-2.0, Apache-2.0, LGPL-3.0, AGPL-1.0, BSD-3-Clause
  1. package com.googlecode.android_scripting.facade;
  2. import android.app.Service;
  3. import android.content.Context;
  4. import android.os.Bundle;
  5. import android.telephony.PhoneStateListener;
  6. import android.telephony.SignalStrength;
  7. import android.telephony.TelephonyManager;
  8. import com.googlecode.android_scripting.MainThread;
  9. import com.googlecode.android_scripting.jsonrpc.RpcReceiver;
  10. import com.googlecode.android_scripting.rpc.Rpc;
  11. import com.googlecode.android_scripting.rpc.RpcMinSdk;
  12. import com.googlecode.android_scripting.rpc.RpcStartEvent;
  13. import com.googlecode.android_scripting.rpc.RpcStopEvent;
  14. import java.util.concurrent.Callable;
  15. /**
  16. * Exposes SignalStrength functionality.
  17. *
  18. * @author Joerg Zieren (joerg.zieren@gmail.com)
  19. */
  20. @RpcMinSdk(7)
  21. public class SignalStrengthFacade extends RpcReceiver {
  22. private final Service mService;
  23. private final TelephonyManager mTelephonyManager;
  24. private final EventFacade mEventFacade;
  25. private final PhoneStateListener mPhoneStateListener;
  26. private Bundle mSignalStrengths;
  27. public SignalStrengthFacade(FacadeManager manager) {
  28. super(manager);
  29. mService = manager.getService();
  30. mEventFacade = manager.getReceiver(EventFacade.class);
  31. mTelephonyManager =
  32. (TelephonyManager) manager.getService().getSystemService(Context.TELEPHONY_SERVICE);
  33. mPhoneStateListener = MainThread.run(mService, new Callable<PhoneStateListener>() {
  34. @Override
  35. public PhoneStateListener call() throws Exception {
  36. return new PhoneStateListener() {
  37. @Override
  38. public void onSignalStrengthsChanged(SignalStrength signalStrength) {
  39. mSignalStrengths = new Bundle();
  40. mSignalStrengths.putInt("gsm_signal_strength", signalStrength.getGsmSignalStrength());
  41. mSignalStrengths.putInt("gsm_bit_error_rate", signalStrength.getGsmBitErrorRate());
  42. mSignalStrengths.putInt("cdma_dbm", signalStrength.getCdmaDbm());
  43. mSignalStrengths.putInt("cdma_ecio", signalStrength.getCdmaEcio());
  44. mSignalStrengths.putInt("evdo_dbm", signalStrength.getEvdoDbm());
  45. mSignalStrengths.putInt("evdo_ecio", signalStrength.getEvdoEcio());
  46. mEventFacade.postEvent("signal_strengths", mSignalStrengths.clone());
  47. }
  48. };
  49. }
  50. });
  51. }
  52. @Rpc(description = "Starts tracking signal strengths.")
  53. @RpcStartEvent("signal_strengths")
  54. public void startTrackingSignalStrengths() {
  55. mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
  56. }
  57. @Rpc(description = "Returns the current signal strengths.", returns = "A map of \"gsm_signal_strength\"")
  58. public Bundle readSignalStrengths() {
  59. return mSignalStrengths;
  60. }
  61. @Rpc(description = "Stops tracking signal strength.")
  62. @RpcStopEvent("signal_strengths")
  63. public void stopTrackingSignalStrengths() {
  64. mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
  65. }
  66. @Override
  67. public void shutdown() {
  68. stopTrackingSignalStrengths();
  69. }
  70. }