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

Android関連のことを調べてみた2022年06月26日
目次

【Coroutines】キャンセルとタイムアウト

ソース記事は[こちら](https://kotlinlang.org/docs/cancellation-and-timeouts.html)
このセクションはコルーチンのキャンセルとタイムアウトをカバーしている。
## コルーチンの実行のキャンセル
長時間実行するアプリケーションにおいて、そのバックグラウンドのコルーチンをきめ細かく制御する必要があるかるかもしれない。例えば、あるユーザーはコルーチンを起動したページを閉じ、その結果はもう必要なく、操作をキャンセルするかもしれない。[launch](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/launch.html)関数は、実行しているコルーチンをキャンセルするために使うことができる[Job](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-job/index.html)を返却する。

元記事を表示

adbから好きなアプリ起動

`adb shell am start HOGE` でアプリ起動できるのでHOGEの部分を調べる。

調べ方はいろいろあるけど、一覧から探すの辛い。
好きなアプリを起動しておいてlogcatで確認するのが簡単そう。
ActivityManagerの「pre-top-activity」を含むログだけ表示する。

`adb logcat -d -s ActivityManager:I -e pre-top-activity`

“`sh
$ adb logcat -d -s ActivityManager:I -e pre-top-activity
——— beginning of system
06-25 18:27:26.535 1797 1892 I ActivityManager: Start proc 25440:com.google.android.calculator/u0a143 for pre-top-activity {com.google.android.calculator/com.android.calculator2.Calculator}
0

元記事を表示

Jetpack Composeでテキストエディター(Beta版)を作ってみた

# はじめに

Jetpack Composeで開発しているアプリのテキストエディターを`BasicTextField`で作成してみたのですが書きごごちがイマイチと感じました。

私は普段はmacOSとiOSでCraftと呼ばれるノートアプリを愛用しています。Craftのテキストエディタは書きごごちが素晴らしく不満点がないのでこれに近いテキストエディタが欲しいなと思いました。

https://www.craft.do/

【2022年】ログイン認証情報の不足でリジェクトされてから、Google Play Consoleで再審査提出まで

# はじめに
Google Play Consoleでどこをどう操作すれば良いのかわからんかったので、ここに記録します!

# ログイン認証情報の不足でリジェクト食らった
![Screen Shot 2022-06-25 at 13.24.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/78c4f715-9bc7-f2e6-a332-1d9e12b4cce1.png)

https://support.google.com/googleplay/android-developer/answer/9859455#app_access

**審査するためにログインが必要だが、ログインのための情報がないよ〜!!!**

みたいな理由です。

初回リリースというわけじゃないので、、、逆に今まではなぜ審査に通っていたのかが謎なんですがね、、、:joy_cat:
いつからログイン認証情報必要になったんや・・・?

# Google Play Consoleでログイン認証情報を追加
`アプリのコンテ

元記事を表示

Jetpack Composeタップ領域にPaddingを含める方法・含めない方法

Jetpack Composeで描いていて、タップ領域にPaddingを含まれてなく、どうしたら含められるのかが、分かった為今後のために記載していきます。

# タップ領域にPaddingを含める方法

“`MainActivity.kt
Row(Modifier.clickable(onClick = { isExpanded = !isExpanded })
.padding(8.dp)
)
“`

# タップ領域にPaddingを含めない方法

“`MainActivity.kt
Row(Modifier.padding(8.dp)
.clickable(onClick = { isExpanded = !isExpanded })
)
“`

# 結論
Modifierの設定する順番が関係してました。
初めにクリック処理を設定すると、全体がクリック領域になるみたいです。なのでpaddingはレイアウトの見た目に反映され、クリック処理の領域には反映されない。

Modifierの設定する順番で動作が変わるのでそこ

元記事を表示

adbで「adb.exe: more than one device/emulator」が出るとき

複数のAndroidがPCに接続されてたりエミュレータが立ち上がってるとき

“`powershell
PS C:\Users\frieren> adb devices
List of devices attached
192.168.1.8:39333 device
emulator-5554 device
“`

そのまま`adb shell`するとエラーが出る

“`powershell
PS C:\Users\frieren> adb shell
adb.exe: more than one device/emulator
“`

こういうときは`adb -t 1 shell`みたいにデバイスを指定する。
**デバイスを指定するためのオプションはshellの前に書かないと働かないので注意。**

# USB接続のデバイスを指定: `adb -d shell`
> use USB device (error if multiple devices connected)

複数台あるとエラー。

# TCP/IP接続のデバイスを指定: `adb -e

元記事を表示

【Android】ライブラリの実装方法【AndroidStudio】

# ライブラリとは
ライブラリを直訳すると”図書館”です
図書館では それぞれの人が それぞれの目的で それぞれの知識を得るために それぞれの本を借りることができます
Android(プログラミング)における**ライブラリ**とは
その図書館のように 他の人が作った機能をお借りして使うことが出来るもの
と私は捉えています

# 実装方法
Android Studio内の左辺にあるprojectタブにある
GradleScript から build.gradle(Module: app) を選択
その中の dependencies{} 内に 使用したいライブラリをコピペで貼り付けてください

すると 右上に 「Sync Now」と出てくるので これをクリック
これでライブラリの実装が完了します

# よく使われるライブラリ
Android開発でよく使われるライブラリをまとめてくれている方がいたので
記事をお借りして貼っておきます
↑の方法を使えばこの記事にあるライブラリを自分の
実装にそのライブラリの機能を使うことができます!

https://qiita.com/tkhskt/it

元記事を表示

Jetpack Composeを現場のアプリ開発で使用してみて思ったこと

最近、Androidのアプリ開発においてJetpack Composeを使用する機会が増えました。

ということで、私が特に現場でJetpack Composeを使用してみて感じた(ている)ことを書いていこうと思います。(2022/6/24時点の感想)
知識不足で間違っている点あればご指摘ください。

# 良いと感じている点
### レイアウトの変更・管理がしやすい
– Kotlinコードでレイアウトを書いていくので、個人的にXMLベースよりコードのネスト構造が浅くなる(りやすい)傾向があります。
– Kotlinコードで管理するので、XMLファイルといった形式の異なるレイアウトファイルを管理する必要がほぼなくなります。見るのがKotlinコードに一元化されるので管理がしやすいです。
– 同じKotlinファイル内に複数のComposable定義を記述できるのでグルーピングしたい時とか便利

個人差はあるので、上記はいまいちピンと来ない方がいるかもしれませんが、XMLよりKotlinに慣れ親しんでいるエンジニアは頷けると思います。

### 状態に応じたUIの出しわけがやりやすい
その

元記事を表示

Composableをスクロールに応じて動かす

### スクロールで動かす

ugokuyo

### やり方
ScrollStateの値でComposableのOffSetを変更し続ければよい

以下のようなComposableを作る。
“`kotlin
@Composable
fun Blue(scrollProvider: () -> Int) {
Column(
modifier = Modifier
.offset {
val scroll = scrollProvider()
val offset = (ScrollHeight – scroll).coerceAtLeast(80)

元記事を表示

【Android】起動時パフォーマンス改善のためにBaseline Profilesを導入したときのメモ

GoogleI/O 2022で話題にあがっていたBaselineProfilesを導入検討した際のメモを残しておきます。

# 背景

Baseline ProfilesはAPKに含まれるクラスとメソッドのリストです。インストール時に、Android Runtime(ART)によって、クリティカルなパスをプレコンパイルするために使用されます。
導入すると起動時間の短縮が期待できます。

> Baseline Profiles are a list of classes and methods included in an APK used by Android Runtime (ART) during installation to pre-compile critical paths to machine code. This is a form of profile guided optimization (PGO) that lets apps optimize startup, reduce jank, and improve performance for end user

元記事を表示

令和最新版 Google Play Console アプリアップロード自動化のための設定フロー

2022年6月時点の Google Play Console へのアプリバイナリ (apk, aab) アップロード自動化のための、主に Google Play Console や Google Cloud Platform の設定のやりかたです。

## ステップ

1. Google Play Developer API 用の鍵の発行
2. 適切な権限を設定する
3. リリース用のツールをセットアップ

## 1. Google Play Developer API 用の鍵の発行

リリース用のツールで API を触るために鍵の発行が必要です。すでに鍵がある人はこのステップをスキップできます。

### 1-1. Google Cloud プロジェクトと紐づける

まず Google Play Console にログインして 「設定」 > 「API アクセス」を開きます:

![API_アクセス-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359439/bd359d90-7db1-d50b-

元記事を表示

Dagger Hilt Constructor Injection

# 最初に
Dagger Hiltの利用でField Injectionはスッと理解できたのですが、Constructor Injectionは少し時間がかかりました。自分用にもメモとして残します。
Dagger Hiltの環境設定やプロバイダのスコープ範囲などの説明はここでは割愛して、シンプルにコンストラクタインジェクションがどのように記述されるのかだけをまとめてます。

# 多分一番シンプルなコード
わかりやすくするためにString型を提供するプロバイダのサンプルです。
“`Kotlin
@AndroidEntryPoint
class HiltStringActivity : AppCompatActivity() {

// StringImplのコンストラクタには引数があるのに何も渡していない
// コンストラクタの引数はインジェクトしろというアノテーション
@Inject
lateinit var myStringImpl: StringImpl

override fun onCreate(savedInstanceState:

元記事を表示

コルーチンとチャネル入門#9 コルーチンのテスト

ソース記事は[こちら](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/09_Testing)
コルーチンを使うコードのテスト方法について議論しよう。我々の解法をテストし、並列なコルーチンの解法が、`suspend`関数の解法よりも速く、チャネルの解法が、単純な”進捗”の解法よりも速いことが確認できればと思う。
それではGitHubサービスをモックし、このサービスが与えられたタイムアウトの後、結果を返すようにしよう。
“`
リポジトリ一覧要求 – 1000ms遅延以内で、答えを返す
repo-1 – 1000 ms 遅延
repo-2 – 1200 ms 遅延
repo-3 – 800 ms 遅延
“`
その後、`suspend`関数でのシーケンシャルな解法は、4000ms前後かかるはずである。
`4000 = 1000 + (1000 + 1200 + 800)`
そして並列の解法は、2200ms前後かかるはずである。
`2200 = 1000 + max(1

元記事を表示

Jetpack Compose で dp / px / sp の相互変換はどうやるのか

“`kotlin
val pxValue = with(LocalDensity.current) { 16.dp.toPx() }

// or

val pxValue = LocalDensity.current.run { 16.dp.toPx() }
“`
[How to convert Dp to pixels in Android Jetpack Compose? – Stack Overflow](https://stackoverflow.com/questions/65921799/how-to-convert-dp-to-pixels-in-android-jetpack-compose/65921800#65921800)

Kotlin スコープ系の関数で取得できる、というのだが気持ちが悪いです。

これは、以下でも同じ。

“`kotlin
val pxValue = 16.dp.value * LocalDensity.current.density
“`

さらに、その他、それぞれの変換もみてみます。

[?【Jetpack Compose】d

元記事を表示

Nrealでの録画機能について

# 動作環境
– macOS version 12.3.1 Monterey Intel Core i9
– Unity 2020.3.8f1
– NRSDKForUnityAndroid_1.8.0.unitypackage
– NrealLight モデル:NR-9101GGL
– Xperia 5 Ⅱ SOG02SLA
# 元からある録画機能
NRSDKForUnityAndroid_1.8.0.unitypackageをUnityにインポートすると、Assets/NRSDK/Demosの中にRGBCamera-Recordが作られており、これをbuildするとNrealのカメラから動画が取れる。
アプリを実行すると、録画の設定に関するパネルが表示されるので好きな設定を選んで、赤い丸をコントローラーでクリックする。