Or you could do it with a intent filter - it has the advantage of starting your service for you when PhoneStateChanged changes.
I did it by adding to the manifest:
AddPermission(android.permission.READ_PHONE_STATE)
AddReceiverText(yourServiceName,
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>)
To the yourServiceName Service_Start sub, I added:
'call processing
If StartingIntent.Action = "android.intent.action.PHONE_STATE" Then
Select StartingIntent.GetExtra("state")
'onhook - call ended or phone idle
Case "IDLE"
'outgoing call processing
Case "OFFHOOK"
'incoming call processing
Case "RINGING"
Log("CallerID="&StartingIntent.GetExtra("incoming_number"))
End Select
Hope this helps...