2011-09-07 159 views
1

Monotouch中有任何方法可以讀取手機或來電者服務的當前狀態嗎?Monotouch電話/呼叫狀態?

我試着去發現閱讀一些方式,如果一個呼叫活躍或呼叫保持等

谷歌搜索在這個沒有打開任何東西。

一直在尋找運行一些代碼片段,如:

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獲取當前callcount和GetCallState(0),首先調用等

+1

Anders,爲了其他人在StackOverflow上尋找解決方案,你能用自己的帖子回答你自己的問題嗎? –

+0

好吧,當我重新開始工作時,我發佈了我的解決方案! – Anders

回答

1

我認爲你正在尋找CoreTelephony框架。有一個覆蓋它的Apple sample

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

你需要的代碼的ObjectiveC轉換爲C#(尋找callStateToUser)。

+0

這看起來很有希望,壞我的目標C技能是廢話買我想我會管理,明天會過去,如果它的便攜式我會標記你的答案是正確的:) – Anders

+0

你不需要移植的樣品,甚至除了查看正在使用的API名稱和MonoTouch文檔之外,還知道很多ObjectiveC http://docs.go-mono.com/index.aspx?link=N%3AMonoTouch.CoreTelephony - 我沒有iPhone來測試它,但它看起來像使用CTCallCenter,將其CallEventHandler設置爲您的(C#)委託並查看提供的CTCall State屬性(並跟蹤其值)。 – poupou

+0

我試圖讓它工作,但據我所見,這不是可移植的:/。我創建了一個CTCallCenter實例,但試圖獲取CurrentCalls總是變爲空。而且我也無法定義calleventhandler,它只是崩潰。 – Anders