【问题标题】:Monotouch Phone/Call state?Monotouch 电话/通话状态?
【发布时间】:2011-09-14 15:29:16
【问题描述】:

Monotouch 有什么方法可以读取电话或呼叫者服务的当前状态吗?

如果通话处于活动状态或通话处于保持状态等,我试图找到某种读取方式。

谷歌搜索没有发现任何东西。

希望运行一些代码 sn-p,例如:

if(CallIsActive) {

}
else {

}

我的解决方案:

public static class CallHandler
{
private static CTCallCenter ctc;
private static NSSet calls;

public static void StartListening() {
    Console.WriteLine ("Callhandler is listening");
    ctc = new CTCallCenter ();
    calls = ctc.CurrentCalls;
    ctc.CallEventHandler = new CTCallEventHandler (delegate(CTCall inCTcall) {
            calls = ctc.CurrentCalls;

    });
    }

    public static uint CallCount {
        get {
            return (calls != null) ? calls.Count : 0;
        }
    }

    public static string GetCallState(int CallID) {
        CTCall[] callArr = calls.ToArray<CTCall>();
        CTCall call = callArr[CallID];
        return call.CallState;

    }
}

运行 CallHandler.CallCount 以获取当前呼叫计数和 GetCallState(0) 以进行首次呼叫等。

【问题讨论】:

  • 安德斯,为了其他人在 StackOverflow 上寻找解决方案,你能用你自己的帖子回答你自己的问题吗?
  • 好的,等我回去工作后再发布我的解决方案!

标签: iphone ios mono xamarin.ios core-telephony


【解决方案1】:

我认为您正在寻找 CoreTelephony 框架。有一个 Apple sample 覆盖它。

using block-based event handlers to receive call events and carrier changes.

您需要将代码从 ObjectiveC 转换为 C#(查找 callStateToUser)。

【讨论】:

  • 这看起来很有希望,可惜我的 Objective C 技能是废话,我想我会管理的,明天会检查它,如果它是可移植的,我会将你的答案标记为正确 :)
  • 除了查看正在使用的 API 名称和 MonoTouch 文档(例如docs.go-mono.com/index.aspx?link=N%3AMonoTouch.CoreTelephony - 我没有 iPhone 来测试它,但它看起来像使用 CTCallCenter,将其 CallEventHandler 设置为您的 (C#) 委托并查看提供的 CTCall State 属性(并跟踪其值)。
  • 我试图让它工作,但据我所知,这不是可移植的:/。我创建了一个 CTCallCenter 实例,但尝试获取 CurrentCalls 总是显示为空。而且我也无法定义 calleventhandler,它只是崩溃了。
  • pastebin.com/46zGjqRr 更改了一些东西以尝试调试.. 无论如何所有输出: Callhandler is active No carrier null 无法映射来电?
  • nvm 想通了,谢谢!,在声明事件处理程序时不小心取了一个 + :( 并且在有 0 次调用时它的 null ,在运行代码时有一个调用使它工作。跨度>
猜你喜欢
  • 2017-11-16
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多