最近開発に没頭していたので、更新が滞ってます。
販売しているAndroidアプリに新機能を搭載することにしたので、そのための調査とコーディングが大変なのです。
XamarinのプロジェクトにJavaソースを加えて、C#からJavaをコールする方法(Managed Callable Wrapper、通称MCWが必要)や、C++ソースを加えてJNIで呼び出す方法など、色々勉強になりました。
C++のライブラリ(.SO)側でSignalを発行するような致命的エラーが発生した場合に、これをAndroidのVM側で検知する方法がまだわかりません(エラーと同時にアプリも落ちてしまう)。
C++側でSignalハンドラをフックして、Javaの例外に変換する方法があるようなのですが、JavaVM自体はSignalハンドラを利用して色々やっているらしく、ハンドラをフックするとハングアップするなど、うまくいきません。
平日は2時間くらいしか時間が取れず、土日も色々忙しいので…。
2019年11月25日月曜日
2019年11月9日土曜日
Xamarin デバッガーが動かなくなる
Xamarinのデバッガーが動かなくなった…。
メッセージは以下の通り。
デバッガーに接続できませんでした。詳細については Xamarin 診断出力を、例外の詳細についてはログをご覧ください。
色々ググってプロジェクトプロパティ→Androidオプション→共有ランタイムの使用のチェックを外したら動いた。
設定→アプリで、Mono Shared RuntimeとXamarin.Android API-28 Supportをアンインストールしたら、「共有ランタイムの使用」「Fast Deployment」を戻しても大丈夫になった。時間を1時間ほど浪費した。
最近Xamarinに悩まされることが減りましたが、久々にやられました。
疲れた。
メッセージは以下の通り。
デバッガーに接続できませんでした。詳細については Xamarin 診断出力を、例外の詳細についてはログをご覧ください。
色々ググってプロジェクトプロパティ→Androidオプション→共有ランタイムの使用のチェックを外したら動いた。
設定→アプリで、Mono Shared RuntimeとXamarin.Android API-28 Supportをアンインストールしたら、「共有ランタイムの使用」「Fast Deployment」を戻しても大丈夫になった。時間を1時間ほど浪費した。
最近Xamarinに悩まされることが減りましたが、久々にやられました。
疲れた。
2019年11月3日日曜日
自家製さんまの握り
魚屋さんで、「刺身用」と書いたサンマが売ってました。
最近はスーパーでも、「サンマを刺身用におろすことはできません」と書いてある所がほとんど。珍しいので4尾買ってみました。
息子がサンマの握りが大好物なので、先週試験結果のご褒美に回転寿司に連れて行った自のですが、不漁による価格高騰で仕入れをしてないそうで、食べられなかったのです。
帰宅後すぐに頭と内臓を除去。寄生虫は魚が死ぬと、内臓から筋肉に移動するため、できるだけ早く内臓を取り除くことが肝心なのだそうです。
その後は氷温室へ。こうしておくと寄生虫がいる場合は、表面に這い出てくるらしいです。そして3枚におろして皮を剥ぎ、念のため細かく切り込みを入れます。
完成です。美味しそう。

実際に食べてみると、新鮮なため臭みは全く無く脂が乗っていてかなり美味しい。
で、2個目を食べようとしたら、ネタの上にクネクネと動くものが。
!!!
いるんですね。アニサキス。既に2個食べた息子は、これを見て固まってました。
息子が超警戒していたので、ネタを剥がして醤油に漬けてしばらく置いて様子をみてみましたが、他にはいませんでした(たぶん)。
結局全部食べましたが、その後1週間以上経過した現在、異常はありません。
ちなみにアニサキスでお腹が痛くなるのは、胃を食い破る痛さではなく、アレルギー反応の痛みで、人体では生きられず1週間以内に死ぬそうです。
最近はスーパーでも、「サンマを刺身用におろすことはできません」と書いてある所がほとんど。珍しいので4尾買ってみました。
息子がサンマの握りが大好物なので、先週試験結果のご褒美に回転寿司に連れて行った自のですが、不漁による価格高騰で仕入れをしてないそうで、食べられなかったのです。
帰宅後すぐに頭と内臓を除去。寄生虫は魚が死ぬと、内臓から筋肉に移動するため、できるだけ早く内臓を取り除くことが肝心なのだそうです。
その後は氷温室へ。こうしておくと寄生虫がいる場合は、表面に這い出てくるらしいです。そして3枚におろして皮を剥ぎ、念のため細かく切り込みを入れます。
完成です。美味しそう。

実際に食べてみると、新鮮なため臭みは全く無く脂が乗っていてかなり美味しい。
で、2個目を食べようとしたら、ネタの上にクネクネと動くものが。
!!!
いるんですね。アニサキス。既に2個食べた息子は、これを見て固まってました。
息子が超警戒していたので、ネタを剥がして醤油に漬けてしばらく置いて様子をみてみましたが、他にはいませんでした(たぶん)。
結局全部食べましたが、その後1週間以上経過した現在、異常はありません。
ちなみにアニサキスでお腹が痛くなるのは、胃を食い破る痛さではなく、アレルギー反応の痛みで、人体では生きられず1週間以内に死ぬそうです。
2019年11月2日土曜日
XamarinでTargetSdkVersion28対応
11月に入ったので、GooglePlayの要件で今後のバージョンアップ時はAndroid9対応(TargetSdkVersion=28)にしないとアップロードできなくなります。
ということで先送りし続けてきた対応作業に入ります。
ネットで検索した限りでは、9からはフォアグラウンドサービスを使用するアプリには、新たにパーミッションが必要とのこと。デンジャラスパーミッションではないので、マニフェストで宣言するだけで終了です。
まずはアプリケーションのターゲットフレームワークをAndroid9に変更。こちらはXamarinの設定になります。
これでAndroidマニフェスト設定画面に新しいパーミッションが表示されるようになります。ちなみにAndroidのTargetSdkVersionと同じにしないとXA1008のWarningが出ます。

こちらが本命の設定。
さっそく再コンパイルしてAndroid9のエミュレータでアプリを起動してみます。
…あっさり動きました。
あれっ。こんなに簡単に終わるんだっけ。Android8.0のXPERIA実機でも問題なく動きました。もうちょっとAndorid9の変更点を確認してみます。
2019年10月31日木曜日
東京開催剥奪!?
マラソンの札幌開催を受け入れない場合は、オリンピック開催自体の権利を剥奪するというメディアの記事が出ているようです。
賄賂、盗作など最初から最後まで問題が絶えないです。
札幌開催でいいじゃないですか。素直に受け入れましょう。
オリンピックがなくなったら、せっかく進んできたテレワークが…。
賄賂、盗作など最初から最後まで問題が絶えないです。
札幌開催でいいじゃないですか。素直に受け入れましょう。
オリンピックがなくなったら、せっかく進んできたテレワークが…。
2019年10月29日火曜日
ミル付き全自動コーヒーメーカー
ホテルやファミレスをはじめとする飲食店やコンビニで、ドリップの都度豆を挽くタイプのコーヒーメーカーが導入されて久しいですが、家庭用や一人用の小型で安価な製品が相次いで発売されています。
コーヒーの香りは間違いなく豆が挽き立ての方が良いに決まっているので、家庭でのドリップ式がポピュラーになってきた今、このような製品が発売されるのも当然な気がします。
まだ豆挽きの粗さや抽出速度までは調節できず、自分の好みのドリップは難しいようですが、ボタン1つでやってくれれば楽ではあります。
コーヒーの香りは間違いなく豆が挽き立ての方が良いに決まっているので、家庭でのドリップ式がポピュラーになってきた今、このような製品が発売されるのも当然な気がします。
まだ豆挽きの粗さや抽出速度までは調節できず、自分の好みのドリップは難しいようですが、ボタン1つでやってくれれば楽ではあります。
2019年10月21日月曜日
Xamarin Android App Bundle エラー
Xamarinがコンソールレベルで、Androidの新しいアプリ公開パッケージ方式であるAndroid App Bundleに対応しているので試してみました。
ココを参考にさせてもらって、aabファイルが出来たまでは良かったのですが、いざPlay Consoleで登録して公開後、手持ちのスマホでダウンロードしてみたら、インストールはできたものの、起動直後に「問題が発生したため、XXXXを終了します。」となってアプリが起動しない。
先週公開されたXamarin 10.1 preview releaseでは、ようやくIDEがAndroid App Bundleに対応し、アーカイブ機能も対応したようです。もうちょっと待とうかな。10月中にAndroid App Bundleでバージョンアップ版を公開したいのですが…。
Android9対応期限である11月1日の前にバージョンアップ版を公開したいので原因調査してなんとか対応させることにしました。まずはVisual Studioを16.3.5にアップデートし、Xamarinを10.0に。Androidオプションにaapt2の設定が出現しました。
csprojでAndroidPackageFormatをaabに設定すれば、強制的にaapt2がtrueに設定されるらしいのですが。
ということで、再度msbuildを実行。aabファイルができましたが、これまでより若干サイズが大きい。さっそくPlay Consoleにアップロード。今度はいけるか?

ダメでした。
---
その後、クラッシュレポートのスタックトレースにヒントを発見。
resources/rawフォルダ内のファイルに対して、NotFoundExceptionが発生しているので、とりあえずrawフォルダとリソースを参照するロジックをカット。これでエラーは回避できましたが、さらに広告絡みのエラーが出ました。インストール後の初回起動時のみエラーが発生するという不可解な現象ですが、ネットで事例がチラホラ。
com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver
のClassNotFoundExceptionです。
こちらはAndroidの不要コードを削除する機能(ProGuard)の問題で、当該クラスの削除抑制を指示することで対応可能なようです。configに追加オプションを書けばいいらしいのですが、R8を指定している場合も、互換があるので同じで良さそうです。
以下のオプションを追記します。
ココを参考にさせてもらって、aabファイルが出来たまでは良かったのですが、いざPlay Consoleで登録して公開後、手持ちのスマホでダウンロードしてみたら、インストールはできたものの、起動直後に「問題が発生したため、XXXXを終了します。」となってアプリが起動しない。
先週公開されたXamarin 10.1 preview releaseでは、ようやくIDEがAndroid App Bundleに対応し、アーカイブ機能も対応したようです。もうちょっと待とうかな。10月中にAndroid App Bundleでバージョンアップ版を公開したいのですが…。
Android9対応期限である11月1日の前にバージョンアップ版を公開したいので原因調査してなんとか対応させることにしました。まずはVisual Studioを16.3.5にアップデートし、Xamarinを10.0に。Androidオプションにaapt2の設定が出現しました。
csprojでAndroidPackageFormatをaabに設定すれば、強制的にaapt2がtrueに設定されるらしいのですが。
ということで、再度msbuildを実行。aabファイルができましたが、これまでより若干サイズが大きい。さっそくPlay Consoleにアップロード。今度はいけるか?

ダメでした。
---
その後、クラッシュレポートのスタックトレースにヒントを発見。
resources/rawフォルダ内のファイルに対して、NotFoundExceptionが発生しているので、とりあえずrawフォルダとリソースを参照するロジックをカット。これでエラーは回避できましたが、さらに広告絡みのエラーが出ました。インストール後の初回起動時のみエラーが発生するという不可解な現象ですが、ネットで事例がチラホラ。
com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver
のClassNotFoundExceptionです。
こちらはAndroidの不要コードを削除する機能(ProGuard)の問題で、当該クラスの削除抑制を指示することで対応可能なようです。configに追加オプションを書けばいいらしいのですが、R8を指定している場合も、互換があるので同じで良さそうです。
以下のオプションを追記します。
-keep class com.google.android.gms.** { *; }
-keep class com.google.firebase.** { *; }
Xamarinの場合はAndroidSDKのフォルダにある..\tools\proguard\proguard-android.txtに追記してやれば良いみたいです。
諦めかけましたが、何とかApp Bundle対応できてよかった。
ということで次はAndroid9(minSdkVersion=28)対応です。
SupportLibraryからAndroidXへの移行はどうしようかな…。
諦めかけましたが、何とかApp Bundle対応できてよかった。
ということで次はAndroid9(minSdkVersion=28)対応です。
SupportLibraryからAndroidXへの移行はどうしようかな…。
2019年10月20日日曜日
作業着を購入
2019年10月18日金曜日
札幌に変更
東京オリンピックのマラソンが札幌へ。
外を歩くだけで熱中症の危険があるのに、2時間も走り続けたら…。
選手の安全を考えると開催地変更でよかったと思います。
トライアスロンも沖縄とかに変更した方がいいのに。
外を歩くだけで熱中症の危険があるのに、2時間も走り続けたら…。
選手の安全を考えると開催地変更でよかったと思います。
トライアスロンも沖縄とかに変更した方がいいのに。
2019年10月17日木曜日
機能性ノンアルコールビール
アルコールをやめてから久しいですが、今年からよく飲んでいるのがALL-FREEです。
機能性食品というのが流行っていますが、お腹の周りの脂肪を減らす、キリンのカラダFREEというノンアルコールビールを最近CMか何かで知りました。
飲むだけでお腹の脂肪が減る!?
なぜお腹の脂肪だけ?とか色々不思議なのですが、毎日1本12週間飲むと内臓脂肪と皮下脂肪が減るのだそうです。
10月15日から販売開始だそうで、試飲してみたいですね。
美味しければALL-FREEの代わりに買ってもいいかな。
美味しければALL-FREEの代わりに買ってもいいかな。
2019年10月16日水曜日
みずほ銀行特典縮小
預金があれば月1回まで他行宛振込手数料が無料になる特典が廃止になってしまうようです。重宝していたのですが…。
口座を維持するのに手数料が必要になるような話もあるので、今後もちょっとずつ特典が減っていくと思われます。
一番上のクラスの特典は月3回まで無料ですが、うちには合わない条件です。
こういうことで庶民はイオン銀行などに流れていくので、銀行としては一般庶民の口座はお荷物だから減らしていきたいということなのかもしれません。
ということでイオン銀行に口座を作ることになりそうです。
口座を維持するのに手数料が必要になるような話もあるので、今後もちょっとずつ特典が減っていくと思われます。
一番上のクラスの特典は月3回まで無料ですが、うちには合わない条件です。
こういうことで庶民はイオン銀行などに流れていくので、銀行としては一般庶民の口座はお荷物だから減らしていきたいということなのかもしれません。
ということでイオン銀行に口座を作ることになりそうです。
2019年10月12日土曜日
台風終了
千葉は雨は大したことはなかったように思いますが、我が家の地域では最大風速が15mくらいでした。轟音やシャッターが揺れたりなど軽い恐怖を感じたので、瞬間風速50mなど発生したら凄いことになることが想像できました。
東電の停電情報によると数十万軒規模の停電が発生していますが、幸い我が家は停電はありませんでした。停電がなければ断水もないと思われますので、ライフラインには問題なさそうです。
数十年に一度の特別警報が乱発されて不安な思いはしましたが、この規模の台風でも特に問題がないことがわかりました。
数十年に一度の特別警報が乱発されて不安な思いはしましたが、この規模の台風でも特に問題がないことがわかりました。
夜が明けてみないと被害の全貌はわかりませんが、我が家も見回りをしないと。
次の台風20号が生まれそうですが、日本には来ない予測のようです。
2019年10月11日金曜日
超大型台風襲来
今週末の台風襲来で、近所のスーパーから水とカップ麺が消えました。
テレビで3日分の備蓄があった方がいいと不安を煽る報道がされた影響でしょうか。
500mlのペットボトル水を全て買い物カゴに入れてる人もいたくらいなので、今日、明日もし入荷されてもすぐになくなりそうです。価格が高騰したりして。
我が家もこういうことになる度に備蓄が必要だと思うのですが、喉元過ぎればなんとやらで。
テレビで3日分の備蓄があった方がいいと不安を煽る報道がされた影響でしょうか。
500mlのペットボトル水を全て買い物カゴに入れてる人もいたくらいなので、今日、明日もし入荷されてもすぐになくなりそうです。価格が高騰したりして。
我が家もこういうことになる度に備蓄が必要だと思うのですが、喉元過ぎればなんとやらで。
2019年10月9日水曜日
MPOW M5リセット
このBluetooth完全ワイヤレスイヤホンは、左右どちらもBluetooth接続機能を持っていて、左右を別々の機器と接続したりできます。
左だけで使ったり、右だけで使ったりもできます。
ただし、左右のペアリングができなくなったり、自動接続がうまくいかなくなったりすることがあるので、そんな時はリセットで初期状態に戻せます。
マニュアルには書いていないのですが、ケースに戻してイヤホンの電源がOFFになっている状態で、本体のボタンを10秒くらい長押しするとリセットされ、工場出荷時の状態になるようです。左右とも同じようにリセットできます。
左だけで使ったり、右だけで使ったりもできます。
ただし、左右のペアリングができなくなったり、自動接続がうまくいかなくなったりすることがあるので、そんな時はリセットで初期状態に戻せます。
マニュアルには書いていないのですが、ケースに戻してイヤホンの電源がOFFになっている状態で、本体のボタンを10秒くらい長押しするとリセットされ、工場出荷時の状態になるようです。左右とも同じようにリセットできます。
2019年10月5日土曜日
今年最後のトンボ観察
2019年9月28日土曜日
ホンダシャトルに自転車3台
折り畳み自転車を3台、初めて積んでみました。
荷室が広いので余裕だと思っていたのですが…。

予想外に超ギリギリでした。入れ方をかなり工夫しないとハッチが閉まらないです。
その原因は2つ。

1つめ。Xグレード以上に標準装備の後部座席後ろにあるマルチユースバスケット。
これが干渉します。
2つめ。後部座席が前後に調節できず、リクライニングも1段階しか調節できない。
この2つの相互作用で、シエンタでは余裕だった折り畳み自転車を縦に3台で積み込むことができないのです。でもなんとか乗って良かった…。
フックを掛けるリング4か所にあるので、タイダウンベルトでしっかり固定できるのは良いです。本日は時間があまり無かったので、もう少し入れ方を工夫して縦に入らないか試したみたいと思いますが。
荷室が広いので余裕だと思っていたのですが…。

予想外に超ギリギリでした。入れ方をかなり工夫しないとハッチが閉まらないです。
その原因は2つ。

1つめ。Xグレード以上に標準装備の後部座席後ろにあるマルチユースバスケット。
これが干渉します。
2つめ。後部座席が前後に調節できず、リクライニングも1段階しか調節できない。
この2つの相互作用で、シエンタでは余裕だった折り畳み自転車を縦に3台で積み込むことができないのです。でもなんとか乗って良かった…。
フックを掛けるリング4か所にあるので、タイダウンベルトでしっかり固定できるのは良いです。本日は時間があまり無かったので、もう少し入れ方を工夫して縦に入らないか試したみたいと思いますが。
2019年9月24日火曜日
クレバーシャープはもう古い!?
新発売された包丁研ぎ、その名も…
バイエルンエッジ
なんだかごっつくなって新登場したようです。
押し付けて引く従来の研ぎ器は刃物を壊しますが、コレなら大丈夫!とのこと。
現地では20$で売ってますが、日本の販売代理店を通すと8000円くらいになります。
今朝テレビショッピングで今から30分間3000円で売りますってやってましたが。
うちにはまだ新品のクレバーシャープが予備品として1個あるし、なんかデカくて邪魔そう…。
バイエルンエッジ
なんだかごっつくなって新登場したようです。
押し付けて引く従来の研ぎ器は刃物を壊しますが、コレなら大丈夫!とのこと。
現地では20$で売ってますが、日本の販売代理店を通すと8000円くらいになります。
今朝テレビショッピングで今から30分間3000円で売りますってやってましたが。
うちにはまだ新品のクレバーシャープが予備品として1個あるし、なんかデカくて邪魔そう…。
2019年9月21日土曜日
MPOW M5を追加購入
先日購入した完全ワイヤレスイヤホン。
奥さんも欲しいということで、もう1個購入しました。
以前から家事の時に欲しいとネックストラップ型のワイヤレスイヤホンで首をおかしくして、しばらく辛い思いをした奥さんですが、M5は大丈夫そうとのこと。
カナル型(耳栓型)のイヤホンなので、周りの音を遮断して掃除機をしながらでもよく聞こえるのです。
片側だけでも使えるので、ある程度外の音を聞きながらといった使い方も可能です。
マイクも付いているので、使用中に電話がかかってきたら、イヤホン本体のスイッチを押せば、着信して通話もできます。
奥さんも欲しいということで、もう1個購入しました。
以前から家事の時に欲しいとネックストラップ型のワイヤレスイヤホンで首をおかしくして、しばらく辛い思いをした奥さんですが、M5は大丈夫そうとのこと。
カナル型(耳栓型)のイヤホンなので、周りの音を遮断して掃除機をしながらでもよく聞こえるのです。
片側だけでも使えるので、ある程度外の音を聞きながらといった使い方も可能です。
マイクも付いているので、使用中に電話がかかってきたら、イヤホン本体のスイッチを押せば、着信して通話もできます。
2019年9月20日金曜日
1ヵ月半ぶりの里山
千葉は台風で大きな被害を受けましたが、いつもの里山がどうなっているか見てきました。保護活動の代表者からは大きな被害はなかったと聞いていたのですが、台風の影響で荒れていました。

道に大きな倒木が。この先は引き返そうかと思うほど、道が塞がれていました。
頭上に注意しながら現地に到着。
老熟したノシメトンボとハグロトンボ、シオカラトンボがちらほら。さすがにオニヤンマの姿はありません。1時間ほど散策。
帰り際にようやく高所を飛ぶヤンマを発見。お腹に白い部分があるので、おそらくギンヤンマと思われます。結局ヤンマは捕獲観察できませんでした。
歩けば少し汗ばむ程度暑さでしたが、久しぶりこともあり、楽しい時間でした。


道に大きな倒木が。この先は引き返そうかと思うほど、道が塞がれていました。
頭上に注意しながら現地に到着。
老熟したノシメトンボとハグロトンボ、シオカラトンボがちらほら。さすがにオニヤンマの姿はありません。1時間ほど散策。
帰り際にようやく高所を飛ぶヤンマを発見。お腹に白い部分があるので、おそらくギンヤンマと思われます。結局ヤンマは捕獲観察できませんでした。
歩けば少し汗ばむ程度暑さでしたが、久しぶりこともあり、楽しい時間でした。

2019年9月16日月曜日
軽井沢のクワガタ
息子はクワガタを見つける気満々だったのですが、この辺りは標高も高く、クヌギが全くないので、採集は難しかったです。
標高のある場所では、ハルニレ、ミズナラなどが樹液を出す甲虫が集まる木らしいのですが、木が多すぎて探すのは難しいです。地元のガイドさんの話では、夜懐中電灯などに飛び込んでくるらしいので、灯火採集でないと見つけるのは相当運がよくないと無理そうです。
期待していた森では全くクワガタを目にすることはなく、このまま終了かと思ったのですが、帰路に着く前に立ち寄った商業施設の脇に、息子は目ざとくヤナギ林を発見。
チェックしたいというので、付き合って探してみました。
直ぐに樹皮が剥がれた所にクワガタを発見。

スジクワガタでした。
勢いづいた息子は、ヤナギをどんどん蹴ってチェックしていきます。
そのうちの1本からポロンと落ちてきました。

小さいですがアカアシクワガタです。合計3頭落ちてきました。
一番大きなアカアシのオスだけ飼育するため持ち帰りです。アカアシクワガタは越冬するらしいです。
息子が飼育するクワガタは、ミヤマクワガタ♂2頭、ヒラタクワガタ、アカアシクワガタの4頭になりました。みんな元気にしています。
標高のある場所では、ハルニレ、ミズナラなどが樹液を出す甲虫が集まる木らしいのですが、木が多すぎて探すのは難しいです。地元のガイドさんの話では、夜懐中電灯などに飛び込んでくるらしいので、灯火採集でないと見つけるのは相当運がよくないと無理そうです。
期待していた森では全くクワガタを目にすることはなく、このまま終了かと思ったのですが、帰路に着く前に立ち寄った商業施設の脇に、息子は目ざとくヤナギ林を発見。
チェックしたいというので、付き合って探してみました。
直ぐに樹皮が剥がれた所にクワガタを発見。

スジクワガタでした。
勢いづいた息子は、ヤナギをどんどん蹴ってチェックしていきます。
そのうちの1本からポロンと落ちてきました。

小さいですがアカアシクワガタです。合計3頭落ちてきました。
一番大きなアカアシのオスだけ飼育するため持ち帰りです。アカアシクワガタは越冬するらしいです。
息子が飼育するクワガタは、ミヤマクワガタ♂2頭、ヒラタクワガタ、アカアシクワガタの4頭になりました。みんな元気にしています。
登録:
投稿 (Atom)



