Sobes.tech
Junior — Middle

Jak implementovat příchozí a odchozí hovory na platformě Android?

sobes.tech AI

Odpověď od AI

Na Androidu se příchozí a odchozí hovory zpracovávají pomocí standardních API platformy.

Odchozí hovory: Pro uskutečnění odchozího hovoru můžete použít Intent s akcí Intent.ACTION_CALL nebo Intent.ACTION_DIAL.

  • ACTION_DIAL otevře telefonní aplikaci s číslem, ale nezahájí hovor automaticky.
  • ACTION_CALL okamžitě zahájí hovor, ale vyžaduje oprávnění CALL_PHONE.

Příklad kódu pro odchozí hovor:

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:+1234567890"));
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
    context.startActivity(callIntent);
} else {
    // Požádat uživatele o oprávnění
}

Příchozí hovory: Pro zpracování příchozích hovorů je třeba použít TelephonyManager a PhoneStateListener nebo BroadcastReceiver k sledování stavu hovoru.

Příklad s PhoneStateListener:

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener callStateListener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String phoneNumber) {
        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                // Příchozí hovor
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Hovor aktivní
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Hovor ukončen nebo žádný hovor
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Pro plnou funkčnost s hovory mohou být potřeba další oprávnění, například READ_PHONE_STATE.

Je důležité si uvědomit, že od Androidu 6.0 (API 23) je nutné žádat o oprávnění za běhu od uživatele.