Windows Mobileに着信音をインストールするプログラムを作成しています

5番目、6番目のWindows Mobileは、着信音をインストールする最も便利なシステムとは大きく異なります。 ちなみに、私の過去のPalm Treo 650はさらにひどいものでしたが、それは彼に関するものではありません。 グループにメロディを配置することが許可されていないだけでなく、すべての着信音は\ Windows \ Ringsフォルダにある必要があります。 はい、レジストリで変更できますが、これは見苦しく、グループの問題を解決しません。



どうする?



最初に、 PhotoContactsProと呼ばれるものに目を向けました。いくつかの記事でmobile-review.comでさえ、グループにメロディを設定するための優れたユーティリティとして推奨されていました。 しかし、残念なことに、このユーティリティは電話のシェル全体を提供します。たとえば、私は何も必要ありません(そして費用もかかります)。 このシェルをオフにすると、グループへのメロディの割り当てはもちろん無効になります。



その後、ユーティリティToneManagerが突然見つかりました。 このユーティリティは優れています。小さく、無料で、必要なことを正確に実行します-Pocket Outlookでグループの曲をハングさせます。 ただし、1つのフォルダー(デフォルトでは\ Windows \ Rings)だけで機能し、最悪の場合、設定を保存する方法がわかりません。 そして、そのようなプログラムの設定を保存することは非常に重要です。なぜなら、それは連絡先にメロディを送るだけです。つまり、新しい連絡先は、再び起動するまでフォレストを通過するからです。 作者はリリースで「申し訳ありませんが、将来のバージョンに残ります!」と喜んで書いていますが、どういうわけか将来のバージョンはありません。



検索に苦しんでいた私は、この問題がCompact Frameworkを感じ、私自身のユーティリティを作成する絶好の機会であると判断しました。



この記事の著者はwdkですが、彼はカルマのおかげで資料を公開できません。 記事が気に入ったら、良い著者がカルマを修正し、有用な記事を書き始めるのを手伝ってください。





これは何が起こったのです:









何ができますか?

原則として、すべてがスクリーンショットから明らかです。 連絡先、グループ、すべての連絡先の着信音を選択できます。Windowsのグローバル着信音をメロディで消去できます([設定]-> [個人]-> [電話])。 メロディは、メモリーカードなど、どこからでも選択できます。 メロディーがリストに追加され、優先度が下になります。



QVGA、VGAでテストされたWM5、WM6で動作します。 いくつかのコントロールがあるため、彼女はWMで働きたくないと考えています。 また、プログラムはWM2003エミュレーターでの動作を拒否しました。



実際のプログラム: werder.nm.ru/wToneManager_Installer.CAB



どのように機能しますか?

Microsoft.WindowsMo​​bile.PocketOutlookのアセンブリについて知っている場合、連絡先を取得するのは非常に簡単であることが判明しました。 Pocket Outlookセッションを作成します。必要なものはすべて揃っています。



OutlookSession session = new OutlookSession();

ContactCollection contacts = session.Contacts.Items;



//

foreach (Contact c in contacts)

{

cbContacts.Items.Add(GetContactString(c));

}



//

foreach (Contact c in contacts)

{

string [] curCats = c.Categories.Split( ',' );

foreach ( string cat in curCats)

if (!cbGroups.Items.Contains(cat) && ! String .IsNullOrEmpty(cat.Trim()))

cbGroups.Items.Add(cat);

}



// , ,

// Pocket Oulook ,

// foreach

for ( int i = 0; i < contacts.Count; i++)

{

Contact c = contacts[i];

c.RingTone = item.Tone;

c.Update();

}




* This source code was highlighted with Source Code Highlighter .








曲を演奏することはいっそう興味深い。 WMでメロディ(wav、mp3、wma)を再生する方法は多数ありますが、そのうちの1つだけが適切です。 しかし、まず最初に。 最初の方法は、 winmm.dllの標準のPlaySound関数です 。 言うまでもなく、wavしか再生できませんか? そのため、MSDNを調べてaygshell.dllライブラリというすばらしい方法を見つけました! 彼はmp3の再生方法と、同期/非同期再生の可能性を知っています。しかし、これは悪いことです。WM6のみであり、WM5にはデバイスの所有者が多く、気を悪くしたくありません。 さらに検討しています。 CF3.5の新しいSoundPlayerクラスを使用するための多くのヒントがインターネット上にあります。 この魔法のクラスのために3番目のフレームワークに切り替える準備ができていましたが、驚いたことに、このクラスはmp3の再生を拒否しています。これは非常に奇妙です。



これに関して、私は標準的な手段でメロディーを演奏しようとするのにうんざりしており、アイデアはサードパーティのものを使用するようになりました。 まず、選択はFMODライブラリにありました。 豊富な機会に感銘を受けて、小さなラッパーはすぐに書かれ、外観はすべて機能し、素晴らしかったです。 テストするまで、wma形式の曲が誤って選択されるまで。 開発者は可能だと主張していますが、理由は不明ですが、WinCEのFMODバージョンはwmaのプレイを強く拒否しています。



残っているものは何ですか? 彼はいつも控えめに近くに立って、彼らが彼に注意を払うのを待っていました。 もちろん、これはWindows Media Playerです!



接続は非常に簡単です-スタジオで[参照の追加]をクリックし、ファイル%windir%\ System32 \ wmp.dllを見つけます。 このファイルのサイズが大きいことを恐れないでください。プロジェクト用の別のライブラリ、Interop.WMPLib.dllが添付されます。



同じFMODよりもWMPLibでメロディを演奏する方がはるかに簡単であることが判明しました。

WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer();



// , ,

wmp.settings.setMode( "Loop" , false );

wmp.settings.volume = 100;



//

wmp.URL = (cbTone.SelectedItem as ListItem).Value;

wmp.controls.play();




* This source code was highlighted with Source Code Highlighter .








ご覧のとおり、すべてが非常に簡単です! ちなみに、WMPLibは非常に強力なライブラリであり、多くのイベント、プレイリストなどがありますが、これは別の記事のトピックであり、1つの記事ではありません。



それだけです、あなたの注意をありがとう、試してみて、購読を解除してください!



プログイット




All Articles