The phone only rang once on rings that did't loop. In the GSM phones
the vendor ril sends a RIL_UNSOL_CALL_RING event to cause the phone
to properly play non-looping ring tones. To reproduce select a non-looping
ring tone such as "Digital Phone" and call it from another phone, the
phone will only ring once.
Three solutions were discussed:
*) Have all ring tones loop; rejected because to more space would be taken
by the silence.
*) Require all vendor RIL's to send RIL_UNSOL_CALL_RING; rejected because
it is inefficient to send a notification from the bottom of the stack.
*) Modify the PhoneApp or the audio layer; rejected because it would be
to big of change.
*) Modify the framework; this is the solution accepted.
The framework was modified to use two now properties to control the
call ring notification.
ro.telephony.multiple_call_ring: a boolean that if true the vendor ril
is assumed to send multiple RIL_UNSOL_CALL_RING messages. If false
only one is assumed and the framework will generate additional events.
(The default if absent is true).
ro.telephony.call_ring_delay: the delay in milli-seconds between
the generated events. (default if absent is 3000)
To minimize code duplication this change does some reorganization
of the PhoneBase class hierarchy and PhoneBase becomes a handler
and implements a default handleMessage method handles events associated
with call ring notification. This handler is overridden by derived
classes, CDMAPhone and GSMPhone which will pass unknown events
to PhoneBase.handleMessage and thus handle call notification for any
derived class.
Change-Id: I5b147b2b69b647d9987052f16ada41c9b66e4bf1
When ro.telephony.disable-call is set to true the phone disable actual calls. It provides a way to test in user-debug builds for stability runs. See bug 2031157.
modified: java/com/android/internal/telephony/TelephonyProperties.java
modified: java/com/android/internal/telephony/cdma/CdmaCallTracker.java
modified: java/com/android/internal/telephony/gsm/GsmCallTracker.java
modified: java/com/android/internal/telephony/TelephonyProperties.java
modified: java/com/android/internal/telephony/cdma/CdmaCallTracker.java
modified: java/com/android/internal/telephony/gsm/GsmCallTracker.java
The changes from 090602 update frameworks/base to support 3way calling
and call waiting.
The changes from 090603 completed the CdmaInformationRecords class
but the original changes submitted has been simplified, toString added
and a bug fixed where the notifications where not being handled properly.
The changes from 090605 added Prl Version, apn fixes.
CellLocation uses TelephonyManager to get the PhoneType.
TelephonyManager uses the system property to get the phoneType,
if the ITelephony interface is not up.