我只想检测接听电话的位置。在可穿戴设备或手持设备上。 即Person_A调用Person_B,Person_B具有可穿戴设备。我希望能够通过他们的可穿戴设备或手持设备检测Person_B是否接受了cal。
有没有办法在手持设备上检测到这一点。
OR
有没有办法监听呼叫,即可穿戴的PhoneStateLister?
答案 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.
希望这会对某人有所帮助。