- 1. AndroidでUIへのイベント通知としてSharedFlowとChannelを上手に使い分ける
- 2. Kotlin basicタイプで初回起動時にやらないとビルドエラーになること
- 3. HUAWEI Band 6(スマートウォッチ)でAndroidのLINE着信通知を受け取る方法
- 4. TargetSDK 30対応中にハマったこと
- 5. flutterのFriendlyChat(codelabs)をAPI操作にする
- 6. アイコン作成等のツールリンク集
- 7. ZXing-android-embedded QRコードリーダーの、RegisterActivityResultとKotlin対応
- 8. 【Jetpack Compose】Stateと再Composeの仕組みを検証してみた
- 9. コマンドでdetektをかける
- 10. コマンドでcheckstyleをかける
- 11. RE: AndroidでFlowをrepeatOnLifecycleでcollectするのをちょっとだけ楽にする
- 12. Navigation SDK v2 for Androidを試してみる (いじってみる編)
- 13. Airtestでほぼ円状にスワイプしてみる
- 14. 五百円貨幣潜像Androidアプリ
- 15. Android開発チュートリアル翻訳1(フランクに)
- 16. 暗黙的な内部の Intentを解決したい
- 17. `Run flutter doctor –android-licenses to accept the SDK licenses.` が上手く行かなった時のtips
- 18. Navigation SDK v2 for Androidを試してみる (中身を見る編)
- 19. JetpackComposeのEffect系関数一覧
- 20. Flutterの開発環境構築方法(Mac)
AndroidでUIへのイベント通知としてSharedFlowとChannelを上手に使い分ける
## 前置き
AndroidでUIへイベントを通知する方法としては最近LiveDataよりもよく[SharedFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow)を使う方法が紹介されていると思います。
Kotlin標準の言語機能で実現できるので今後もデファクトスタンダードになっていくと感じています。
シンプルな例ですが、下記のようなコードを書くことになると思います。“`kotlin:Activity
class CounterActivity : AppCompatActivity() {
private val counterViewModel = // getViewModel()override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
Kotlin basicタイプで初回起動時にやらないとビルドエラーになること
# 起きた問題
## One or more issues found when checking AAR metadata values:
こんなエラー文が表示されます。
“`
The minCompileSdk (31) specified in a
dependency’s AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module’s compileSdkVersion (android-30).
Dependency: androidx.core:core-ktx:1.7.0.
AAR metadata file: /***/.gradle/caches/transforms-3/43709c06b605244e4fcdef6e5a127101/transformed/jetified-core-ktx-1.7.0/META-INF/com/android/build/gradle/aar-metadata.properties
HUAWEI Band 6(スマートウォッチ)でAndroidのLINE着信通知を受け取る方法
:::note info
当方はHUAWEI Band 6(Ver 11.1.2.40)とPixel 4a(Ver 12)の連携の紹介記事です。
:::# 課題
HUAWEI Band 6でLINEの着信通知を受け取れないこと。
厳密には全く通知を受け取れないわけではなく、コール終了時の不在着信通知が届く。不在着信通知を見て電話を折り返せば問題ないのかもしれない。
でも不在着信の通知を見るたびに相手の時間を30秒ほど無駄にしてしまったことに罪悪感が残る。(**自分にとって最大の課題はこの罪悪感だった**)# 結論
標準設定ではHUAWEI Band 6で**LINEの着信通知を受け取ることができない**ので、LINE着信でMacroDroidの通知を発火して**MacroDroidの通知を受け取る。**ht
TargetSDK 30対応中にハマったこと
# はじめに
CYBIRDエンジニア Advent Calendar 4日目担当の@chikako_ikedaです。
3日目は@kyorokyoroの[アプリの通信回数を減らすためにやったこと](https://qiita.com/kyorokyoro/private/3d357661613a6cb89d3e)でした。
最近は速い通信規格が出てきてあまり気にならないこともありますが、アプリの通信回数はアプリの操作感が変わるので、「回数を減らす」というのは大事ですよね。# 概要
2021/11/01からGoogle PlayではTargetSDKをAPI Level 30(Android11)へ対応することが必須となりました。
CYBIRDのアプリでも順次対応を進めているところですが、こんなところでハマったよ、ということで、
APKの署名スキーマv2への対応について紹介しようかと思います。
※以下、「TargetSDKをAPI Level 30(Android11)へ対応」は「TargetSDK30対応」と記載します。# 目次
1. 発端:出来上がったAPKがインストールでき
flutterのFriendlyChat(codelabs)をAPI操作にする
flutter勉強のためにcodelabs(https://codelabs.developers.google.com/codelabs/flutter)
をやっていたのですが、こちらで作成するチャットアプリのメッセージが腹持ちだったため、apiで管理することができるようにしました。
サーバー側はbeegoとgormで作成してます。
参考: https://qiita.com/yufuku/items/dff8597e00fc0bdc6864今回作成したflutterコード: https://github.com/fu-yuta/flutter_friendly_chat/tree/chat_api_access
# 環境
“`shell
$ flutter doctor -v
[✓] Flutter (Channel stable, 2.5.3, on macOS 11.2.3 20D91 darwin-x64, locale ja-JP)
• Flutter version 2.5.3 at /usr/local/flutter
• Upstream re
アイコン作成等のツールリンク集
たまたまどこかで知り、便利じゃん!と思ってブックマークに入れたは良いが、
本当に必要なときに結局どこにしまったか忘れているので、
個人的にたまに使ったりするツール系のリンクを備忘録としてまとめてみました。# Android/iOS
– AndroidAssetStudio(各種アイコン作成)
https://romannurik.github.io/AndroidAssetStudio/
– MakeAppIcon(アイコン作成)
https://makeappicon.com/
– resizeappicon(アイコン作成)
https://resizeappicon.com/
– (Android用)BundleToolを使用してaabファイルを実機にインストール
https://apuridasuo.hatenablog.com/entry/2019/09/25/144546
# 画像系
– RemoveBackground(透過画像作成)
https://www.remove.bg/
– MethodDraw(SVGエディタ)
https://
ZXing-android-embedded QRコードリーダーの、RegisterActivityResultとKotlin対応
スマホで簡易にQRコードリーダーを動かしたいとき、ZXingというのがあります。それを含むパッケージに、https://github.com/journeyapps/zxing-android-embedded というのがあります。この秋に、それがRegisterActivityResult対応し、Integratorとか機能をDeprecateしました。
それを取り込むのにひと手間あったので、ここへ記録。
1.zxing-android-embedded は、Javaコードしか提供していません。Kotlinほしい。Android StudioでそのSampleをコンバートすりゃいいのですが。ネットで調べた限り、まだ誰も載せていないので、以下にKotlinでのスケルトン載せておきます。これだけ。非常にSimple。
2.以前動いていたコードが、もう動かない、原因を調べたところ、ManifestでActivity属性で、android:noHistory=”true” という変更をしたのが邪魔していた。なんでか、理解していない。誰か教えてくれ。
“`Kotlin
import
【Jetpack Compose】Stateと再Composeの仕組みを検証してみた
この記事は[andfactoryアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/andfactory)の3日目の記事です?
## はじめに
Jetpack Composeを書いていて、State
を更新すると画面が更新されると思うのですが、その際に再Compose処理が発生します。再Compose処理はドキュメントによると「入力が変化している」部分で発生し、そうでない部分は回避してくれるようです。 ですが、じゃあ具体的にどのように書いたら回避されて、どう書いていたら回避されないのかがいまいち理解できていませんでした。
特に、ViewModelで保持するFlowやLiveDataのObserve場所です。自分は基本的に、ViewModelの値をComposeの上位でobserveして、他の下位Composeはシンプルな値を引数をとるように実装しています。
その場合、ViewModelの値が変わるたびに全体が再Composeされるのか、よしなになってくれるのかがわからなかったので、今回実際にコードを書いて試してみるこ
コマンドでdetektをかける
https://detekt.github.io/detekt/cli.html
gradleで入れるのが面倒だったのでとりあえずCLI版を入れてしまう
“` bash
curl -sSLO https://github.com/detekt/detekt/releases/download/v1.18.1/detekt-cli-1.18.1-all.jar
“`以下のコマンドでテキスト形式で結果を出力できる
“`
java -jar detekt-cli-1.18.1-all.jar -r txt:detekt.txt
“`
コマンドでcheckstyleをかける
https://github.com/checkstyle/checkstyle/releases/
上からcheckstyleのjarをダウンロードする
循環複雑度をシュッとかけるためのxml
“` xml
“`おもむろに実行してみる
“` bash
ja
RE: AndroidでFlowをrepeatOnLifecycleでcollectするのをちょっとだけ楽にする
## 前置き
以前 [AndroidでFlow
をcollectするのをちょっとだけ楽にする](https://qiita.com/KazaKago/items/b24b457d8f6bf5bcf591)という記事を書いたのですが、 `Flow ` をcollectする際には `launchWhenStarted` ではなく代わりに `repeatOnLifecycle` を使いましょうというお達しが出ているのでそれに合わせて記事の内容も書き直してみます。 ## 課題
[公式の案内](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow)でもあるとおり、AndroidのActivity/Fragmentで`Flow
`を `collect` する場合には下記のいずれかの記述をする必要があります。 “`kotlin:Activity
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch
Navigation SDK v2 for Androidを試してみる (いじってみる編)
## はじめに
[前回](https://qiita.com/OttyLab/private/d8cb612c4265a6a686fd)サンプルの中身について詳しく見ました。今回はこれを踏まえてナビゲーションアプリとしての使い勝手を向上させたいと思います。
## 注意事項
– この記事では2021/11/25現在で最新の`v2.0.2`を使用します。
– [Pricing](https://docs.mapbox.com/android/navigation/guides/pricing/)にご注意ください。特にMAUは100まで無料ですが、[ここに記載](https://docs.mapbox.com/android/navigation/guides/pricing/#how-are-unique-users-counted)されているようにアプリケーションの削除・インストールでカウントアップします。デバッグ中に何度も削除・インストールを繰り返すと無料枠を超える可能性があります。## 変更点
以下の点について変更を行います。
– GPS
– 日本語(多言語)サポート
Airtestでほぼ円状にスワイプしてみる
#先にコードを掲載
ほぼ円状にスワイプ
“`Swipe_in_an_almost_circle.py
# -*- encoding=utf8 -*-
from airtest.core.api import *
import math”’
x , y はスマホ内の座標
radiusは描く円の半径距離
”’x , y = 540 , 1110
radius = 300list = []
for i in range(39):
tuple = (x + math.sin(i/6) * radius),(y + math.cos(i/6) * radius)
list.append(tuple)device().maxtouch.swipe_along(list,duration=0.02, steps=3)
“`#Airtestってなんだ?
画像認識やUIの階層化により、ゲームテストをサポートする自動化フレームワークです。
簡単に言っ
五百円貨幣潜像Androidアプリ
新しい五百円貨幣が、令和3年11月1日より発行されました。ほんの一ヶ月前ですね。
[解説!新しい500円貨:財務省] (https://www.mof.go.jp/policy/currency/bill/20210816.html)にて解説があります。
そうすぐに新貨を手にすることはないかもしれませんが、
そうか、君は いずれ 居なくなるのか…。
そういえば白銀色に輝く初代五百円貨幣(昭和57年4月1日発行)もいつしか見かけることも少なくなり、
平成12年8月1日にやや黄み掛かった輝きを持つ二代目が登場して。
しかして今回の三代目は二色三層構造。まるで源氏将軍の賴朝、賴家、實朝のようではないですか。源氏を退け、栄華を誇った平氏一門。しかれどその平氏もまた壇ノ浦にて滅亡。鎌倉幕府も源氏が将軍職に就けたのはこの三代まで。
ああ諸行無常。盛者必衰。
えっと。なんの話でしたっけ?そうだ五百円貨幣についてでした。
そうそう!お
Android開発チュートリアル翻訳1(フランクに)
※少し、いや、かなり意訳が含まれている部分もあります。
#1.紹介
このコードラボではエミュレータとか実機上で動く`Hello World!`って表示するアプリを作って実行するよ!#前提知識はこうだ!
– Android StudioみたいなIDE(統合開発環境)を使ったオブジェクト指向アプリの一般的なソフトウェア開発の流れを知っている。
– 少なくとも一年以上のオブジェクト指向プログラミングの経験があって、さらにkotlinとjava(javascriptじゃないんだからね!!!)について理解している。#学習内容だ!
– Android Studioでの基本的なアンドロイドアプリのビルドの仕方。
– テンプレートからのアンドロイドプロジェクトの作り方
– アンドロイドのメジャーな部品のみっけかた
– エミュレータと実機でのビルドの仕方# やることだyo!
– helloworldってゆうデフォルトのアプリの作成
– PC上で実行できるようにエミュレータの作成
– エミュレータと実機でHelloWolrdのビルド
– プロジェクトのレイアウトを確認する。
– Androi
暗黙的な内部の Intentを解決したい
Android Studioにて開発を行っております。
課金部分のテストを行うために内部テストとしてリリースを行おうとしておりますが、
セキュリティと信頼性の項目にて「暗黙的な内部の Intent」としてエラーが返ってきております。こちら該当コード箇所が以下になります。
“`
Intent intent = new Intent();
intent.setAction(“hoge.hoge.hoge”);
intent.putExtra(“status”, 1);
sendBroadcast(intent);
“`AndroidManifest.xmlにて受信側の宣言として
“`
“`というようにブロードキャストレシーバーを宣言しました。
しか
`Run flutter doctor –android-licenses to accept the SDK licenses.` が上手く行かなった時のtips
### `flutter doctor`した時にこのようなエラーが出るケースがある
“`
❯ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.5.2, on macOS 11.6 20G165 darwin-arm, locale ja-JP)
[!] Android toolchain – develop for Android devices (Android SDK version 31.0.0)
✗ Android license status unknown.
Run `flutter doctor –android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[✓] Xcod
Navigation SDK v2 for Androidを試してみる (中身を見る編)
## はじめに
[前回](https://qiita.com/OttyLab/private/83185cca45ee9f2f406d)Navigation SDK v2 for Androidのサンプルをコピペで動かしてみました。今回はコードの中を見て、どのような処理が行われているかを追ってみます。## 注意事項
– この記事では2021/11/25現在で最新の`v2.0.2`を使用します。
– [Pricing](https://docs.mapbox.com/android/navigation/guides/pricing/)にご注意ください。特にMAUは100まで無料ですが、[ここに記載](https://docs.mapbox.com/android/navigation/guides/pricing/#how-are-unique-users-counted)されているようにアプリケーションの削除・インストールでカウントアップします。デバッグ中に何度も削除・インストールを繰り返すと無料枠を超える可能性があります。## 概観
サンプルで使用してる機能の概観は以
JetpackComposeのEffect系関数一覧
# はじめに
Google公式ドキュメントで説明されているComposeのEffect系関数について、端的にまとめました。https://developer.android.com/jetpack/compose/side-effects
## Effect系関数の役割・目的とは?
Composable関数の実行したときの副作用(Composable関数を実行したことによる、Composable関数外への影響)を定義するための関数。
(Google公式ドキュメント上では「Side-Effect APIs」と表現されている)# LaunchedEffect
「非同期で実行される副作用」を定義する関数。LaunchedEffect関数にkeyを設定することで、Recomposeに伴うCoroutineの再起動を抑止することができる。
以下の処理の場合、remember関数でsnackbarHostStateが生成されているため、snackbarHostStateはRecomposeを跨いで生存する。つまり、このsnackbarHostStateをkeyとしているLaunch
Flutterの開発環境構築方法(Mac)
## はじめに
本記事は [エムティーアイ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/mti) の1日目の記事です。
Flutterの開発環境を構築する方法を紹介します。
ちなみに業務ではFlutterを一切触っていません。
昨日行われた [FlutterKaigi](https://flutterkaigi.jp/#/) のハンズオンで初めてFlutterを触り、その準備時に行ったことを残します。## 環境
– OS:macOS Big Sur 11.6
– ハード:MacBook Air (M1, 2020)
– Flutter:2.5.1## 開発環境の構築
公式ドキュメントに沿ってFlutterの開発環境を構築します。
https://docs.flutter.dev/get-started/install/macos
### Flutter SDKのダウンロード
以下のページから、使いたいバージョンのFlutter SDKをダウンロードします。
https://docs.