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

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

アクティビティのライフサイクル [Kotlin]

Androidアプリを作っていると、必ず学ばないといけないライフサイクル。
ここではアクティビティのライフサイクルについて簡単にまとめてみました。
*アクティビティとフラグメントのライフサイクルは違います。

# ライフサイクルとは

ライフサイクルの概念はAndroidアプリ開発にて必須になります。
ライフサイクルとは、
**画面の生成から、破棄までの一連の流れ** のことです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1518643/7e6d52e5-ec00-ab6f-4952-170da8e09ef7.png)

# ライフサイクルの解説

### **onCreate()**
アクティビティにおいて、必ず実装しなければいけないメソッドです。
アクティビティが最初に起動されるときに呼ばれます。
**レイアウトの生成**や、**最初に1回だけ実行される初期処理**などがここで行われます。

### **onStart()**
アクティビティが生成される直前に呼ばれます。

元記事を表示

Androidで端末の向きを特定するにはTYPE_ROTATION_VECTORが便利

# はじめに

ポケモンGOのAR+モードみたいに、端末の向きを知りたいなと思って調べたことを書きます。

# TYPE_ORIENTATION が廃止された話

端末の向きを調べたい! ってことでググると、`TYPE_ORIENTATION` が廃止されたので、`TYPE_ACCELEROMETER` と `TYPE_MAGNETIC_FIELD` と `SensorManager.getRotationMatrix()` と `SensorManager.getOrientation()` を使いましょうって話が出てきます。

廃止の代替策だし、公式ドキュメントでも同様の話があるので、これがベストプラックティスなんだろうなと思って試してみました。

するとなんだがガタガタして安定しません。ローパスフィルタを通してみましたが、どうにも遅延せずに安定させる方法が見つかりません。

どうしたらいいのーーー??? と迷子になってしまいました。

# stardroidのソース

[Sky Map](https://play.google.com/store/apps/details?id=

元記事を表示

Android / iOS モバイルアプリのテキスト入力文字数上限と文字カウントの設計について

この記事では、モバイルアプリでのテキスト入力において、以下のことについて解説します。

* UTF-8 の文字数を正しくカウントすることは難しい (別記事)
* 入力可能文字数の上限をどのように定義すべきか
* 入力中の文字カウントはどのように表示すべきか

# 前提

* アプリから利用する Web API の文字コードは UTF-8 とします

# 仕様としての文字カウントの難しさ

Unicode の文字列の文字カウントは特殊です。ユーザーにとっては見た目上の文字カウントと一致する書記素クラスタカウントが理想ですが、API の仕様や UI 表示を書記素クラスタカウントに統一するのも現実的ではありません。

| カウント方式 | 説明 |
| — | — |
| 書記素クラスタカウント | 見た目上の文字カウント |
| コードポイントカウント (UTF-8 文字数) | Unicode codepoint を 1 文字とカウントする |
| UTF-8 バイト数カウント | UTF-8 でのバイト数をカウントする |

Unicode の文字カウントについて詳しい解説は以

元記事を表示

Coil 1.x から Coil 2.x へ移行時に変更したこと

Coil 2.x が rc-01 から kotlin 1.6.10 に対応しました :tada:
https://coil-kt.github.io/coil/changelog/#200-rc01-march-2-2022

これを気に Coil を 1.x から 2.x に Update してみたわけですが、多少変更が必要な箇所があったので備忘録を兼ねて記載します

## 関数名の変更

以下の関数名の変更がなされています。必要に応じて変えましょう。

– `loadAny` -> `load`
– `clear` -> `dispose`

## OkHttpのDiskCacheは非推奨に

Coil に DiskCache が実装されたのでこれを使いましょう。
ちなみに以下で指定しているCacheサイズは [1.x のサイズ](https://github.com/coil-kt/coil/blob/1.x/coil-base/src/main/java/coil/util/Utils.kt#L43)を参考にしています。

“`kotlin

ImageLoader

元記事を表示

親のViewModelを参照する方法

# はじめに
ViewPagerを使っていると、Pager内の画面と親のFragmentでやりとりを行い、何かしらのアクションを起こしたい、ってことありますよね
最近ではViewModelを通して親子でやり取りするようなやり方が主流な気がしますが、Pager内のFragmentで親のViewModelを取得する方法を簡単に残しておこうと思います。

# ViewModelの取得方法
取得方法は非常に簡単です。

“`
private val parentViewModel by viewModels({ requireParentFragment() })
“`
以上です。
基本的なViewModelの取得方法にrequireParentFragmentを指定するだけになります。
上記で親のViewModelを取得可能です、あとはLiveData等を使って親Fragmentへ通知したりする形になるかと思います。

# さいごに
親のViewModelを取得するのは簡単なのですが、ViewPagerを使うと双方の関係性が複雑になりがちなので、あらかじめし

元記事を表示

[Android]AVDManager操作時に”The selected AVD is currently running in the Emulator.”と言われた時の対処法

# 概要
Android開発をしていて、エミュレータのデータやエミュレータ自体を消去したいときなどにAVDマネージャーを操作しようとすると以下のようなエラーが出ることがある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366323/03394cc4-baff-1766-5c27-56204a69af34.png)

PCを再起動したりするとうまくいくが、再起動せずとも解決できる方法があるので紹介する。

# 方法
## **.lockと名のつくファイルを全て消す**
コマンド
“`
rm ~/.android/avd/your_emulator/*.lock
“`

`your_emulator`に入れるemulatorの名前はlsで確認できる
“`
ls ~/.android/avd/
“`

上記の実行結果が以下だった場合
“`
Pixel_5_API_32.avd Pixel_5_API_32.ini
“`

削除コマンド
“`
rm ~/.android/a

元記事を表示

Couchbase Lite機能 解説:配列データへのクエリ

## はじめに

ここでは、Couchbase Liteデータベースで配列を含むJSONドキュメントへクエリする方法について解説します。

なお、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:

元記事を表示

Android12以上だとpush通知受信でクラッシュする

“`
2022-03-10 11:12:43.765 1360-2196/? E/HwDetectorWithState: a: 3
2022-03-10 11:13:03.322 364-364/? E/android.hardware.power.stats@1.0-service-mock: Failed to getEnergyData
2022-03-10 11:14:00.148 10586-10824/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx E/AndroidRuntime: FATAL EXCEPTION: Firebase-Messaging-Intent-Handle
Process: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx, PID: 10586
java.lang.IllegalArgumentException: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx: Targeting S+ (version 31 and above) requires that one of FLAG_

元記事を表示

Sync Gatewayデプロイメント:ロードバランサーとの連携

## はじめに

ここでは、Couchbase Mobileを構成するSync Gatewayをデプロイする際のロードバランサーとの関係について解説します。

なお、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

元記事を表示

Sync Gateway機能解説:Sync Gateway間レプリケーション

## はじめに

ここでは、Couchbase Mobileを構成するSync Gatewayの機能であるSync Gateway間レプリケーションについて解説します。

なお、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ファーストステップガイド(イ

元記事を表示

Solar2DのAndroidアプリにusesCleartextTrafficを設定する

## http通信エラー
Solar2Dで開発したAndroidアプリからサーバーへhttp通信しようとすると、usesCleartextTrafficがデフォルトfalseのためエラーが発生しました。
## 解決方法
最も良いのはhttps通信にすることですが、諸事情によりそれはできないので、プロジェクト直下に`AndroidResources/res/xml/network_security_config.xml`を作成して解決しました。
“`xml:network_security_config.xml



sample.com

“`
## 補足
use

元記事を表示

ソフトキーボード出現時に画面内に残るエリアを変更するにはrequestRectangleOnScreenをoverrideする

ScrollViewなどスクロール可能なViewの上にあるEditTextにフォーカスをあて、ソフトキーボードで入力するとき、日本語の場合は特に変換候補が複数行にわたって表示されるなど、表示可能なエリアが入力に応じて変動します。
デフォルトのEditTextを使っている場合、そのEditTextが画面内に収まるようにスクロールしてくれるのですが、入力文字数を表示するカウンターなど、EditTextの下にある要素も見える位置までスクロールして欲しい!ということがあるかと思います。
TextInputLayoutとTextInputEditTextを使えばそのような動作になります。
同様の動作を他の要素でもやりたい。という場合どうすれば良いかの説明です。

|ScrollViewの上のEditTextを配置|入力中はEditTextの範囲が画面内に収まる位置にスクロールされる|EditTextだけでなく、下のテキストまで見えて欲しい|
|–|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15

元記事を表示

Sync Gateway 機能解説:メトリクスREST APIとパブリックREST API

## はじめに

ここでは、Couchbase Mobileを構成するSync Gatewayの機能であるメトリクスREST APIとパブリック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ファーストステップガイド(

元記事を表示

【Android】TextView内のURLリンク

# 文字内にURL埋め込み (下線あり)
xmlの“`“`タグを使用。

“`strings.xml
確認はこちらから
“`

“`activity_main.xml
Couchbase Lite機能解説:クエリAPI④関数

## はじめに

ここでは、Couchbase Lite 3.0の新機能であるSQL++/N1QLクエリ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://

元記事を表示

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

元記事を表示

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の知識があれば、参考書もスラスラ読めるので勉強自体にはそこまで時間がかからないと思います。

元記事を表示

OTHERカテゴリの最新記事