# Package com.codename1.call.spi

package com.codename1.call.spi

The seam between the portable `com.codename1.call` API and each platform's native call stack.

Application code never references anything here. `CallBridge` is implemented by the ports, obtained by the public packages through `com.codename1.ui.Display#getCallBridge()`, and the base implementation returns `null` -- which is the capability query, and the reason the public API degrades cleanly instead of throwing on a port that implements nothing.

The interface's own documentation carries the rules that make it implementable from Objective-C through ParparVM: primitives only, request ids for asynchrony, and the requirement that every operation answers exactly once.

- Related Packages
  Package
  Description
  com.codename1.call
  System call integration: making a call this app carries look, to the operating system and to the user, like a call the phone itself placed.
  com.codename1.call.directory
  Naming and blocking numbers, for calls this app has nothing to do with.
  com.codename1.call.session
  Reporting calls to the operating system, and hearing what the user does with them.
  com.codename1.call.voip
  Ringing when the app is not running.
- Interfaces
  Class
  Description
  CallBridge
  Internal service-provider interface implemented by each platform port to carry the `com.codename1.call` API onto the native call stacks: Apple's CallKit and PushKit, and Android's `ConnectionService`, `TelecomManager` and `CallScreeningService`.