国安TweetWebカメラのデバイスの種類が選択された時の処理メンバ変数cameraNoにcameraComboBoxより選択されたインデックス番号を格納しておきます。AppBar1を表示状態にします。MediaCaptureの新しいインスタンスmyMediaCaptureオブジェクトを作成します。InitializeAsyncメソッドで、以下の内容でMediaCaptureオブジェクトを初期化します。新しいMediaCaptureInitializationSettingsクラスのインスタンスを作成します。MediaCaptureInitializationSettingsクラスは、MediaCaptureオブジェクトの初期化設定をするクラスです。VideoDevideIdプロパティにcameraComboBoxより選択されたインデックスに対応する、コレクション変数myCameraのデバイスIDを指定します。CaptureElement1のSourceプロパティにデバイスIDで初期化されたmyMediaCaptureを指定します。StartPreviewAsyncメソッドでプレビューを開始します。これで、Webカメラの画像が表示されます。Cameraアイコン)の使用を可能にします。非同期処理で行われるため、メソッドの先頭にAsyncを追加します。Camera」アイコンがタップされた時の処理MediaElement1を再生します。シャッター音が鳴ります。ピクチャライブラリにアクセスし、CreateFolderAsyncメソッドで、ピクチャフォルダ内にImageDiaryというサブフォルダを作成します。その際、CreationCollisionOption.OpenIfExistsと指定しておくと、同名フォルダやファイルがある場合は、そのフォルダやファイル名を返し、ない場合は新規に作成してくれます。CreateFileAsyncメソッドで現在の年月日時間分秒.jpgファイルを作成します。メンバ変数saveImageFileNameに、このjpgファイル名を格納しておきます。イメージストリームの書式を表す新しい、ImageEncodingPropertiesクラスのインスタンス、myImageEncodingPropertyオブジェクトを作成します。書式のサブタイプを表すSubtypeプロパティにjpegを指定し、Widthに640、Heightに480と指定します。CapturePhotoToStorageFileAsyncメソッドで、ストレージファイルにフォトをキャプチャします。書式は以下の通りです。CapturePhotoToStorageFileAsync(ImageEncodingProperties,IStorageFile)コレクション変数myPictureFilesにGetFilesAsyncメソッドで、ImageDiaryフォルダ内の画像ファイルを取得して格納します。コレクション変数myPictureFilesが格納しているファイルの個数を、Countプロパティで取得して、メンバ変数Indexに格納します。新しいBitmapImageクラスのインスタンスsaveBmpを作成します。1).OpenReadAsyncと指定して、コレクション変数内のIndexに対応するファイルをOpenReadAsyncメソッドで開き、ソースイメージに指定します。Indexを-1しているのはコレクション変数myPictureFilesが格納しているファイルのインデックスが0から始まるためです。「Save」アイコンの使用を可能にします。非同期処理で行われるためメソッドの先頭にAsyncを追加します。Sub「Save」アイコンがタップされた時の処理コメント欄が未入力の場合は、警告メッセージを発して処理を抜けます。それ以外の場合は、ピクチャライブラリのImageDiaryXMLサブフォルダにアクセスします。XMLを作成して変数saveXmlに格納します。要素の子要素として、、、要素があります。Basicの埋め込み式を用いています。使用される構文と同じです。要素の内容には埋め込み式で、saveImageFileNameの値を、要素には、commentTextBox.Textの値を、には、myLatitudeの値を、には、myLongitudeの値を指定します。XElement.Parseメソッドで、作成したXMLを文字列として読み込みます。読み込んだXMLを変数resultXmlに格納します。ImageDiaryXMLフォルダに、CreateFileAsyncメソッドで、saveImageFileName変数が格納している画像ファイル名から、20文字分取りだして、文字列「.xml」と連結したXMLファイルを作成し、変数myXmlFileで参照しておきます。OpenAsyncメソッドで、読み込みと書きこみモードでmyXmlFileが参照しているファイルを開き、myStreamで参照します。データをストリームに書きこむ、myStreamで初期化された新しいインスタンス、writerを作成します。エンコードにUTF-8を指定し、WriteStringメソッドで、出力ストリームにresultXmlの内容を書きこみます。StoreAsyncメソッドで、ストアにバッファのデータをコミットします。文字列型の新しいリストである、xmlFileListオブジェクトを作成します。ImageDiaryXml内のファイルを、GetFilesAsyncで取得して、コレクション変数myXmlFileNameに格納します。XMLファイルが存在する場合は、コレクション変数myXmlFileName内を、変数resultで反復しながら、以下の処理を繰り返します。Addメソッドで、取得したファイル名から、パスと拡張子を除いたファイル名を取り出し、それに、文字列「.xml」を連結して、xmlFileListオブジェクトに追加していきます。fileListBoxのItemsSourceプロパティにxmlFileListオブジェクトを指定します。ListBoxに保存したXMLファイルが追加されます。Folderアイコンの使用を可能にし、Saveアイコンの使用を不可とします。非同期処理で行われるため、メソッドの先頭にAsyncを追加します。MessageDialog("何かコメントを入力してください。SubListBoxからXMLファイルが選択された時の処理AppBarを非表示にし、ブール型メンバ変数をTrueで初期化します。この値を元に戻る(←)アイコンがタップされた時、どこに戻るかを決定します。Frameを表示状態にし、ListBoxから選択されたXMLファイル名を変数mySelectedFileに格納します。Image1を非表示にします。FrameのNavigateメソッドで、mySelectedFileを引数にDataShowPageに遷移します。エラーが発生した場合は、Frameを非表示にし、AppBarとImageを表示状態にします。各表示を以下の状態にします。CaptureElementを表示状態にします。cameraComboBoxを表示状態にします。AppBarを表示状態にします。myFrameを非表示にします。Image1を表示状態にします。CommentTextBox内を空にします。ブール型メンバ変数がTrueの場合は、DataShowプロシージャを実行して、flagをFalseで初期化します。それ以外は、flagをFalseで初期化し、処理を抜けます。Sub「Folder」アイコンがタップされた時の処理CaptureElementを非表示に、cameraComboBoxを非表示に、myFrameを表示状態に、AppBarを非表示とします。myFrameのNavigateメソッドでDataIchiranShowPageに遷移します。何も値は渡さないのでNothingを指定しておきます。SubGeolocatorの機能が変更された時に発生する処理Geolocatorオブジェクトの更新後の状態を、変数positionStatusで参照します。Case文で条件分岐を行います。場所データを提供するGeolocatorオブジェクトがDisabledであった場合、つまり、場所プロバイダーが無効であった場合は、RunAsyncメソッドでディスパッチされたイベントの結果を非同期に返します。ディスパッチャの優先順位は標準のNormalを指定しています。この場合は、「位置情報を取得できません。GPSおよび位置情報取得可能なPCでお試しください。Camera」アイコンの使用を不可として、処理を抜けます。Camera」アイコンの使用を可能にします。非同期で行われるためメソッドの先頭にAsyncを追加します。MessageDialog("位置情報を取得できません。GPSおよび位置情報取得可能なPCでお試しください。Class次に、ソリューションエクスプローラー内のDataShowPage.xamlを展開して表示される、DataShowPage.xaml.vbをダブルクリックしてリスト5のコードを記述します。(DataShowPage.xaml.vb)ファイル、フォルダおよびアプリケーションの設定を管理するクラスの含まれる、Windows.Storage名前空間をインポートします。Mapsに関するクラスの含まれるBing.Maps名前空間をインポートします。Bing.Maps図形を定義するクラスの含まれる、Windows.UI.Xaml.Shapes名前空間をインポートします。Windows.UI.Xaml.ShapesオブジェクトのUIをサポートする機能の含まれる、Windows.UI名前空間をインポートします。インターフェイスを提供するクラスの含まれる、System.Net.Http名前空間をインポートします。System.IOシーケンシャルアクセスストリームおよびランダムアクセスストリームに対する読み取りと書きこみのサポートを提供するクラスの含まれる、Windows.Storage.Streams名前空間をインポートします。Page文字列型の定数メンバ変数を宣言し、YahooのアプリケーションIDで初期化します。プログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。活動に本格的に参加、.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。