Why the dafault phone will always show
Ok, it seems there's a lot of discussions about the default phone interface showing up before UCS, and some misleading information floating around. I will try to explain in detail why it is so, and why it will always be so. This will be a long explanation, with some technical information that most will not fully understand, but at least you'll have a source point to investigate from if you so wish.
1. Android is limited regarding "outside" app developers. No matter what google tells you, or how much hype is generated about it, the truth is that app developers are limited in some circumstances, comparing to full rom developers. As I am both, trust me on this.
2. The telephony interface (the part of Android that actually handles the calls) is not exposed in the android SDK. This means that following "proper" development guidelines, something like UCS would not even exist. There are no available classes/functions to pick up, hangup, mute calls, or any other operations regarding call handling.
3. Using some neat tricks, prior to Gingerbread, you could pretty much go around most of these limitations. As of Android V2.3, a further check was introduced: even if you manage to call the correct interfaces, Android checks if the caller is a system app, and if not, ignores it. This is why a lot of apps stopped working as of Gingerbread.
4. With the current set of limitations, I was able to build UCS as it is now, working from Android V2.1 to V4.0.3. Yes, It could do a lot more if I restricted it to Froyo.
So this is why the current feature set of UCS is somewhat limited when comparing with the default phone interface on your phone. This doesn't mean that in the future I won't find a magical workaround, but from where I'm standing now, it's not looking bright. But bottom line: It is currently impossible to fully replace the default phone interface, unless building the rom from scratch, to a specific device.
Note that the limitations to what app developers can do with the telephony interface has been a topic of complaint and frustration with google for years now. Given that they recently made it even worst with post Froyo, it's not looking as they will change it for better. In this particular area, iOS is better. I hate to admit it, but... suck it up.
So, trust me when I say we need the default interface to perform some functions. The following point, is why UCS only comes after the default. For this, you need some Android development notions. In lay terms, when something happens, the core system sends a broadcast to all apps interested that "something" has happened. This is the only way any external app has to know that a call i coming. The problem is that it is the default interface that sends that message, and it is capable of starting much faster than other apps.
So when UCS get's the message that a call is coming, the default interface is already showing up. Even if UCS is able to appear faster than the default, it would be pushed back when the default appears, and then bring itself back up front again. So, there's no way to hide the default interface. The only time that you won't see the default interface will be when the phone is locked. In that case the overhead of the lockscreen can make UCS fast enough to finish the boot process before anything shows.
Another thing: root access would give me some leeway to work with, but would not remove the fundamental limitations of UCS. I could try some more stuff, but it would have to be on a per-ROM basis, which pretty much invalidates even trying to do it in UCS. UCS is having about 5000 installations a day. If I screw up a condition that happens rarely, lets say for 1% of the users, I have 50 pissed of guys every day.
Up to know this is the default UCS behavior. UCS taking 5 seconds to show up is not normal, and indicates some sort of problem. In my setup, I never see the default interface, it only takes less than a second to go away, and unless I'm actually looking at the phone with it unlocked, it's gone by the time I pick up the phone.
This extreme delay could be caused by something else, I'll follow this up in further posts, and leave this one for reference for further questions about this topic.
Cheers