y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

MobileGpsClientの改良

Windows MobileによるGPSクライアント開発の続編。
環境設定回りで改良を加えた。
今回の改良点は、下記4点
・環境設定画面を追加し、設定内容をレジストリ保存するようにした
 (起動時にレジストリを読み取りデフォルト値として設定)
microSDカード対応
 アプリケーションデータ(photo、log)をmicroSDカードに保存するようにした
・カメラで撮影する写真の品質を設定出来るようにした
 dialog.StillQuality = CameraCaptureStillQuality.Low ←High,Normal,Low,Default
・メール送信で利用するアカウントを読み取ってドロップダウン化
 従来は利用するアカウントを、先頭のアカウント(session.EmailAccounts[0])で固定していた。
MobileGpsClient20090316.jpg

インストーラの変更
上記変更に合わせて、インストーラレジストリエントリーを追加。
HKEY_LOCAL_MACHINE\Software\会社名\MobileGpsClient
 DefaultToAddress
 LineNumber
 MailAccount
 PhotoQuality
 PhotoSize
 StorePath

■ソース
レジストリの保存
//現在の選択状態をレジストリに保存する
private void writeDefaultSetting()
{
try
{
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine;
key = key.CreateSubKey("Software\\CompanyName\\MobileGpsClient");
key.SetValue("DefaultToAddress", this.cmb_To.SelectedItem.ToString());

       〜略

key.Close();
}
catch (Exception ex)
{
MessageBox.Show("レジストリの書き出し中にエラーが発生しました。原因:" + ex.Message, "エラー");
}
}

レジストリの読み取り
//レジストリを読み取り、前回終了時の選択状態にする
private void readDefaultSetting()
{
try
{
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine;
key = key.OpenSubKey("Software\\CompanyName\\MobileGpsClient");
this.cmb_To.SelectedItem = (string)key.GetValue("DefaultToAddress");
 
       〜略
 
key.Close();
}
catch(Exception ex)
{
MessageBox.Show("レジストリの読み取り中にエラーが発生しました。原因:" + ex.Message, "エラー");
}
}

・メールアカウントの取得
//メールアカウントの取得
private void getMailAccount()
{
OutlookSession session = new OutlookSession();
foreach (EmailAccount emailAccount in session.EmailAccounts)
{
cmb_Account.Items.Add(emailAccount.Name.ToString());
}
session.Dispose();
}

・メモリカードの取得
//メモリカードの取得
private void getStorageCard()
{
if (appdir != "")
{
cmb_StorePath.Items.Add(appdir);
}
if (System.IO.Directory.Exists("\\ストレージカード"))
{
cmb_StorePath.Items.Add("\\ストレージカード");
}

}