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

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

AndroidのJetpack Composeアニメーションを触ってみる(AnimatedVisibility)その2

前回同様Jetpack Composeアニメーション使用して動かしてみようと思います。

今回は高レベル アニメーション API の AnimatedVisibilityについてやっていこうと思います。

https://developer.android.com/jetpack/compose/animation?hl=ja#animatedvisibility

# 前回

https://qiita.com/yuta317/items/8bb18e146e872b8f2c14

前回はアニメーションさせる方法で終わりました。今回はEnterTransition と ExitTransitionを設定をしてみようと思います。

`fadeIn` `fadeOut` `slideIn` `slideOut` を今回は実装していきます。

# 表示非表示のアニメーションカスタム
詳しいコードは前回を見てください。
※今回は`AnimatedVisibility`からしか記載しません。

fadeIn fadeOut
こちらは透明からだんだんと見えるようになり、だんだん透明になって消えて

元記事を表示

onResume などのライフサイクルメソッドのオーバーライドが非推奨になっていた件

「 [Recommendations for Android architecture](https://developer.android.com/topic/architecture/recommendations) 」の一文に次が書いてありました。

> [Lifecycle](https://developer.android.com/topic/architecture/recommendations#lifecycle
)
Do not override lifecycle methods such as onResume in Activities or Fragments. Use LifecycleObserver instead. If the app needs to perform work when the lifecycle reaches a certain Lifecycle.State, use the repeatOnLifecycle API.

そもそも `onResume` はAndroidにおける主要

元記事を表示

Firebase Remote configでアプリのバージョン指定を使う

# はじめに
Firebase上で設定値を変更できるFirebase Remote configですが、一律の設定値を設定するだけでなく、アプリの条件によって該当するものだけを設定することも可能です。
設定できる条件は以下に記載されています。

https://firebase.google.com/docs/remote-config/parameters?hl=ja#condition_rule_types

そこで、アプリのバージョンによって設定値が変わるものを設けようと思ったのですが、グレーアウトされていてどうにも設定ができなかったので、設定方法について説明します。
![スクリーンショット 2022-10-28 9.58.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687960/8a120609-2ac6-23ff-e233-5e4063383771.png)

# 設定方法
まず`アプリ`の項目で、アプリを選びます。
![スクリーンショット 2022-10-28 10.06.14.pn

元記事を表示

Jetpack ComposeのComposeを区切る場所について

# 初めに
今回は、自分が業務で`JetpackCompose`を触ってみた時に気になったどこでファイルを分けるか問題を記事にしていこうと思います。
### 本文
まず、前提として`JetpackCompose`は従来の`xml`と違い同一の画面で使う場合でも小分けにViewを宣言することができます。
自分が実装をしていて気になったのが、表示物や機能が多い画面では小分けにしないと1つのファイルの記述量がとんでもない量になるということです。
そこで、どう区切るのが一番可読性が高く、綺麗にかけるのかを考えてみました。
最初に考えたのが***Viewごとに区切る***です。
しかし、そうしてしまうと逆にファイルの量がバカにならないですし、何より位置の相互関係などが設定がしづらいです。
次に考えたのが***機能などのグループごとに区切る***ことです。
しかし、そうなってくると入れ子の量が増える可能性もあり、不要なデータなどを上の階層におかないといけなくなるのであまり好ましくありません。
そこでチームで話し合って出たのが***データクラスなどのデータごとに区切る***です
そうすることで不要な

元記事を表示

Android Studio DolphinでActivity#registerForActivityResultを認識してくれない問題の解決方法

# 概要

Android Studio Dolphin | 2021.3.1 Patch 1でも(Chipmunkの時から)以下のようになる問題のワークアランドです。これはAndroid Studioのバグです。

![スクリーンショット 2022-10-26 22.52.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10494/0977e9d2-0e4a-9ca8-5d10-25726010acdd.png)

# 解決方法

`(this as ComponentActivity)`とキャストすれば良いです。

“`Kotlin
private val launcher =
(this as ComponentActivity).registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted: Boolean ->

}
“`

Android S

元記事を表示

Visual Config EditorからYAMLを作成

## はじめに
こんにちは!CircleCIカスタマーサクセスのチヨです。
紅葉が進み肌寒い日が多くなってきましたが、皆さんはいかがお過ごしですか。私は衣替えのタイミングを完全に逃し常に会社のパーカーを着用しています。
今回は先日リリースされた[Visual Config Editor](https://circleci.com/ja/blog/config-sdk/)(VCE)をデモと合わせて紹介いたします。
VCEは[Webブラウザ](https://circleci-public.github.io/visual-config-editor/)から利用可能です。画面左上のエリアに画面右から必要なアイコンをドラッグ&ドロップして接続することでフローチャートを描くようにCI/CDパイプラインを設定できます。

## VCEメリット
筆者もエンジニアではないため、スペースの入れ忘れなどによりエラーが出るなんてことはよくあります。慣れないYAMLの作成をスムーズにできるのが今回GAになったVCEです。

YAML初心者以外にも他に以下のメリットがあります:crown:
ワンクリックでC

元記事を表示

Kotlinの響きが心地よい(入門_00)

### 1.Kotlinプレイグラウンドについて

初歩的な文法から覚えるためにお手軽な環境があります。
それが「Kotlinプレイグラウンド」を利用します。

https://play.kotlinlang.org/

### 2.プログラムの実行

書いたプログラムを実行するには「run」ボタンを押下するだけです。
「HelloWorld」とテキストが表示されますね。

![スクリーンショット 2022-10-25 22.02.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1627818/129f3869-b04c-aee3-04e6-62fa2d2bae07.png)

fun main() {と}の間に色々と書けば、それが実行されます。
Javaの経験があれば説明不要の基礎知識でしょう。

### 3.整数の型

・Byte型:8ビットサイズの値(-128〜127)
・Short型:16ビットサイズの値(-32768〜32767)
・Int型:32ビットサイズの値(-2147,483,64

元記事を表示

FlutterでTodo管理dAppを作る

# やること
[web3dart](https://pub.dev/packages/web3dart) / [Truffle](https://trufflesuite.com/) / [Ganache](https://trufflesuite.com/ganache/) を使って簡易的なtodo flutterアプリを作成します。
スマートコントラクトのイベントをsubscribeする実装サンプルがあんまりなかったためそこも含めてやってみました。
Web3初心者のため、間違っていることを言っている可能性がありますのでご容赦ください。
また動作確認はAndroidのみで行っています。

# 作るもの
![dapp.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95489/071d19de-800d-ff46-d53a-0e6cb03d3dce.gif)

# 概要
全体像を把握できてなかったので整理しました。
![arch.png](https://qiita-image-store.s3.ap-

元記事を表示

JetpackComposeのmaterial3でswipeableなどのinternalな一部の関数の代替を使う方法

本記事はJetpackComposeにイラついた中級プログラマーが思いをそのままにつづったものです。

# 具体的には

※知っている部分は飛ばしてください
※安定すれば意味ない記事です 2022/10/24

`Android`を`kotlin`でデザインする際に`xml`ではなく`宣言型UI`である`JetpackCompose`を用いてUIを描けるJetpackComposeを`Material3`で入れたのだが、開発段階ということもあって、表で使える関数がかなりありません。(Material3の物は使えるのだが、内部で使われているクラスやインターフェースや関数がマジでinternal)

# イラついたところ
※特に意味はない無駄情報

[Material3の公式っぽいところ](https://m3.material.io/develop/android/jetpack-compose)がAndroidを紹介していますが、[Component一覧](https://m3.material.io/components)から適当なコンポーネントを選んで[Androidの公式リファレ

元記事を表示

AndroidのJetpack Composeアニメーションを触ってみる(AnimatedVisibility)

Jetpack Composeアニメーション使用して動かしてみようと思います。

今回は高レベル アニメーション API の AnimatedVisibilityについてやっていこうと思います。

https://developer.android.com/jetpack/compose/animation?hl=ja#low-level-apis

# AnimatedVisibilityコンテンツの表示と非表示をアニメーション化

“`AnimatedVisibilityView.kt
@Composable
fun AnimatedVisibilityView(name: String) {
var isExtended by remember { mutableStateOf(false) }
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center,
) {
Button(modifier = Modifie

元記事を表示

モバイルアプリの自動テストツールShiratesを使ってみよう(その2)

本記事はOSSの自動テストツール **Shirates(シラテス)** の紹介記事です。
[前回](https://qiita.com/wave1008/items/13e0c854002f6a58f354)の記事ではOSSの自動テストツールである**Shirates**を使うための環境構築とテストコードの実行方法について説明しました。

今回はAppiumと**Shirates**でどのような違いがあるのかをサンプルコードを使用して確認します。
**Shirates**はAppiumをドライバーとして使用していますが、Appiumの使いにくさを解消するための工夫が多数盛り込まれていることがわかります。

## サンプルコードの入手
まずはGitHubからサンプルコードを入手してください。

https://github.com/wave1008/shirates-samples-introduce1

ダウンロードしたプロジェクトのディレクトリ下に複数のサブプロジェクトがあります。
![image.png](https://qiita-image-store.s3.ap-northe

元記事を表示

【Android】Roomについて

# はじめに
前回アノテーションについて調べた時に Room関連のアノテーションが多かったのでRoomについて調べたので、
その内容を記事にしたいと思います。

# Room
Androidデベロッパーでは
>Room 永続ライブラリは SQLite 全体に抽象化レイヤを提供することで、データベースへのより安定したアクセスを可能にし、SQLite を最大限に活用できるようにします。

https://developer.android.com/jetpack/androidx/releases/room?hl=ja

とあります。

SQLiteとはデータベースの一つで、
データの保存に単一のファイルのみを使用することが特徴である サーバーではなくアプリケーションに組み込んで利用されるデータベースのことです。

今回はRoomについてですので、SQLiteの説明は簡単に終わりにしておきます

https://ja.wikipedia.org/wiki/SQLite

今回の本題「Room」とは 簡単にいうと
**Android Jetpackライブラリの一つ** で「アプリ内で入力さ

元記事を表示

【Android】リスト選択ダイアログを簡単に表示する方法

# はじめに
ダイアログ上で選択させる表示を実装することがたまにありますよね。
要件としてはあまり多くない印象ですが、デザインに特に決まりがなければ簡単に表示する方法があるので残しておこうと思います。

# ひとつ選択可能なリスト選択ダイアログ

まず、ひとつだけ選択可能なダイアログの実装方法を紹介します。
実装は非常にシンプルで、表示したいタイミングで以下を実装するだけです。

“`MainActivity.kt
val items = listOf(“りんご”, “メロン”)
MaterialAlertDialogBuilder(this)
.setTitle(“タイトル”)
.setSingleChoiceItems(items.toTypedArray(), 0) { dialog, index ->
// アイテムを選択した際の処理
}
.setPositiveButton(“OK”) { _, _ ->
// ok押した際の処理
}
.setNegativeButton(“Cancel”) { _, _ ->

元記事を表示

Gradle Version Catalog の dependencies のチェックをターミナルから行う

あやしいです。

![スクリーンショット 2022-10-22 17.28.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/0ee4163a-59b5-dfe6-c886-8b537b7e2159.png)

別の信頼できるツールを使います。

[? ben-manes/gradle-versions-plugin: Gradle plugin to discover dependency updates](https://github.com/ben-manes/gradle-versions-plugin)

![画面収録 2022-10-22 16.33.37.-2gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/01ddc66b-5d11-60c7-0234-1cbed98fb991.gif)
便利です!

[? 「⚠ This project uses Gradle Vers

元記事を表示

ForegroundServiceStartNotAllowedExceptionの解決方法

# 実装
* ForegroundServiceの実装
* ForegroundService内で、位置情報取得としてFusedLocationProviderClient を使用

# 解決方法
* AndroidManifest.xmlのサービスに”android:foregroundServiceType=”location” の追加
“`XML:AndroidManifest.xml


“`

# Exception全体
“`
2022-10-22 13:50:45.156 31699-31699/ … E/AndroidRuntime: F

元記事を表示

Unityで “JAVA_HOME is not set and no ‘java’ command could be found in your PATH.” が出たときの対処法

UnityでAndroid用アプリ開発中、 Android ResolverのForce Resolveを実行しようとして、タイトルのエラーが出たときに行った対処法です。
パスは通っているはずなのにこのエラーが出てました。

結論から言うと、
**Edit > Preferences > External Tools > Android にあるパス関係のチェックボックスを一度外して再度チェックしなおす**
で解決しました。

## 環境
・Windows 10
・Unity 2021.3.10f1

## 対処方法
### 1. Javaのパスを通す
パスが通っていない場合、JAVA_HOME、Pathを設定する。
Unity HubでOpenJDK、Android SDKをインストールした場合も、このパスは手動で設定する必要があります。

設定方法は既にネットにたくさん記事があると思うので省略します。
設定内容は以下です。
・JAVA_HOME・・・以下の3.の画像の枠の中の1つ目のパス(JDKのパス)を設定
・Path・・・%JAVA_HOME%\bin を追加

上記を設定できた

元記事を表示

[Jetpack Compose]xmlでConstraintLayoutみたいにComposeで書く方法

## 内容
– xmlのConstraintLayoutみたいに制約つけて配置する方法をComposeでもやりたい時
– 複雑な配置をComposeでやりたい時

## Composeでこんな感じの見た目を作りたいとします

## xmlだと
今回はLinerLayout

“`

元記事を表示

[Jetpack Compose] xmlでtextSizeがdp指定されている部分をComposeで書き直す [Android]

## 内容
– xmlでtextSizeがdp指定になっているところをCompose化する時にどうやって書くか。
– Composeで、システムのフォントサイズに関係なく(依存せずに)、テキストサイズが一貫するように「.dp」を使用する方法

## xmlの場合

“`

“`

## Compose化する場合
“`

Text(

fontSize = dpToSp(dp = 16.dp)
)

@Composable
fun dpToSp(dp: Dp) = with(LocalDensity.current) { dp.toSp() }
“`

## 見たサイト
– https://y-anz-m.blogspot.com/2021/06/jetpack-compose-text-dp.html
– https://stackoverflow.com/questions/67918

元記事を表示

Androidアプリの個人開発を始めてから1年が経ったので振り返ってみた

# はじめに

こんにちは。ちゃばと申します。

今回はAndroidアプリの個人開発を始めてから1年経ったので、1年間の振り返りをしたいと思います。

ポエム的な感覚で読んでいただけると幸いです。

よろしくお願いします。
# 目次
– [目次](#目次)
– [1. 簡単な自己紹介](#1-簡単な自己紹介)
– [2. なぜAndroidアプリ開発にチャレンジしようと思ったか](#2-なぜandroidアプリ開発にチャレンジしようと思ったか)
– [2.1. 自身のスキルアップのため](#21-自身のスキルアップのため)
– [2.2. アプリ開発をやってみたかったから](#22-アプリ開発をやってみたかったから)
– [2.3. 初期導入費用が少なかったから](#23-初期導入費用が少なかったから)
– [2.4. 副業として収入がほしかったから](#24-副業として収入がほしかったから)
– [3. 実際Androidアプリ開発にチャレンジしてみて良かったことや学び](#3-実際androidアプリ開発にチャレンジしてみて良かったことや学び)
– [3.1.

元記事を表示

UnityでAndroid用のBLEプラグインを開発した

UnityやC#で開発するのは今回が初めてなので、拙い部分があると思いますがよろしくお願いします。

プロジェクトのリポジトリ
[https://github.com/msk-R-ito/UnityBLE_for_Android](https://github.com/msk-R-ito/UnityBLE_for_Android)

# はじめに
このプラグインは、チームのメンバーから「既存の Unity BLE プラグインがうまく使えない」とのことで開発しました。そのため、個人的に使うための変数や関数など入っていますので、その部分は各々で置き換えて読み進めていただければ幸いです。

# 使い方
Sampleアプリでは、目的のデバイスが決まっている場合の処理になっています。詳細については[BLEデバイスをScanする](#bleデバイスをscanする)や[デバイスと通信をする](#デバイスと通信をする)の解説文をご覧ください。
機能ごとにクラス分けをして実装してありますが、同一クラスでも実装するも可能です。
クラス分けをして実装しているため、状態管理にUniRxを利用し画面を更新す

元記事を表示

OTHERカテゴリの最新記事