酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Mobile(.NET Compact Framework)で電話を掛ける

Windows Mobile では、Classic Edition 以外の Edition で電話の発着呼の機能に対応しています。Professional Edition及びStandard Editionでは、Windows MobileそのものがOSの標準機能として電話機能が搭載されています。もちろん.NET Compact Frameworkでも電話を制御するクラスを利用する事が出来ます。

本記事では、プログラムから電話アプリを呼び出して発呼を行う方法をご紹介します。

Phone クラスを使用した発呼

Microsoft.WindowsMobile.Telephony名前空間のPhoneクラスを使用するには、Microsoft.WindowsMobile.Telephony.dllのアセンブリを参照する必要があります。

まずはPhoneクラスを介して、プログラムから電話アプリを呼び出して発呼を行ってみましょう。電話番号を指定しTalk メソッドを使用してすると、電話アプリを立ち上げ発呼処理を行います。

VB.NET

    ' 電話を掛ける
    Dim phone As New Microsoft.WindowsMobile.Telephony.Phone()
    phone.Talk("09012345678")

C#

    // 電話を掛ける
    Microsoft.WindowsMobile.Telephony.Phone phone 
        = new Microsoft.WindowsMobile.Telephony.Phone();
    phone.Talk("09012345678");

実行結果

サンプルコードを実行すると、以下のような確認メッセージが表示されます。

f:id:ch3cooh393:20140723121506p:plain

"TEL:" スキームを使用した発呼

本来電話機能を持たないClassic Editionですが、電話機能を持ったSHARP W-ZERO3シリーズは少し事情が特殊で標準電話アプリが搭載されていない為、上記で紹介したPhoneクラスのTalkメソッドを用いた発呼が出来ません。

そこで"TEL:"から始まるTELスキームを用し、関連付けられたアプリケーション(W-ZERO3シリーズの場合は、シェルを介してW-SIMに対応させた独自電話アプリ(Denwa.exe)を起動させる事で発呼を実現させます。

"TEL:" スキームによる電話アプリ起動は、W-ZERO3シリーズに限った機能ではなく、Windows Mobile全般での使用が可能ですが、通話開始の確認を無視させる事は出来ません。

下記にTELスキームを用いた電話発呼を行うサンプルコードを示します。

VB.NET

    ' 電話を掛ける
    Process.Start("TEL:09012345678", "")

C#

    // 電話を掛ける
    Process.Start("TEL:09012345678", "");