- 1. jetpack composeでcameraxとmlkitをつかってバーコード読み取り画面を実装するPart1
- 2. 【Android】バージョン分岐が必要な実装はCompat系の機能を使おう
- 3. Flutter ドロップダウンメニューのテンプレート
- 4. 【Android】RecyclerViewのイベントの実装
- 5. Androidアプリサンプルにおける単体テストのテストスコープについて調べてみた
- 6. Hilt の kapt を ksp にする
- 7. Androidでちょっとした動画を再生したいと言われたので10分で対応してみる
- 8. a-5-1-6.Realm DBの暗号化と暗号化キーの作成
- 9. Flutter Android: could not create task ‘ generatelockfiles’ エラーが表示された時。
- 10. KMPにおいて、gradleのlibsでエラーが表示される
- 11. はじめてのAndroidアプリ
- 12. Pixelのダウングレード方法
- 13. Android Studioについての個人メモ
- 14. 【Android】Hiltを使ってWorkerにDIする
- 15. 一生忘れる mac でのandroid ndkの場所
- 16. Unity Android/iOSでFCMの処理を拡張する方法
- 17. Android Studioにてgradle build時にCould not read workspace metadata from ~ のエラー
- 18. [Android/Jetpack Compose]Failed to resolve: の原因と解決方法
- 19. Appium環境構築(Android編)
- 20. Socialiteアプリのユーザーエクスペリエンス向上方法
jetpack composeでcameraxとmlkitをつかってバーコード読み取り画面を実装するPart1
# はじめに
今回からJetpackComposeでのバーコード読み取り機能を実装していきます。
### 本文
今回は、まず必要なライブラリたちを追加するところからです
最近はtomlでバージョン管理をするのが流行なのでそれにのってってやっていきます
“`kotlin
code-scanner = “18.3.0”
camerax = “1.4.0-beta01”codescanner = {module = “com.google.android.gms:play-services-mlkit-barcode-scanning”, version.ref = “code-scanner”}
camera = { module = “androidx.camera:camera-camera2”, version.ref = “camerax” }
camera-lifecycle = { module = “androidx.camera:camera-lifecycle”, version.ref = “camerax” }
camera-view = { module =
【Android】バージョン分岐が必要な実装はCompat系の機能を使おう
# はじめに
対応範囲は広いプロジェクトなどは、そのバージョンに合わせて分岐するのが面倒ですよね。
そういったケースで便利なのがCoreKtxライブラリが提供するCompat系の機能ですが、実はかなりの種類が定義されていて、バージョンの分岐が必要な実装には大体Compat系の実装が用意されていたりします。
そこで今回はCompat系の実装を使うことでバージョン分岐を省略可能な実装をいくつかご紹介したいと思います。# 準備
まず、Compat系の実装を使うには、以下ライブラリを導入する必要があります。“`app/build.gradle
dependencies {
implementation ‘androidx.core:core-ktx:1.13.1’
}
“`上記ライブラリは最新のプラットフォーム機能とAPIをターゲットにしつつ、古いデバイスもサポート可能となるライブラリです。
まさにバージョン分岐が必要なケースの為に用意されているようなライブラリですね。# その1:ServiceCompat
サービス周りは最近特に厳しくてバージョン分岐も激しくなりが
Flutter ドロップダウンメニューのテンプレート
# ドロップダウンメニュー (PopupMenuButton)のテンプレート
「…」を押すと出てくるメニュー
これです↓
コード
“`dart
PopupMenuButton(
onSelected: (String s){
switch(s){
case “del”:
break;case “edit”:
break;
}
【Android】RecyclerViewのイベントの実装
## はじめに
RecyclerViewで表示しているリストのタップイベントを実装しようとした時に、イベントの実装をどこに置くのがいいのか迷うことがありました。
今まではViewModelに処理を持たせてListAdapterにViewModelを渡し、ListAdapter→ViewModelにアクセスするように作っていたのですが、[公式サイト](https://developer.android.com/topic/architecture/ui-layer/events?hl=ja&_gl=1*8i836n*_up*MQ..*_ga*MTI2NTI1MjQxMC4xNzE3NTg2NjE4*_ga_6HH9YJMN9M*MTcxNzY3MTI0MS40LjAuMTcxNzY3MTI0MS4wLjAuMA..)(UI イベント)を見てみると、その方法は推奨されないとのこと。
>警告: ViewModel を RecyclerView アダプターに渡すことは、アダプターと ViewModel クラスを密結合させることになるため、おすすめしません。公式では、ListAdapterに
Androidアプリサンプルにおける単体テストのテストスコープについて調べてみた
[単体テストの考え方/使い方](https://www.amazon.co.jp/%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9-%E4%BD%BF%E3%81%84%E6%96%B9-Vladimir-Khorikov/dp/4839981728/ref=sr_1_1?adgrpid=146552030392&dib=eyJ2IjoiMSJ9.DwAMKN29hHMmZWAvUlEn2A3QQK1nnfD3KmHUkW3juAQ_ko6ILz9DBpmcn0ixQ2dfiBbmX0ZazRUq5oLHyFTvS_wKTCY5Jv43bFltrJUsbQ59eF3_BuWZK1d0xsq5AGgSSB1jngr9nXYSL6QSwTleRavEbTzlgXYngUMLtI4wn_UlndTJrNc2hn0gSqzDfzrjKaqerPTtlLgx6EeeSY8vOWTEnJ-gfi_GeFeBiUODeJ5iqH9wIvoZo3ycGUJGBoXV.equosaUSpav
Hilt の kapt を ksp にする
## はじめに
kapt 、ksp って何? みたいな話は他者様の記事に任せるとして、本記事には Hilt + kapt の環境を Hilt + ksp に移行した作業のみを簡潔に記載する。
### 移行の方針
Hilt + ksp にする方針は [kapt から KSP に移行する](https://developer.android.com/build/migrate-to-ksp?hl=ja) と [Dagger KSP](https://dagger.dev/dev-guide/ksp.html) の Requirements に基づく。
> Dagger 2.48 (or above)
> Kotlin 1.9.0 (or above)
> KSP 1.9.0-1.0.12 (or above)### 環境
AGP(Android Gradle plugin) は `8.4.1`。
“` Groovy: gradle/wrapper/gradle-wrapper.properties
plugins {
id ‘com.andr
Androidでちょっとした動画を再生したいと言われたので10分で対応してみる
# はじめに
Androidアプリにてふとした要件で動画を再生してほしいと言われたことはありませんか。
ビルトインで動画ファイル内包するのもなぁという思いもありつつあまり手間もかけたくない…
そんな時にあまり手間をかけずに実現するソリューションをご紹介しようと思います!フォーカスしませんがその他の手段もまとめていますのでご活用いただければ嬉しいです。
今回作るアプリ
(みんな大好きbig buck bunnyです)
# 全体の流れ
1. 動画ファイルをgoogle driveにアップロードする
2. google driveからリンクを取得
3. composeとexoplayerでgoogle driveの動画を再生する## 動画リンクの用意
今回はサクッと試したいということで動画ストレージとしてgoo
a-5-1-6.Realm DBの暗号化と暗号化キーの作成
### a-5-1-2(3).Realm DBのデータ保存と更新、削除(配列以外、配列)
#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)#### Github
https://github.com/wakizaka24/AndroidTest
#### テスト実装
“`kotlin:RealmTestService.kt
package com.example.androidtestimport android.text.TextUtils.concat
import android.util.Base64
import android.util.Log
import io.realm.kotlin.Realm
import io.realm.kotlin.RealmConfiguration
import io.realm.kotlin.ext.realmListOf
import io.realm.kotlin.types.EmbeddedRealmObject
im
Flutter Android: could not create task ‘ generatelockfiles’ エラーが表示された時。
# エラー内容
VScode+Flutterで開発をしている時に、
下の画像のようなAndroidのエラーが表示された。
![スクリーンショット 2024-06-07 13.57.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961391/caea124d-f5bd-2bef-4b15-b5eec221db9a.png)
# 対処方法
下記を参考に解決した。https://stackoverflow.com/questions/73357365/build-gradle-error-could-not-create-tastk-generatelockfiles-in-flutter-proj
原因はjavaとgradleのバージョン不一致で、Flutterプロジェクトで参照しているgradleを自環境のjava versionに合わせて変更してやる必要がある。
1.コマンドでjavaバージョンの確認する。
ターミナルで実行。
“`
javac -version
> javac 19.
KMPにおいて、gradleのlibsでエラーが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517291/60f053bf-df56-c741-89aa-25d53c642033.png)
“`build.gradle.kts
‘val Project.libs: LibrariesForLibs’ can’t be called in this context by implicit receiver. Use the explicit one if necessary
“`とエラーが出た。
どうやら、バグらしい
https://github.com/gradle/gradle/issues/22797
> この問題は関連チームのバックログにあり、チームによって優先順位が付けられています。> Gradle バージョンを更新して抑制を削除するだけで、問題は解決します。 😉
ということで、Gradleのバージョンを 8.1.1 まで上げることで解決した
## Gradleのバージョン上げ方
File ->
はじめてのAndroidアプリ
## はじめに
この記事は、Kotlinもアプリ開発も学びたての筆者が、[Kotlinの基礎知識](https://t.co/BOSCBUoSyQ)を学びながら、Androidアプリを作るまでの過程をまとめる記事の第1弾になります。## 対象読者
* Androidエンジニアを目指している方(自分は目指してます!)
* 素人の奮闘記を読みたい方## Android Studioのダウンロード
Android Studioは、Googleが提供しているAndroidアプリ開発用のIDEです。### Windows版
システム要件は以下の通りとなっています。
* x86_64 CPU アーキテクチャ、第 2 世代の Intel Core 以降、または Windows Hypervisor をサポートする AMD CPU
* 8 GB 以上の RAM
* 8 GB 以上の空きディスク容量
* 1,280 × 800 以上の画面解像度
[ダウンロード用ページ](https://developer.android.com/studio?hl=ja#get-android-studio
Pixelのダウングレード方法
Androidのメジャーバージョンごとにアプリのテストをする際、テスト用に持っていたPixelが自動システムアップデートで勝手にアップデートしていて困った過去がありました。
アップデートしてしまったPixelをダウングレードするには、[Android Flash Tool](https://flash.android.com/welcome)を使用するとAndroidの他のバージョンを書き込むことができます。[公式サイト](https://source.android.com/docs/setup/contribute/flash?hl=ja)やAndroid Flash Toolページ内にある程度手順が載っていますが、自分の備忘録としてダウングレードを行う際の手順を纏めておきます。
## 手順
**事前にPixelの開発者向けオプションを有効にした上で、開発者向けオプションメニューの「USBデバッグ」と「OEMロック解除」を有効にしてください。**
1. [Android Flash Tool](https://flash.android.com/welcome)にアクセスし
Android Studioについての個人メモ
– buildやmake projectは、ビルド+自動生成ファイル作成+テストが動く
– app実行は、テストが動かない
【Android】Hiltを使ってWorkerにDIする
## はじめに
[こちらの記事](https://qiita.com/Nkot117/items/e86c45c5236fcc28f926)(【Android】WorkManagerを使ってPUSH通知を飛ばす)では、Workerクラスを作成し、WorkManagerのOneTimeWorkRequestを使ってPUSH通知を飛ばす内容をまとめました。今回はの上記で作成したWorkerに、Hiltを使って依存注入する方法をまとめたいと思います。
## Hiltとは何か
Androidアプリで依存性注入(Dependency Injection)を簡単に実装するためのライブラリになります。
依存性注入とは何か、どう嬉しいのか等はここでは特に触れません。
詳しくは[公式サイト](https://developer.android.com/training/dependency-injection/hilt-android?hl=ja&_gl=1*1czggd0*_up*MQ..*_ga*MTU1OTIyMDM4My4xNzE3NDk5NzIy*_ga_6HH9YJMN9M*MTcxN
一生忘れる mac でのandroid ndkの場所
## 概要
タイトルの通りです。
## 場所
“`
/Users/gabriel/Library/Android/sdk/ndk/21.4.7075529
“`とかです。
Unity Android/iOSでFCMの処理を拡張する方法
# はじめに
Unityで、FirebaseCloudMessagingの処理をAndroid,iOSで拡張する機会があったので記事にざっくりまとめたいと思いました。
詳細なコード載せられないのと、必ずうまくいくとは言い切れないので要点だけまとめます。# iOSの通知拡張について
iOSで通知に画像をつけるために色々対応する必要があるのですが、手順が複雑で、プロジェクトやビルド環境によってセットアップが変わってくるため、一概にこうすればうまくいきますと言えないので詰まったところだけまとめておきます。
結果的には通知に画像をつけることは可能でした。## PostBuildProcessでiOSのXCodeプロジェクト設定
詳細なコードは載せられないので、大きく要点だけ…
大きく以下の追加が必要になります
– PBXProject.AddAppExtensionで通知拡張サービスの追加
– 下に記載してあるinfo.plistも一緒に登録
– PBXProject.AddFileToBuildで拡張コードファイルの登録
– PBXProject.SetBuildPr
Android Studioにてgradle build時にCould not read workspace metadata from ~ のエラー
Android Studioにてgradle build時に以下のようなエラーが発生してビルドできず
“`
Multiple build operations failed.Could not read workspace metadata from C:\Users\UserName\.gradle\caches\transforms-4\hogehoge\metadata.bin
“`キャッシュ関連のようだったので`Invalidate Caches`からキャッシュ削除では直らずで
`C:\Users\UserName\.gradle\caches`を直接全部消すことで直りました。検索すると以下が出てきたので関係しているのかも?
比較的新しいバージョンのみのバグなのかもしれず、すぐ直るのかもしれないが備忘のため記載https://github.com/gradle/actions/issues/167
[Android/Jetpack Compose]Failed to resolve: <パッケージ名>の原因と解決方法
# 問題
Android WebRTCライブラリ[Sora](https://sora-android-sdk.shiguredo.jp/quickstart#a8b57b)の依存関係の設定をしようとして、`build.gradle.kts`(モジュール側)を書いていたときハプニング。**`import org.webrtc….`のサジェストが効かない????**
`import`できない問題は大抵依存関係の問題なので、もう一度Syncしてログを見ると以下のログが出力されている
“`
Failed to resolve: <パッケージ名>
“`ちなみにSync時はエラーではなく警告が出るだけなので、コードを書こうとしてサジェストされないことで問題が発覚。
# 原因と解決方法
`settings.gradle.kts`へ以下の記述が必要
“`
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositori
Appium環境構築(Android編)
## はじめに
本文書は、「Appiumで実機のAndroid端末に接続し、Androidアプリを起動できるようにする」までの環境構築手順をまとめたものである。
## 環境
本文書は、以下の環境で実際に構築にした手順に基づき記載した。
– macOS 13.6.7
– Zsh 5.9また、本文書の手順では、以下のパッケージ管理および、ランタイム管理ツールを使用しています。
– [Homebrew](https://brew.sh/ja/) 4.3.0
– [mise](https://mise.jdx.dev/) 2024.5.18 macos-arm64 (2024-05-19)## 構築手順
### Node.jsのインストール
公式ドキュメントに[システム要件](https://appium.io/docs/en/latest/quickstart/requirements/)としてNode.jsが記載されているため以下のコマンドでインストールする。
“`shell
mise install node@18.17.1
“`### Appiumのイン
Socialiteアプリのユーザーエクスペリエンス向上方法
この記事では、SocialiteというAndroidアプリのユーザーエクスペリエンスを向上させる3つの具体的な方法について解説しています。
## 1. エッジツーエッジデザインの追加
Android 15では、アプリを画面全体に拡張し、ステータスバーとナビゲーションバーを非表示にする機能が導入されました。これにより、ユーザーはより没入感のある、現代的なデザインを体験できます。**手順**:
– **ステップ1**: `WindowInsetsController` を使用してステータスバーとナビゲーションバーを非表示にする設定を行います。
– **ステップ2**: XMLレイアウトファイルで、アプリの主要コンテンツがエッジツーエッジデザインをサポートするように `fitsSystemWindows` 属性を適切に設定します。
– **ステップ3**: 3ボタンナビゲーションの互換性問題に対処するために、必要に応じてパディングやマージンを調整します。## 2. 予測バックアニメーション
予測バックアニメーションは、ユーザーが「戻る」アクションを行う際に、次に表示される画面のプレ