Sobes.tech
Junior — Middle

Kuidas rakendada sisend- ja väljaminevate kõnede tegemist Android platvormil?

sobes.tech AI

Vastus AI-lt

Androidis kasutatakse standardseid API-sid sisend- ja väljaminevate kõnede tegemiseks:

Väljaminevad kõned: Väljaminevat kõnet saab alustada kasutades Intent-i Intent.ACTION_CALL või Intent.ACTION_DIAL:

  • ACTION_DIAL avab telefonirakenduse numbriga, kuid ei tee kõnet automaatselt:
  • ACTION_CALL alustab kõnet kohe, kuid nõuab CALL_PHONE luba:

Näide koodist väljamineva kõne tegemiseks:

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 {
    // Nõuda kasutajalt luba
}

Sissetulevad kõned: Sissetulevate kõnede töötlemiseks tuleb kasutada TelephonyManager ja PhoneStateListener või BroadcastReceiver kõne oleku kuulamiseks:

Näide PhoneStateListener kasutamisest:

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:
                // Sissetulev kõne
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Kõne aktiivne
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Kõne lõppes või pole kõnet
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Võivad olla vajalik täiendavad load, näiteks READ_PHONE_STATE:

Oluline on märkida, et alates Android 6.0 (API 23) tuleb kasutajalt küsida luba rakenduse käivitamisel.