Sobes.tech
Junior — Middle

Ako implementovať uskutočňovanie príchozích a odchádzajúcich hovorov na platforme Android?

sobes.tech AI

Odpoveď od AI

Na Androidu sa volanými a odchádzajúcimi hovormi sa zaobchádza pomocou štandardných API platformy.

Odchádzajúce hovory: Na uskutočnenie odchádzajúceho hovoru môžete použiť Intent s akciou Intent.ACTION_CALL alebo Intent.ACTION_DIAL.

  • ACTION_DIAL otvorí telefónnu aplikáciu s číslom, ale neuskutoční hovor automaticky.
  • ACTION_CALL okamžite iniciuje hovor, ale vyžaduje povolenie CALL_PHONE.

Príklad kódu pre odchádzajúci 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žiadať používateľa o povolenie
}

Prichádzajúce hovory: Na spracovanie prichádzajúcich hovorov je potrebné použiť TelephonyManager a PhoneStateListener alebo BroadcastReceiver na sledovanie stavu hovoru.

Prí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:
                // Prichádzajúci hovor
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Hovor je aktívny
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Hovor ukončený alebo žiadne hovory
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Pre úplnú funkcionalitu s hovormi môžu byť potrebné ďalšie povolenia, napríklad READ_PHONE_STATE.

Je dôležité si uvedomiť, že od Androidu 6.0 (API 23) je potrebné žiadať povolenia od používateľa počas behu aplikácie.