火山壁紙 - アプリリリース2021年02月09日 08:29


火山壁紙

「火山壁紙」の名称で、ユニバーサルWindowsストアアプリをリリース。気象庁の火山監視カメラの画像を、時折、楽しみに見ているが、いっそ壁紙にできたら、ということで作成してみたもの。気象庁のサイトで提供される画像の解像度は低めなので、少々粗いが、ときに、驚くような絵が得られるので楽しい。

対象の火山は全てでなく、解像度が高めで、空が広いものをピックアップ。メンテナンスで絵がホワイトアウトすることが偶にある。

※アプリのページ

開発時間は、35時間ほど。HttpClientを用いて気象庁のサイトにアクセスし、得られたHTMLから画像のURLを正規表現で抽出し、ダウンロードしたファイルを壁紙に設定する。このため、サイトの仕様変更ですぐに動かなくなるが、ご容赦。

更新間隔を指定しての自動更新は、当初、ThreadPoolTimerを用いていたが、UIを最小化すると止まってしまうので、Background Taskとして実装。時間起動を実現するTimeTriggerは、最小間隔が15分なので、動作確認に時間がかかる。ForegroundとBackgroundの情報のやりとりは、ApplicationData.Current.LocalSettingsを利用。既定の型しか使えないので、ClassのPropertyをバラしてやりとり。

阿蘇山

お薦めの第一は、阿蘇山。今も噴煙を上げ、雄大。東の空で朝日が美しい。

韓国岳

霧島山の韓国岳は、火口を上から見下ろす視点が唯一。

浅間山

東日本では浅間山もなかなか。

富士山

もちろん富士山も。頂上付近の絵なので、雄大さは少々欠けるけども。

プライバシーポリシーとサポート情報 - 火山壁紙2021年02月03日 09:15

本アプリについて (About this app)

このアプリは、気象庁の火山監視カメラが提供する火山画像をWindowsの壁紙に設定します。
一覧に用意しているのは、サイトが提供する全ての火山についてではなく、解像度が高く、空が広く、電線などの障害物が少ないものを抜き出しています。

なお、カメラのメンテナンスなどにより、画像が得られない場合があります。また、気象庁のサイトの仕様変更により、アプリが動作しなくなることがあります。

※アプリのページ

プライバシーポリシー (Privacy statement)

火山壁紙
対象アプリ;火山壁紙

本アプリの製作者である The Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

あらかじめのおことわり (FAQ)

1)本アプリの製作者は、気象庁のサイトの利用者である以上に、気象庁とは特段の関係はありません。

2)サイトで提供される火山監視カメラの解像度は、640x360程度です。大きなディスプレイでは、壁紙に設定したときに画像が粗く感じられるかもしれません。

利用するツールや文献 (Reference)

1)気象庁、火山の観測データ、監視カメラ画像のサイト


ComboBoxのSelectedValueの型の怪しい挙動2021年01月30日 16:57


XAML定義

UWPにて、ComboBoxを定義。
項目選択時のSelectionChangedイベント処理にSelectedValueを使ってみる。
MS Docの記述例では、AddedItems[0]を用いているものもあるのだけど。

初期化前の例外

動かしてみると、XAMLの初期化時の呼び出しで、型不一致の例外。
デバッガの変数表示を見ると、SelectedValuePathが未定義。
SelectedValueには、IDを定義するクラスであるIntervalItemのインスタンスが設定。

初期化後の処理

苦し紛れだが、そこのところを、型チェックで除外。
すると、UI初期化完了後の呼び出しでは、SelectedValuePathはXAMLの定義通りに設定され、SelectedValueにはIntervalItemのプロパティであるIDが正しく設定されている。

なんとも怪しげ。まだ、こんなのがある。

UWPでURLからの画像のダウンロード2021年01月28日 07:01

URLで指定された画像のダウンロードを試みる。
StorageFileのGetFileFromApplicationUriAsyncでいきなり、という訳にはいかない。
Webで検索すると、いろいろ出てくるが、APIを整理してできたHttpClientの例が少ない。

URLからの画像のダウンロード

・HttpClientのGetAsyncでインターネットに接続(L32)
・応答のContentをHttpStreamContentにキャストして、streamに書き出し(L35)
・BitmapDecoderを生成(L43)
・SoftwareBitmapを生成(L44)

SoftwareBitmapにしておけば、BitmapEncoderで形式を選んで画像ファイルに保存できる。

プライバシーポリシーとサポート情報 - 画面属性と制御2021年01月25日 20:30

本アプリについて (About this app)

モニタに関する情報取得と電源制御(オフ)を行うユーティリティです。

※アプリのページ

更新情報
2021年1月の更新
・前回起動時の画面位置を復元するようにしました。

プライバシーポリシー (Privacy statement)

画面属性と制御
対象アプリ;画面属性と制御

本アプリの製作者である The Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

使い方 (How to)

電源制御のみ

起動すると、「モニタの電源を切る」ボタンのみが表示されます。このボタンを押すと、モニタの電源を切ります。マルチディスプレイ環境では、全てのモニタの電源を切ります。

属性一覧表示

「モニタの属性一覧」横のボタンを押すと、最初のDeviceIDを持つモニタの属性一覧を表示します。複数のモニタがある場合は、DeviceIDを選ぶことで一覧が切り替わります。

表示するのは、WindowsがWin32_DesktopMonitorで定義する内容です。同じディスプレイを接続していても、ディスプレイドライバによって、表示内容は変わることがあります。

一覧の2つめの表示は、当該属性が実装されているかどうかを示します。「未実装属性の表示切替」ボタンで、未実装のものを一覧から除くか、切り替えます。

あらかじめのおことわり (FAQ)

1) モニタの電源制御は、複数のディスプレイが接続されている場合、一括になります。

2) リモートデスクトップで接続して「モニタの電源を切る」を押下しても、リモートデスクトップの画面は暗転しません。

3) 「電源を切る」を実施し、ディスプレイが暗転した後、復帰するには、マウスやキーボードなどを操作してください。

4) 属性一覧の「PowerManagementSupported」がTrueであれば、ディスプレイの個別の電源制御ができるはずですが、WMIの説明によると、未実装の機能です。

プライバシーポリシーとサポート情報 - 音量一覧選択2021年01月25日 19:00

本アプリについて (About this app)

システムボリュームを一覧から選択して設定するユーティリティです。

動画や音声の配信では、番組毎に音量のレベルがまちまちですが、都度、システムのボリュームを調整するのではなく、あらかじめ登録してある設定を一覧から選択できるようにします。

また、精度はあまり高くありませんが、音量レベルの変化をモニタして自動で調整する機能をあわせて用意します。各種の中継など、声の調子が異なる複数の話者が切り替わるような番組での活用を想定しています。音楽向きではありません。

※アプリのページ

※Windows10 ver1809配信について
一覧表示で記憶しているデバイスIDは、Windows10をUpgradeすると変わることがあります。その場合、設定名の下にデバイスが無効とのメッセージが出ます。項目を削除して、一覧を再作成してください。

更新情報

2021年1月の更新
・消音(ミュート)ボタンを設けました。
・起動時に、前回起動時の画面位置を復元するようにしました。

プライバシーポリシー (Privacy statement)

音量一覧選択
対象アプリ;音量一覧選択

本アプリの製作者である The Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

使い方 (How to)

音量一覧選択

・再生するデバイス、音量を選び、設定名に名称を入力して登録すると、右側の一覧に表示されます。
・右側の一覧を選択すると、登録したデバイスと音量が設定されます。
・左下の「音量の自動調節」は、トグルボタンになっています。押下状態にすると、レベルメータの値を使って、音量を調整します。調整後の音量は、目標音量のスライダーで調整します。

あらかじめのおことわり (FAQ)

1) システムボリュームへのアクセスには、「xenolightning/AudioSwitcher」を利用しています。

2) 制御できるのは、Windowsの音量管理を利用しているアプリの場合です。ASIOやWASAPI Exclusiveを利用している場合は、対象になりません。

3) 音量の自動調整は、コントロールパネルの「サウンド」で表示されるデバイスのレベルメータ(Peak Value)の直近の平均値が50の時、目標音量になるようにしています。目標音量はあくまで目安ですので、実際の音量を確認しながら適当な位置に調整してください。実験的な実装ですので、実用性は高くありません。

4) 音量の自動調整は、急な音量の変化に反応しすぎないように、平均を取る期間を長めに設定し、一回の変化量に上限を持たせています。反面、無音状態から急に大きな音になるような場合は、追随しきれない場合があります。

5) OSのアップグレードを行うと、デバイスのID(GUID)が変わることがあります。IDが変わると、登録したプリセットを適用できなくなります。その場合、改めて、デバイスを選択して更新するか、削除して再登録してください。

nuget 内部エラーが発生しました。 - VS20192021年01月23日 14:02

VisualStudio2019で、パッケージの更新をしようと、NuGetパッケージマネージャを起動すると、無反応。

nuget内部エラー

「参照」タブを見ると、「エラーが発生しました」の一文のみ。

エラー一覧を見ると、「内部エラーが発生しました。Microsoftサポートにお問い合わせください。」とにべもない。これは、だめなタイプのエラー。

プロジェクトのターゲット

コードに手を入れる前なので、環境の問題。プロジェクトのターゲットバージョンを上げると、エラーは解消。エラーが出たときの最小バージョンは、10240。サポートが切れた古すぎるバージョンを指定すると生じる問題の様子。

ほそ道まっぷ - 東関紀行、海道記を追加2020年04月22日 12:07


ほそ道まっぷ

Windowsアプリの「ほそ道まっぷ」に、東関紀行と海道記を追加。

さすがに鎌倉時代(13世紀)の紀行なので、なくなった地名、地殻変動で失われた場所、など、不明な箇所がいくつも。それでも、なんとか、道筋をたどってみる。

地名は、地理院地図を主にプロット。地図上の地名表記の近くが中心に来る設定。そのため、街道沿いから離れる場合も。また、山など少し離れた場所を指す場面もあり、画面いっぱいに拡げて、広く周囲を見ながら、本読みの供とするのがおすすめ。