Junior — Middle
Kaip įgyvendinti įeinančius ir išeinančius skambučius Android platformoje?
sobes.tech AI
Atsakymas iš AI
Android naudojami standartiniai API skambučiams įeinantiems ir išeinantiems skambučiams:
Išeinantys skambučiai:
Išeinantį skambutį galima inicijuoti naudojant Intent Intent.ACTION_CALL arba Intent.ACTION_DIAL:
ACTION_DIALatveria telefono programėlę su numeriu, bet automatiškai nepadaro skambučio:ACTION_CALLiš karto pradeda skambutį, bet reikalaujaCALL_PHONEleidimo:
Pavyzdinis kodas išeinančiam skambučiui:
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 {
// Prašyti leidimo naudotojo
}
Įeinantys skambučiai:
Įeinančių skambučių apdorojimui reikia naudoti TelephonyManager ir PhoneStateListener arba BroadcastReceiver, kad stebėti skambučio būseną:
Pavyzdys naudojant 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:
// Įeinantis skambutis
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// Skambutis aktyvus
break;
case TelephonyManager.CALL_STATE_IDLE:
// Skambutis baigtas arba nėra
break;
}
}
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Gali būti reikalingi papildomi leidimai, pvz., READ_PHONE_STATE:
Svarbu pažymėti, kad Android 6.0 (API 23) ir naujesnėse versijose leidimai turi būti prašomi vartotojo veiksmų metu.