時刻をパラメータに使用する場合の実装メモ
時刻を扱う場合に、テスト性を持たせるための実装メモ。
インターフェースを介して時刻を実装してやる。
// Kotlin import java.util.* interface SystemClock { fun getTimeMillis(): Long fun getLocale(): Locale fun getTimeZone(): TimeZone } // 使う側の例 import your.package.SystemClock fun setTime(d: SystemClock) { ... } setTime(object : SystemClock { override fun getTimeMillis(): Long { TODO("Not yet implemented") } override fun getLocale(): Locale { TODO("Not yet implemented") } override fun getTimeZone(): TimeZone { TODO("Not yet implemented") } }
テストのときはエッジケースや定数を実装し、本番ではDate()等を実装すれば( ΦωΦ)σヨシッ!
OpenCV for AndroidでJPGから透過付きBitmapを生成するときのメモ
前後のつながりも何もないメモ。
Imgproc.cvtColorでグレースケールを生成するとき、引数にはImgproc.COLOR_RGBA2GRAYを設定すること。
Imgproc.COLOR_BGRA2GRAYを選択すると、後でsrcMat.copyTo(dstMat, mask)でマスクするときに背景の透過がうまく行われない。
(黒に置換される?)
これで3日くらい溶かした。
Android Studio 4.1 にOpenCV 4.5.0 をインポートするメモ
Android Studioのバージョン更新のためか、Qiitaや個人ブログの方法がそのままでは使えなかったのでメモ。
大筋は下記参照でいいと思うのでポイントだけ。
(まだインポートまでしかやってないけど←)
環境
- Android Studio 4.1
- OpenCV 4.5.0(4系以降ではあまり関係ないけど念のため)
現象
Import Module from SourceダイアログにModule nameが無い- デフォルトではモジュール名が
sdkとなるが、opencv等任意の名前に書き換える場合はsettings.gradleも修正する必要あり
ぱっとモジュール名を変更すると、Project Structureからモジュールの依存関係を追加するときにモジュールが見つからなくなるという地味なトラップがあった。
対応
File -> New -> Import Module
で表示されるダイアログには、Source directoryはあるがModule nameは無くなっている。
⇒インポート後に、手動でモジュール名とsettings.gradleを修正する
OpenCVをインポートするとき、指定するフォルダがsdkとなっているため、
Android Studioにインポート後もsdkという名前になっている。
任意の名前に書き換えるときはsettings.gradleを修正する必要がある。
include ':app' - include ':sdk' + include ':opencv' // ← モジュール名がsdkでインポートされるため、任意の名前に書き換え rootProject.name = "OpenCVSample"
とりあえずここまで。あとテストしてハマったら随時追記する。
