2011-02-19 9 views

答えて

1

サンプルコード:[available here]

package com.piusvelte.wapdroid; 

    import static com.piusvelte.wapdroid.WapdroidService.PHONE_TYPE_CDMA; 
    import static android.telephony.NeighboringCellInfo.UNKNOWN_RSSI; 
    import android.telephony.CellLocation; 
    import android.telephony.PhoneStateListener; 
    import android.telephony.SignalStrength; 
    import android.telephony.TelephonyManager; 

    // PhoneStateListener for api >= 7 
    public class PhoneListenerApi7 extends PhoneStateListener { 
      private WapdroidService mService; 

      public PhoneListenerApi7(WapdroidService service) { 
        mService = service; 
      } 

      public void onCellLocationChanged(CellLocation location) { 
        // this also calls signalStrengthChanged, since signalStrengthChanged isn't reliable enough by itself 
        mService.getCellInfo(location); 
      } 

      public void onSignalStrengthChanged(int asu) { 
        // add cdma support, convert signal from gsm 
        if ((mService.mTeleManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) || (mService.mTeleManager.getPhoneType() == PHONE_TYPE_CDMA)) mService.signalStrengthChanged((asu > 0) && (asu != UNKNOWN_RSSI) ? (2 * asu - 113) : asu); 
        else mService.release(); 
      } 

      public void onSignalStrengthsChanged(SignalStrength signalStrength) { 
        if (mService.mTeleManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) { 
          int asu = signalStrength.getGsmSignalStrength(); 
          mService.signalStrengthChanged((asu > 0) && (asu != UNKNOWN_RSSI) ? (2 * asu - 113) : asu); 
        } 
        else if (mService.mTeleManager.getPhoneType() == PHONE_TYPE_CDMA) mService.signalStrengthChanged(signalStrength.getCdmaDbm() < signalStrength.getEvdoDbm() ? signalStrength.getCdmaDbm() : signalStrength.getEvdoDbm()); 
        else mService.release(); 
      } 
    } 
関連する問題