Android 当我打电话给某人时,我需要得到这个事件,这个事件对我来说,最重要的是回响事件

Android 当我打电话给某人时,我需要得到这个事件,这个事件对我来说,最重要的是回响事件,android,Android,第一: 什么是回铃音:当我打电话给某人时,我的手机连接了对方的手机,在耳机中播放一些声音,声音就是回铃音 一些类绑定了ringback 路径: com.android.server.telecom.RingbackPlayer com.android.server.telecom.CallAudioManager com.android.server.telecom.CallsManager 在CallsManager的构造函数中使用完整参数初始化播放器 路径: com.android.serv

第一:

什么是回铃音:当我打电话给某人时,我的手机连接了对方的手机,在耳机中播放一些声音,声音就是回铃音

一些类绑定了ringback

路径:

com.android.server.telecom.RingbackPlayer

com.android.server.telecom.CallAudioManager

com.android.server.telecom.CallsManager

在CallsManager的构造函数中使用完整参数初始化播放器

路径:

com.android.server.telecom.CallsManager

电话:545

代码:

回铃事件:

电话:741

代码:

因此,我们应该可以在任何应用程序中获取该事件作为默认拨号程序应用程序

“我的应用程序”是用户安装时设备的默认应用程序。 我在应用程序中实现InCallService

public void onCallAdded(Call call) {
        Log.d(TAG, "onCallAdded: ");
        super.onCallAdded(call);
        if (nowCall == null) {
            nowCall = call;
            nowCall.registerCallback(nowCallback = AbstractCallback.create(nowCall, null, this));
            firstCall(nowCall, nowCallback);
        } else {
            call.registerCallback(callback = AbstractCallback.create(call, nowCall, this));
            firstCall(call, callback);
        }
我在我的InCallService中代理mHandler

代码:

public static void proxyInCallHandler(InCallService inCallService) {
        Field mHandler = ReflectSystem.field(InCallService.class, "mHandler");
        try {
            Handler o = (Handler) mHandler.get(inCallService);
            InCallServiceHandler proxy = InCallServiceHandler.proxy(o);
            mHandler.set(inCallService,o);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
但只有连接、连接、拨号、振铃、活动、断开连接、断开连接的事件处理消息,其中没有回铃事件

我怎样才能得到它

我试过:

反射ITelephony,当返回布尔值时,检查循环中所有方法的状态

反射ITelecom,当返回布尔值时,检查循环中所有方法的状态

反映AudioManager和IAudioService$Binder。检查循环中的所有流状态

检查TelecomManager和TelephonyManager循环中的所有状态

哦。我没有主意。请帮帮我

public void onCallAdded(Call call) {
        Log.d(TAG, "onCallAdded: ");
        super.onCallAdded(call);
        if (nowCall == null) {
            nowCall = call;
            nowCall.registerCallback(nowCallback = AbstractCallback.create(nowCall, null, this));
            firstCall(nowCall, nowCallback);
        } else {
            call.registerCallback(callback = AbstractCallback.create(call, nowCall, this));
            firstCall(call, callback);
        }
public static void proxyInCallHandler(InCallService inCallService) {
        Field mHandler = ReflectSystem.field(InCallService.class, "mHandler");
        try {
            Handler o = (Handler) mHandler.get(inCallService);
            InCallServiceHandler proxy = InCallServiceHandler.proxy(o);
            mHandler.set(inCallService,o);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }