Estoy originando una llamada desde Android Studio. El código es el siguiente: Quiero obtener el estado de la llamada en cualquier momento. El enlace: https://developer.android.com/reference/android/telecom /Call.html muestra que el estado de la llamada se puede obtener utilizando la llamada de clase .. Entonces, si uso Call.getState () debería poder obtener el estado actual. Pero obtengo el error de compilación: Error: (28, 20) error: Call () no es público en Call; no se puede acceder desde el paquete externo . Hay varios estados de llamada definidos en la enumeración: Marcación, Timbre, Conectado, DI conectado, En espera, etc. Cuando ejecuto el código, realiza la llamada, ya que puedo ver la pantalla del emulador que realiza la llamada.

La guía para desarrolladores no proporciona ningún ejemplo del uso de estas clases. Gracias por tu ayuda.

package com.example.ramesh.makeacall;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telecom.Call;
import android.telephony.*;

import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Call call;
        call =  new Call();
        call();

    }
    private void call() {

        try {

            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:5555551212"));
            System.out.println("====before startActivity====");
            startActivity(callIntent);


        } catch (ActivityNotFoundException e) {
            Log.e("helloAndroid","Call failed",e);
        }
    }

    }
2
Ram Ramesh 15 dic. 2016 a las 06:19

2 respuestas

La mejor respuesta

Intenta usarlo así (aunque no lo he probado) -

Call.Callback callback = new Call.Callback() {
    @Override
    public void onStateChanged(Call call, int state) {
        super.onStateChanged(call, state);
        if(state == Call.STATE_RINGING){
            //you code goes here
        }
    }
};
2
kaustav07 3 jul. 2017 a las 20:22
 public class MyPhoneStateListener extends PhoneStateListener {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                handleRinging(incomingNumber);
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                handleOffHook();
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                handleIdle();
                break;
        }
        super.onCallStateChanged(state, incomingNumber);
    }
}

Y registrar state oyente:

TelephonyManager = (TelephonyManager) context.getSystemService (Context.TELEPHONY_SERVICE); telephonyManager.listen (myPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

0
Mây Và Bão 15 dic. 2016 a las 03:30