Android関連のことを調べてみた2022年03月09日

Android関連のことを調べてみた2022年03月09日

UnitTestにて、verifyでの比較が失敗する時の解決策

# 初めに
今回、自分が仕事でUnit testを書いていたときに起こったエラーに大きくつまづいたので備忘録として書かせていただきます。
早速ですがエラー内容としては下記の様なものでした
“`
Verification failed: call 1 of 1: 受け取った比較対象. Only one matching call to 用意した比較対象 happened, but arguments are not matching:
[0]: argument: 受け取った比較対象のインスタンスなど詳細情報, matcher: 用意した比較対象のインスタンスなど詳細情報, result: –
“`
では、なぜこの様なエラーが起きてしまうのか。
引数のクラスがdataクラスではないため、equlsが実装されていなくて、引数の比較が失敗するからです

### 解決策
では、どの様に解決すべきなのかです。
実はものすごく単純なもので比較をこちらが作って仕舞えばいいのです。
実装方法は下記になります

“`kotlin:
verify {
match {

元記事を表示

Kotlin FlowのUnitTestをturbineでサクッと書く

Kotlin FlowのUnitTestが上手く書けない・意図したテストにならないなと悩んでいたところ、同じ職場の@iwata-nさんに[turbine](https://github.com/cashapp/turbine)というライブラリを紹介していただきました。(名前がとてもカッチョイイ✨)

導入してみたところ、「今まで悩んでいたのはなんだったのか」と思うほど簡単にテストを書くことができて興奮したので記事を書きました。

# この記事で紹介すること
[turbine](https://github.com/cashapp/turbine)を使ったKotlin FlowのUnitTestの作成方法を紹介していきます。

# 最初にやること(dependencies)
build.gradleに以下を追加してください。(2022年3月現在)

“`gradle
repositories {
mavenCentral()
}
dependencies {
testImplementation ‘app.cash.turbine:turbine:0.7.0’
}
“`

元記事を表示

Glanceを使ってJetpackComposeでAndroidのウィジェットを開発しよう

# はじめに

昨年、Glanceのアルファリリースがあり、22年3月現在はalpha-03が公開されています。([Glanceとは?](https://android-developers-jp.googleblog.com/2022/01/announcing-jetpack-glance-alpha-for-app.html?m=1))
RemoteViewは使用せず、JetpackComposeを使ってウィジェットが作成できるとあって注目されています。
今回は、Glanceを使って1からウィジェットを作成してみたので、使い方やポイントを紹介します。
基本的な作りから、DBから値を取ってきて反映するところまで試してみました。
ベストプラクティスではなく、調べたり試行錯誤したりしつつ行ったので、お気づきの点がありましたらツッコミをいただければと思います。

# 確認環境

“`kotlin
// Glance
androidx.glance:glance-appwidget:1.0.0-alpha03
// Kotlin
org.jetbrains.kotlin:kotlin-s

元記事を表示

Androidアプリケーション技術者認定試験ベーシックに合格への道

# はじめに
去年の夏頃、Androidアプリケーション技術者認定試験を受けて合格しました。
勉強方法や参考書など、検索しても古いものが多かったので、最近の合格談として皆様の参考になればと思い記事にしました。

# 試験について
http://it.prometric-jp.com/testlist/android/

受験料:¥16,500(税込)
受験可能日:ほぼ毎日(会場によっては土日祝も○)
試験形式:70問4択 70%以上の正答で合格
出題範囲:[アプリケーション技術者試験](http://ace.it-casa.org/ace/scope/)

出題内容的にはかなり内容が古いです。
出題内容が古いままなので、参考書も新しいものが出ていません。。

# 難易度は?
Android java1年、kotlin1年経験した状態で勉強を始めましたが、知らない内容が結構ありました。(個人差あり)
参考書の理解、問題集のやり込みをしないとまず受からないと思います。
andorid javaの知識があれば、参考書もスラスラ読めるので勉強自体にはそこまで時間がかからないと思います。

元記事を表示

ContentProviderでUnknown authorityで困った話

ContentProviderを使ってデータを取得しようとしてエラーに引っかかってしまい時間をとられた

“` error
java.lang.IllegalArgumentException: Unknown authority com.sample.content.provider.testprovider
at android.content.ContentResolver.call(ContentResolver.java:2402)
at com.sample.content.client.MainActivity.loadText(MainActivity.kt:27)
at com.sample.content.client.MainActivity.onCreate$lambda-0(MainActivity.kt:17)
at com.sample.content.client.MainActivity.lambda$9zIV18Q6InENemqclwLnyzJ6Kg8(Unknown Sou

元記事を表示

Jetpack Compose で背景画像を repeat させる

Android で背景画像を repeat させるには、以下のように実装します。[^1]

“`xml:tile_background.xml


“`

“`xml

Couchbase Lite機能解説:クエリAPI①ステートメント

## はじめに

ここでは、Couchbase Lite 3.0の新機能であるクエリAPIについて解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D刊)](https://www.amazon.

元記事を表示

animateItemPlacementは追加と削除のアニメーションは提供されていないという話

Jetpack Compose 1.1.0にanimateItemPlacementというmodifierが追加されて、LazyColumn/Rowのアイテムアニメーションが追加されました。
これにより、リストの位置が変更されたときに自動でアニメーションが効くようになりました。

まだExperimentalAPIですが、いい感じに動作しています。現状は単純にmodifierに指定するだけで使うことができるのでとてもかんたんです。

“`kotlin
items(uiState.cards, key = { it.id }) {
Column(modifier = Modifier.animateItemPlacement()) {
// Copose…
}
}
“`

itemsの要素にanimateItemPlacementをつけて上げる感じです。
また、itemsの

元記事を表示

PreferenceHeaderFragmentCompatを使って2ペイン対応の設定画面を作る

androidx.preference の 1.2.0 から `PreferenceHeaderFragmentCompat` が使えるようになっています。
2ペイン対応の設定画面を簡単に作ることができます。

https://developer.android.com/jetpack/androidx/releases/preference

画面の幅が一定を超えると2ペインモード、一定以下なら1ペインモードに切り替わります。
Foldableデバイスの開閉や、タブレットの画面回転などに応じて、幅を有効活用できるレイアウトに切り替えることができます。
Deprecatedになってしまった [PreferenceActivity](https://developer.android.com/reference/android/preference/PreferenceActivity) でできていたことですが、これがモダンなライブラリを使って実現できるようになっています。

## 2ペインモード

タブレット

|||
|–|–|
|![](https://qiita-image-

元記事を表示

Jetbrains ToolboxでAndroid StudioのBeta版やCanary版などをインストールする手順

できるだけJetbrains ToolboxでIntelliJ系のIDEは管理しておきたいものですが、 (M1 Macなどで買い換える機会があれば試してみてください)
ちょっと深いところに設定があって毎回諦めそうになるのでメモしておきます。

https://www.jetbrains.com/ja-jp/toolbox-app/

(豆知識なんですが、このアプリ、確かCompose Desktopで作られているらしいですね。)

本題なんですが、この右側の `︙` からSettingsを開き、

Other versionsを開きます。

すると一覧が出てきます。

元記事を表示

【第三回】UnityでAndroidゲームアプリを作る ~キャラクターをとりあえず立たせる~

# 本連載について
– 本連載では、私が趣味で個人開発しているAndroidゲームの作成過程を記録していこうと思っています。
– 作るゲームは2Dの横スクロールアクションにしていこうと思っています。
– [前回の記事はこちら](https://qiita.com/CPyRbJvCHlCs/items/29fc47a768d47e73b85f)

# 本記事について
本記事では以下の内容を記載します。使用するUnityは2020.3.27f1です。
– [前回の記事](https://qiita.com/CPyRbJvCHlCs/items/29fc47a768d47e73b85f)で説明した方法で作ったステージに、操作するメインキャラクターの画像を配置する。
– メインキャラクターがちゃんと立てるようにする。

# ステージの見た目
– [前回の記事](https://qiita.com/CPyRbJvCHlCs/items/29fc47a768d47e73b85f)で説明した方法で適当にお絵描きし、以下のようなステージにしました。![image.png](https://qiita-

元記事を表示

【第二回】UnityでAndroidゲームアプリを作る ~ステージ作り~

# 本連載について
– 本連載では、私が趣味で個人開発しているAndroidゲームの作成過程を記録していこうと思っています。
– 作るゲームは2Dの横スクロールアクションにしていこうと思っています。
– [前回の記事はこちら](https://qiita.com/CPyRbJvCHlCs/items/e2a1581768fdbc963467)

# 本記事について
本記事では以下の内容を記載します。使用するUnityは2020.3.27f1です。
– [前回の記事](https://qiita.com/CPyRbJvCHlCs/items/e2a1581768fdbc963467)で集めた素材を加工し、ステージ作りに使用出来るようにする。
– ゲームのステージ背景を用意する。
– ゲームのステージに地面等を配置する。

# 背景の準備
前回の記事で素材を集めてきましたが、集めただけではゲーム内で使用するための準備は整っていません。以下の手順でまず背景の準備を行います。
1. 以下のように、[前回の記事](https://qiita.com/CPyRbJvCHlCs/items/e2a1

元記事を表示

Android studioとARcore

初めまして、システムエンジニアのとまとです。

今回は2月末までできていたAndroidStudioでの
ARcoreについて説明していきたい思います。

公式ドキュメント

Android Studio
https://developer.android.com/?hl=ja

ARCore
https://developers.google.com/ar

ついこの前までAndroidStudioでARcore
を使用してた人もいると思います。

しかし、Androidstudio v4.2.1以前の
バージョンでは使用できなくなってしまい
衝撃を受けました。

この前までは、下図のようにできたのですが、
![23294822-07F9-41BE-8A1F-E93BAC32BDB2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2568816/d67fbc22-182c-3fdc-04e8-cef6f83d7466.jpeg)

前のバージョンで起動しようとしても下図のようになります。

![

元記事を表示

Bindingの簡単な設定方法

# 初めに
Bindingの設定をするのに まだ完全に身についておらず、過去自分の作業したものを遡ったり、他の記事を探したりするのが億劫になったので議事録としてBindingの設定方法を残しておきます

まずは BindingさせたいLayout.xmlとBindingを使用したいClassを用意します
“`php:activity_main.xml
【Kotlin】Androidアプリ「SASUKEクイズ」をつくった

# はじめに
本業でずっとReact Nativeを使っているのですが、ネイティブ言語経験なしでモバイルアプリを作っていることに不安(劣等感?)を感じてきました。
eject済みでネイティブまわりの知識が必要といえば必要で、iOSよりAndroidまわりで引っかかることが多いので、とりあえずKotlinに触れてみることにしました。
そんな感じで3~4時間かけて超簡単なクイズアプリをつくってみました。

一応、Kotlin初心者向けの記事となっています。

# アプリの概要
アプリ操作の流れは以下のようになります。
1. ユーザ名を入力して解答スタート(スタート画面)
2. 全5問のSASUKEレジェンドクイズに解答(クイズ画面)
3. 全問解答後に正答数を表示(結果画面)

選択肢を選んで「送信」ボタンを押すと、正解の場合は緑、不正解の場合は赤で選択肢が表示されます。
現在が何問目であるかどうかは、質問と選択肢の間にあるプログレスバーで確認することができます。

2022/3/3までに発売された主なfoldable端末の解像度まとめ

# 目的
foldable端末が増えたことによって
– 縦方向表示だが横方向に十分な描画領域のある端末

が増えてきました。
今後、android開発においては端末のorientationだけでは適切な表示ができないケースが増えてくると想定されます。
現時点でどのように閾値を設定するかの考慮材料としてまとめてみます。
なお、
– 主に横方向折りたたみのもの
– 話題になったもの(主観

を中心にまとめました

# 一覧
|端末名|メーカー|見開き時解像度(縦x横)|折りたたみ時解像度(縦x横)|発売時期(凡そ)|公式ページ|
|—|—|—|—|—|—|
|Mate X|Huawei|2480 x 2200|2480 x 1149|2019年-月|—|
|Galaxy Fold|Samsung|2152 x 1536|1680 x 720|2019年10月25日|https://www.galaxymobile.jp/galaxy-fold/|
|Galaxy Z Fold2|Samsung|2208 x 1768|2260 x 816|2020年11月4

レイアウト作成時に利用できるサンプルデータ

# 初めに
今回の主旨としては、レイアウト作成時に画像や名前といったサンプルのデータを入れておきたいけど、パッと代用できるものが出てくる様なものではないものに対して行う設定です

### やること
レイアウトを確認するのに、わざわざ関係のない画像を用意したり適当な文言を考えるのって少し面倒ですよね?

そんな時に使えるのが`tools:sample`です
これ、どういったものかというとAndroid側が用意したダミーのリソースを使うことができるんですね。
なので、画像や名前、日時などを勝手に当てはめてくれます
書き方はすごく簡単で

“`xml

“`
これだけです
こうすることで下記の様に適当な画像を当てはめてくれます。
ただ、なぜか虫の画像ばかりな

元記事を表示

HiltでPermissionチェック

PermissionのチェックをHiltでやってみようと思います。

### 条件

* Hilt導入済み

### Listenerを作成

“`kotlin
interface PermissionListener {

fun permissionGranted()
fun permissionDenied()
}
“`

### Lifecycleと紐付ける

Lifecycleと紐付けるため、継承出来るようにします。

“`kotlin
abstract class AbstractPermissionObserver : DefaultLifecycleObserver {

var isGranted: Boolean = false
var permissionListener: PermissionListener? = null

abstract fun launch()
abstract fun checkPermission(): Boolean
}
“`

### 位置情報のPermissionチェック

元記事を表示

Hiltを使って位置情報を取得する

位置情報の取得で、LocationManagerが将来的に廃止されるため、FusedLocationProviderClientに切り替えたました。
その際、HiltとLiveDataを使用してどこでも位置情報の変更を受信出来るようにしたので、それを説明したいと思います。

### 条件

* permissionに位置情報を追加
* permissionの許可を取得済み
* Hiltを導入済み

### ModuleにFusedLocationProviderClientを定義

“`kotlin
@Module
@InstallIn(SingletonComponent::class)
class AppModule {
@Provides
@Singleton
fun provideFusedLocationProviderClient(@ApplicationContext context: Context): FusedLocationProviderClient {
return LocationServices.getFusedL

元記事を表示

FlutterでCloud Firestoreを使う(Android)

### FlutterでCloud Firestoreを使う

スケルトンで作成されるカウンターアプリをFirebaseのCloud Firestoreを使用するカウンターアプリに変更したいと思います。

### 条件

* Flutter 2.10.3
* Cloud Firestoreのテスト開発

### 事前準備

* google-services.json

Firebaseで取得したgoogle-services.jsonをapp配下にコピーします。

* AndroidManifest.xml

“android.permission.INTERNET”を追加する

“`xml


“`

* google-servicesを追加する

元記事を表示

OTHERカテゴリの最新記事