检测应答呼叫的来源(可穿戴或手持)

时间:2014-08-08 09:31:39

标签: android wear-os

我只想检测接听电话的位置。在可穿戴设备或手持设备上。 即Person_A调用Person_B,Person_B具有可穿戴设备。我希望能够通过他们的可穿戴设备或手持设备检测Person_B是否接受了cal。

有没有办法在手持设备上检测到这一点。

OR

有没有办法监听呼叫,即可穿戴的PhoneStateLister?

2 个答案:

答案 0 :(得分:0)

您无法直接从佩戴状态查询PhoneStateListener,但您可以使用一个手机应用程序,在状态发生变化时将磨损消息API发送到磨损应用程序。

答案 1 :(得分:0)

我的回答并不能解决您的整个问题,但我想出了如何检测到手表上的呼叫已被回答的事实(并且它适用于我的情况)。 我通过com.google.android.clockwork.home.incomingcall.PhoneActivity标准活动的存在/不存在来检测它。

代码:

void waitForAnswer() {
 sleep(1000, 0); // give a chance to the standard ringing activity
 while (!isPhoneAnswered())
    Thread.sleep(1000, 0);
 // Here the call is anwered but you can not tell is it answered on the phone or on the watch or simple missed
}

private boolean isPhoneAnswered() {
    boolean result = true;
    try {
        final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        final List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

        for (int i = 0; i < recentTasks.size(); i++) {
            if (recentTasks.get(i).topActivity.getClassName().contains("com.google.android.clockwork.home.incomingcall.PhoneActivity")) {
                result = false;
                break;
            }
        }
    } catch (Exception ex) {
        Log.e(Constants.AppName, ex.getMessage());
    }

    return result;
}

当然你应该在一个单独的线程中使用它。 要检测是呼入,呼出还是遗漏,我使用the code from this answer.

希望这会对某人有所帮助。