- 1. Jetpack Compose 勉強記録その3 (Jetpack Compose チュートリアル レッスン:4)
- 2. コルーチンとチャネル入門#7
- 3. [Android] 簡単にSnackBarの背景色を変えてみる
- 4. 【Android, Kotlin】Timerを使い一定間隔で一定処理を行う
- 5. コルーチンとチャネル入門#6
- 6. Androidでボタンを一定時間無効にする方法
- 7. AndroidのEditTextのつまみ部分の色をする方法
- 8. 【Android】manifestOutputDirectoryでエラーが出た時の対処法
- 9. .NET MAUIとMAUI Blazor Appで生体認証(指紋認証)を実装してみる(Android)
- 10. Jetpack composeでCoordinatorLayoutを実現する
- 11. Android の Apk リバースエンジニアリング
- 12. タスク管理アプリを作ろう
- 13. スクロール可能なDialogを作成するDiallog+ConstraintLayout+ScrollView
- 14. JavaからKotlinに変えてみる
- 15. JetpackComposeのRippleダサくない?
- 16. Android12でBeaconが取得できない
- 17. UnityのAndroidビルド手順
- 18. [Android] 丸角Buttonを簡単に作ってみる
- 19. 【Android】OpenCVでUnsupported format or combination of formatsとエラーが出た時の対処法
- 20. Fireタブレットをスリープさせない(画面も暗くさせない)方法
Jetpack Compose 勉強記録その3 (Jetpack Compose チュートリアル レッスン:4)
Jetpack Compose 勉強記録その3です。
# 今回の内容
https://developer.android.com/jetpack/compose/tutorial?hl=ja
チュートリアルの続きをやっていきます。
今回はレッスン 4:リストとアニメーションをやっていきます。
リストは必ず使うと言っても過言では無いので、気になります。
# メッセージのリストを作成する
“`MainActivity.kt
@Composable
fun MessageCard(messages: List) {
LazyColumn {
items(messages) { message ->
CardItem(message)
}
}
}
“`“LazyColumn“ “LazyRow“
こちらを使用する事でリストを表示する事が出来るみたいです。
“LazyColumn“は縦のリストです。“LazyRow“は横のリストです。
“items“に渡
コルーチンとチャネル入門#7
ソース記事は[こちら](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/07_Progress)
# 進捗の表示
いくつかのリポジトリの情報はかなり早くロードされるにもかかわらず、ユーザーはすべてのデータが一旦ロードされると結果リストを見るだけである。それまでは、ロード中アイコンが進捗を表示するが、どのコントリビューターがすでにロードされているのかという、現在の状態についての情報がない。
中間の結果を早めに見せ、それぞれのリポジトリのデータをロードした後で、すべてのコントリビューターを表示することができるかもしれない。

この機能を実装するには、中間の状態について呼び出されるコールバックとして、UIを更新す
[Android] 簡単にSnackBarの背景色を変えてみる
# 初めに
今回SnackBarの背景色を変更したい時に悩むことがあったのでここにメモとして残そうと思う。
# 動作の内容
“`kotlin
//MainActivity.ktval snackbar = Snackbar.make(findViewById(android.R.id.content),”タイトルが入力されていません。”, Snackbar.LENGTH_SHORT)
//R.color.errorはColor.xmlを参照する。
//詳しくは下記URLまで、
snackbar.view.setBackgroundResource(R.color.error)
snackbar.show()
“`##### Color.xmlについて
https://qii
【Android, Kotlin】Timerを使い一定間隔で一定処理を行う
## はじめに
IT企業入社3か月目の初学者のアウトプットです。## やりたいこと
Timerを使って、一定間隔で一定の処理を行う
(TimerTaskの内容を繰り返し行う)## 手順
様々な書き方があると思いますが本記事ではシンプルな書き方を記述します。
1.Timerオブジェクト作成
“`kotlin
val timer = Timer()
“`
2.TimerTaskクラスに繰り返したい処理を記載
“`kotlin
private val timerTask = task()class task : TimerTask() {
override fun run() {
println(“hello”)
}
}
“`
3.scheduleAtFixedRateメソッドを記載
“`kotlin
scheduleAtFixedRate(TimerTask task, long delay, long period)
“`
第1引数:繰り返しを実行するクラス
第2,3引数:Long型
## サンプルコード“`kotlin:MainAc
コルーチンとチャネル入門#6
ソース記事は[こちら](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/06_StructuredConcurrency)
# 構造化された並列性
コルーチンスコープは、異なるコルーチンの間の構造と親子関係の責務を担っている。新しいコルーチンは常にスコープの内側で開始する。コルーチンコンテキストには、コルーチンのカスタム名や、コルーチンがスケジュールされるスレッドを指定するディスパッチャーのような、与えられたコルーチンを実行するために使う追加の技術情報が格納されている。
`launch`、`async`、`runBlocking`が新しいコルーチンを開始するために使われると、対応するスコープが作られる。これらすべての関数は、引数としてレシーバーを持つラムダを取り、暗黙的なレシーバ型は`CoroutineScope`である。
“`Kotlin
launch { /* this: CoroutineScope */
}
“`
新しいコルーチンは、スコープの内側でのみ
Androidでボタンを一定時間無効にする方法
# 概要
Androidのボタンの連打を防ぐためボタンが押されたら一定時間無効化したいことがあった。
そのため、ボタンを一定時間無効にする方法を記載する。
言語はKotlin# ボタンを一定時間無効にする方法
以下のような関数を定義する。
“`Kotlin
// Buttonを指定mill秒の間無効化する
fun disableButtonFixedTime(button: Button, millSec: Long) {
button.isEnabled = false
Handler().postDelayed({ button.isEnabled = true }, millSec)
}
“`ボタンを押したときに上記の関数を呼び出すことによって指定時間ボタンを無効化することができる。
“`Kotlin
button.setOnClickListener {
disableButtonFixedTime(it, 1000)
something() // ボタンを押したときにやりたい処理
}
“`
AndroidのEditTextのつまみ部分の色をする方法
# 概要
AndroidのEditTextのつまみ部分の色を変更したいときがあった。
変更が反映されず少し手こずったので忘備録としてやり方を記載する。# EditTextのつまみ部分の色をする方法
styleで`colorControlActivated`に変更したい色を定義する。
“`styles.xml“`
レイアウトのTextViweのthemeにstyleを反映させるとつまみの色が変化する。
`style=”@style/CustomTextSelectionHandle”`としてもつまみ部分の色は変更されず、themeでないと反映されなかった
“`layout.xml
【Android】manifestOutputDirectoryでエラーが出た時の対処法
# 概要
下記のようなエラーがでたのでその対処法。
“`
Could not get unknown property ‘manifestOutputDirectory’
“`# 対処法
下記コードを“`manifestOutputDirectory“`使用部分の直前に追加
“`
def manifestOutputDirectory = multiApkManifestOutputDirectory.asFile.get()
“`
(もしくは、“`$manifestOutputDirectory“`を“`src/main“`に置き換える)[参考サイト](https://stackoverflow.com/questions/64389372/could-not-get-unknown-property-manifestoutputdirectory)
.NET MAUIとMAUI Blazor Appで生体認証(指紋認証)を実装してみる(Android)
# はじめに
Build 2022 にて現行のクロスプラットフォームである Xamarin.Forms の後継として、.NET MAUI(.NET Multi-platform App UI)が発表された。

https://dotnet.microsoft.com/en-us/apps/maui
ただし、リリースされたばかりということもあり、生体認証(指紋認証)を実装する知見があまりネットにはなかったため、備忘録としてまとめることにした。
以下のものを準備
– Visual Studio 2022 Preview
– [MAUIの開発ワークロードをきちんとインストール](https://docs.microsoft.com/en-us/dotnet/maui/get-started/first-app?pivots=device
Jetpack composeでCoordinatorLayoutを実現する
NestedScrollConnectionを使ってスクロール可能な要素をスクロールした際のコールバックを受け取って、要素の高さを計算すればOK
“` kotlin
@Composable
fun Screen() {
val density = LocalDensity.current
val defaultToolBarHeight = 120.dp
val minToolBarHeight = 48.dp
var toolBarHeight by remember {
mutableStateOf(defaultToolBarHeight)
}val nestedScrollConnection = remember {
object : NestedScrollConnection {
override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
Android の Apk リバースエンジニアリング
:::note alert
警告
リバースエンジニアリングは知的財産権に関連しますので注意して下さい。
:::バイナリ形式のAndroidアプリパッケージ(.apk)をリバースエンジニアリングを使って判読可能なテキストファイル(ソースコード)に変換します。
用途により使用するツールを使い分けます。
**(1) Manifest.xmlなどの設定ファイルを参照**
* Apktool (classファイルをデコンパイルした結果はsmali形式となります。)**(2) ソースコード(.Java)を参照**
* dex2jar
* JD(Java Decompiler)### ■ apkファイルの構成
* AndroidManifest.xml
* META-INF(署名ファイル)
* res(画像等のリソース)
* classes.dex(プログラム)
* resources.arsc(言語等のリソース)**例**
C:\StudioProjects\Hoge\app\build\outputs\apk\debug\app-debug.apkAndroi
タスク管理アプリを作ろう
# 1.はじめに
これまでに3つのAndroidStudio&Flutterを書いてきた。・環境構築方法の紹介
https://qiita.com/my1981/items/abe835e7241373713670・簡単なプロジェクトの設定と共有方法の紹介
https://qiita.com/my1981/items/ad307498ea7fd9837d47・エミュレータの言語設定をかえよう
https://qiita.com/my1981/items/bf75ec195b40b0930a58今回はflutterアプリの入門編としてタスク管理アプリを作成する。
# 2.タスク管理アプリを作ろう
## 2-1.完成イメージ
アプリの完成イメージと操作方法を説明する。
①プロジェクトを実行するとタスクの描画画面が開く。タスクを追加するためにプラスボタンを押す。
スクロール可能なDialogを作成するDiallog+ConstraintLayout+ScrollView
“Android dialog constraintlayout”などで調べると山のように出てくるので、ダイアログをいじろうとしたときにみんなぶつかるんだろうなあという感じです。
自分も先人たちと同じ轍を踏んだので、いつかの誰かの助けになれればと思います。# 前提
| ライブラリ | version |
|:-:|:-:|
|material|1.6.1|
|constraintlayout|2.1.4|# 要点
ScrollViewに`app:layout_constraintHeight=”wrap_content_constrained”`を指定するとよい。# コード
“`dialog_scrollable.xml
JavaからKotlinに変えてみる
## はじめに
?♂️「どうも運動通信社で働くAndroidエンジニアの明田です!
弊社では2021年11月頃からJavaで書かれたのAndroidプロジェクトをKotlinにゴリゴリ書き換えていっています!
Koltin化一緒に進めたいそこのあなた、この世界をKotlinにする運動にこぞってご参加してください!」※ Kotlin化に伴い得た知見や感想などを書いている記事になります。是非参考にしてください
## Kotlinとは
2017年のGoogleがKotlinを正式にAndroidの開発言語として発表されました。
KotlinはJVM(Java仮装マシン)をサポートしているため、Javaが動くところではどこでもKotlinが動きます。さらに、Javaが抱えている課題を解消しているのもKotlin化するメリットになります。
その導入の簡単さと、Javaとの親和性、既存プロジェクトへの導入リスクの低さが多くの企業のAndroid開発に採用されている要因ともなっています。↓Android以外にサーバーサイドとしてKoltinを導入している企業
https://q
JetpackComposeのRippleダサくない?
# 初めに
前回に引き続きJetpackComposeの記事を書いていこうと思います
今回はJetpackComposeを実装してる時に自分がこれ修正したいなぁって思って調べたものを備忘録として残しておきます### 本文
早速ですが、実は結構簡単なんですよね。
`Modifier`でタップの挙動を制御する時に設定する`clickable`に対して以下の設定を追加してあげればいいだけです“`kotlin
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(),
“`
`rememberRipple`内に`bounded`, `radius`,`color`を好きなように設定できます。
`bounded`は`false`を渡すことで領域を超えてエフェクトが発生します。
`radius`は大きさを指定することができ、`color`は`ripple`の色を変更することができます。### 最後に
JetpackComposeは非常に便利な分、まだ思った通り
Android12でBeaconが取得できない
# 結論
BLUETOOTH_SCANのパーミッションを要求する`AndroidManifest.xml`
“`
<-追加
UnityのAndroidビルド手順
UnityでAndroidビルドを作成しようとしたところエラーが大量に出て以下対応を行うと直りました。
# 環境
OS : Windows10
Unity バージョン : 2019.4.20f1
Android バージョン : 12
スマホ : Google Pixel 3a
Android Studio バージョン: 2021.2.1# スマホ側の設定
スマホの開発者モードを有効にし、デバッグモードをONにします。
1. 設定>デバイス情報へ進み、ビルド番号を7回連続でタップします。
[Android] 丸角Buttonを簡単に作ってみる
# はじめに
丸ボタンを作るときに、XMLを自分で作成してStyleを適応する方法などいろいろとあり、悩むときもあると思います。
そんな中、結構前になりますが、スタイルがparent=”Theme.MaterialComponents.DayNight.DarkActionBar”に変えたことにより、より便利なボタンの設定項目を使えるようになったらしい。
それを使ってみようと思う。Styleを自分で作らなくて見やすいコードを書こう!!
# 丸角ボタンを作る
### 内容
“`xml
【Android】OpenCVでUnsupported format or combination of formatsとエラーが出た時の対処法
# 概要
OpenCVのinpaintメソッドを使った際、下記のようなエラーが出た。
“`
Unsupported format or combination of formats (8-bit, 16-bit unsigned or 32-bit float 1-channel and 8-bit 3-channel input/output images are supported)
“`# 対策
メソッド実行前に、`cvtColor`で色変換を行えば解決した。
“`Kotlin
val src:Bitmap = //(省略)
val mask:Bitmap = //(省略)//元画像
val srcMat = Mat(src.width, src.height, CvType.CV_8UC3).also {
Utils.bitmapToMat(src, it, false)
Imgproc.cvtColor(it, it, Imgproc.COLOR_RGBA2RGB)
}//マスク画像
val maskMat = Mat(mask.width, mask
Fireタブレットをスリープさせない(画面も暗くさせない)方法
## はじめに
我が家では、Zabbixのダッシュボード画面をAmazon Fireタブレット(余っていたFire 7)上のブラウザにて常時表示させているのですが、どうしても一定時間経過すると画面が勝手に端末がスリープしてしまったり、画面が暗くなってしまったりして困っていました。
その問題を解決することができたので、その際のメモです。## まずはFireタブレットの標準機能を使っての対応
Fireタブレットの画面スリープするまでの時間は、標準では最長30分までしか設定できないようです。「設定」→「ディスプレイ」→「画面スリープ」
と進むと、最短15秒から最長30分が選択できます。## 開発オプション を使用しての追加設定
標準の設定画面では最長30分までしか設定できませんでしたが、**開発者オプション**を使用することによりスリープモードを無効にすることができます。
#### 開発者オプションを有効にする
「設定」→「端末オプション」→「シリアル番号」を数回タップ
これで、「開発者オプション」が表示されるようになります。
#### スリープモードにしない設定
「開発者オプシ