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_DIALavab telefonirakenduse numbriga, kuid ei tee kõnet automaatselt:ACTION_CALLalustab kõnet kohe, kuid nõuabCALL_PHONEluba:
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.