2009-10-07 6 views
6

私のアプリには、電話中のユーザーにハイライトする方が良い部分があります。ユーザーが電話中にアプリを使用しているかどうかを確認する方法はありますか?

私たちが電話中であることを確認する呼び出しがありますか?残念ながら、 "コール"は明らかな理由でAPIドキュメントでチェックするのは恐ろしい言葉です。

+0

ここにシナリオがあります。 BobはJillから電話を受け取ります。ボブは、コールが発生したときにアプリケーションを使用していません。 Jillは私のアプリに保存されているボブからの情報を要求します。ボブは電話中にホームボタンを押してから、自分のアプリを起動します。 この時点で、ボブが電話で話していること、またはボブが電話ではなくアプリを実行していることを検出したいと考えています。 アプリの実行中に電話がかかっても構いません – Michael

+0

大きな質問私はあまりにも知りたいです。 – Jordan

答えて

2

CoreTelephony Frameworkから通知されます。

CTCallCenter currentCallsメソッドは、現在アクティブなセルラコールのセットを返します。

0

iPhoneが電話を受けると、アプリケーションは終了します。

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/applicationWillTerminate

コールが終了した後は、アプリケーションが再起動されますあなたが見る、優雅に、このイベントを処理するためのコールバックを登録することができます。通話中に自分の状態を保存するように見える

アプリケーションがちょうどよく書かれている:)


Argghを!私はあなたの実際の質問を読んだだけです。

電話アプリケーションにアクセスするためのAPIが見つかりません。私の唯一のアドバイスは、Phoneは他のアプリケーションと同様のアプリケーションであり、すべてのアプリケーションが提供するhttpトンネル経由で情報を公開できるということです。

私は同じ結果を達成するためにユーザーが押すことができる「私は電話の上にいる」ボタンを持つことができますか?

2

コールが着信するとアプリケーションが終了せず、非アクティブな状態に移行します。そのようなiPhoneがロックされているときのように、

- (void)applicationWillResignActive:(UIApplication *)application 

この方法はまた、他の例で呼び出され、それが原因と電話の着信した場合は、決定の方法がありません:以下の方法がUIApplicationDelegateに呼び出されなければなりませんそれ。

5

[[UIScreen mainScreen] bounds][[UIScreen mainScreen] applicationFrame]のサイズの違いを見てください。差分が20ピクセルで、ステータスバーを非表示にしていない場合、ユーザーはおそらく通話中ではありません。差が40ピクセルの場合、通話中に表示される緑色のステータスバーが通常のステータスバーの約2倍の大きさなので、ユーザーは通話中である可能性があります。

私は以前これをしていないので、YMMVです。幸運とそれが動作するかどうか私に知らせる!

+3

これは答えだと思っていますが、テザリングは同じことをしています...:O( – Michael

関連する問題