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

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

[Android]GroovyからKTSに移行によるメリデメを調査

##はじめに
Gradle Plugin4.0からKTSのサポートがあります。
KTSに移行してみて、個人的に調べたり感じたりしたメリデメのお話です。

##メリット
###1. コンパイルエラーを吐いてくれる
これが、一番のメリットな気はします。
書いていて感動しました。
Groovyは動的型付けであるのに対して、みんな大好きKotlinは静的型付けなので実現できます。
今までは、Syncして初めて文法ミスなどに気づけていましたが、これで書きながらミスに気づくことが出来るように。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599059/5d2d3f39-8b91-073a-9572-aadbed9411d3.png)

###2. メソッド引数の補完が効く。
途中まで気づかなかったが、地味にありがたい。

↓Groovyの時はなかった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

[Android] Jetpack Compose + Navigation Compose + Orbit MVI でポケモン図鑑を作ってみた

# はじめに

Jetpack Compose とOrbit MVI を組み合わせたらどんな感じになるか試してみたかったので以下のようなポケモン図鑑アプリを作成してみました。

![Image.png](https://res.craft.do/user/full/3a21bd0e-fe7a-39aa-73ad-b52ef24b655b/doc/F6345393-103D-49B0-9A99-865E3AFA5868/BD2499F1-A7A3-4E37-96FF-97F6D53ECC27_2/yTIJGlQS4Dc52wQx4yfuAacPpIzaFV8JrB1ERKLRfzsz/Image.png)

今回作成したアプリのソースコードはこちらにあります。

https://github.com/kaleidot725/PokemonLibraryWithJetpackCompose

Oribit MVI に関する詳細はこちらです。

https://orbit-mvi.org

https://github.com/orbit-mvi/orbit-mvi

# 機能

簡単なアプ

元記事を表示

Flutterで既存のiOS / Androidアプリに機能追加 (Add-to-app):基本編

# はじめに

お仕事でFlutterで作成した画面を既存のiOSアプリ・Androidアプリに追加する事になりました。
個人的にAndroidとFlutterは多少知識があるのですがiOS(特にObjective-C)の知識が皆無で少し苦戦したので、ネイティブアプリにFlutterモジュールを組み込む手順とハマったときの対応を備忘録的にまとめておきます。

既存iOSアプリはObjective-C、AndroidアプリはJavaで実装されているのでこの記事もそれに合わせたものとなっています。
また、iOSアプリではCocoaPodsを使って組み込み、Androidでは`settings.gradle`でFlutterモジュールを追加させています。

基本的には以下の公式ドキュメントを参考にしました。
[Add Flutter to existing app \| Flutter](https://docs.flutter.dev/development/add-to-app)

# 環境
* MacBookPro M1 BigSur 11.6
* Xcode:12.5.1
* And

元記事を表示

Android Emulatorのみを起動する

# 概要

アプリを開発してると、少し前のバージョンの動きを確認する際やビルドマシンでビルドしたアプリの動作確認をする際などに、apk/aabをインストールして動作を確認することがあります。
このときに実機にインストールしてもいいのですが、なかなか認識しないことがあるためエミュレーターを使っています。
そんなときにAndroid Studioを起動→プロジェクトをビルド→エミュレーターで確認は少し時間がかかるのとメモリを食ってしまうので、エミュレーターのみ起動する方法を調べていました。

公式のサイトでも十分分かりやすいのですがよく使うオプションなどまとめたかったので記事にしました。

# 方法

## エミュレーター名一覧表示

“`
emulator -list-avds
“`

## エミュレーター起動

“`
emulator -avd avd_name [ {-option [value]} … ]
“`

# 例

> たとえば、Mac で実行されている Android Studio 内からエミュレータを起動する場合、デフォルトのコマンドラインは次のようになります。

元記事を表示

Androidでマルチモジュール化した簡単な実例

こんにちは

現在Hiltの導入のサンプルを作っているのですが、~~ついでに~~マルチモジュール化をやってみました。

ディレクトリ構成としては、アプリ名がhilt_sampleとすると

“`
└── hilt_sample
├── data
│   └── repositories
│   └── MainRepositoryImpl.kt
├── domain
│   ├── repositories
│   │   └── MainRepository.kt
│   └── usecases
│   └── FetchSomeNumberUseCase.kt
└── presentation
├── MainActivity.kt
└── MainViewModel.kt
“`

↑このようになっています。
Domain層にRepositoryのinterfaceを置いて、Usecaseから外側の層(Dat

元記事を表示

textView.text = “文字列” はできるのに editText.text = “文字列” とできない理由とは

# 経緯

俺「Javaを使っていたけど、これからはKotlinだ! まずは TextView での文字列の表示のあたりから。」
俺「`textView.setText(“文字列”)` っと。ほとんどJavaと変わらないけど、セミコロンが不要になったのはいいな」
Android Studio「セッターメソッドの呼び出しをプロパティ構文に置き換えられるよ!」
俺「なるほど!プロパティ構文で書けるのか、`textView.text = “文字列”` っと。いいね!」

俺「さて、じゃあ TextView の派生クラスである EditText の方も書き換えよう。 `editText.text = “文字列”` っと」
Kotlin「`Type mismatch: inferred type is String but Editable! was expected`」
俺「え?」
Kotlin「`Editable`じゃないとダメです。`String` なら `setText()` を使って。」
俺「…」

# 理由

`TextView#getText()` の戻り値の型は `CharS

元記事を表示

Viewを突き出して表示させたい Part2

#初めに

[Viewを突き出して表示させたい ](https://qiita.com/Tsubasa12/items/8db55ca6a186abf2d905)

前回こちらの記事で
FrameLayoutやLinearLayoutで使える
Viewを凸出して表示させる方法を書きました

今回はConstraintLayoutを使って Viewを突き出して表示させていきたいと思います

#コードでxmlに書いていく
前回と同じように Viewが突き出しているこ事を確認できるように、色のついたViewを用意しました

カウントアプリ(Android入門)

##はじめに
こんにちは。今回は、Androidアプリ開発の勉強会にて制作したアプリの1つを紹介します。
AndroidStudioを使用したことがない情報系の学生を対象として行っています。
使用言語は、Kotlinです。
※途中で飽きてくると日本語が適当になりますがあしからず

##この記事の内容
– 今回作るものについての説明
– レイアウトを作る
– アクティビティを作る
– まとめ

##今回作るものについての説明
今回は、カウントアプリを制作していきます。ボタンを押すと数字が増えたり、減ったりする単純なアプリです。

####ボタンの説明
| ボタン | 動作 |
|:-:|:-|
| PLUS | 数字を1追加する |
| MINUS | 数字を1減らす |
| CLEAR | 数字をリセットする(0にする) |

元記事を表示

Pretiaやーる

# はじめに
Pretiaやーる

# 開発環境
– Unity 2020.3.12f1
– Pretia SDK 0.5.0
– Oppo Reno3 A

# 実装
1.クイックスタートガイド

https://docs.developers.pretiaar.com/ja/tutorials/getting-started/

2.開発者コンソール

https://developers.pretiaar.com/

3.開発者コンソールから3Dスキャナーアプリをダウンロード
mapping-app(0.3.0).apk

4.スキャンアプリを使用してスキャンし保存、Relocalizationテストする

5.Unity 2020.3.12f1を開く

6.Pretia SDKをインストール
Packages/manifest.jsonに追記

~~~manifest.json
{
“scopedRegistries”: [
{
“name”: “Pretia Technologies”,
“url”: “https://registry.n

元記事を表示

TextInputLayoutにxmlでテキストを指定したらエラーが出た

# やりたかったこと
_TextInputLayout_ を使った[テキストフィールド](https://material.io/components/text-fields)にテキストを指定したかった

# やったこと
こんな感じにxmlで _TextInputLayout_ にテキストを指定してみた

“`


“`

# 出たエラー
> Cannot find

元記事を表示

Androidアプリ開発での音声認識の権限でハマった話

## ハマったエラー
“`
System.err: java.lang.SecurityException: Not allowed to change Do Not Disturb state
“`
## 解決法
いろいろ調べた結果,海外サイトしかなかったが頑張って読んで解決した.
なぜかわからないが,サイレントモード系の権限が関係しているらしい.

“`AndroidMainifest.xml

“`
で,下のやつをエラー発生箇所(僕の場合は,音声認識開始ボタンを押したところでエラーが発生したので,そこらへんの動作付近)に入力.

“`
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Buil

元記事を表示

【kotlin】超簡単なMVPを実装してみた、⑤recyclerviewとの連携

# はじめに
今回はMVP(アーキテクチャ)に沿って、recyclerviewとの連携を実装していきたいと思います。

# 実装内容
・追加ボタンを押した時にrecyclerviewにアイテム(✖︎マークのセル)を追加し表示する。
・✖︎マークのセルを押した際に押したセルを削除し、反映させる。

![Screenshot_1644046349.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784089/a77055b6-5fb4-098d-7dcf-d3d395712231.png)

# 実装
**[レイアウト]**
①addButton
②recyclerView
![Screenshot_1644046349.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784089/244a451c-dd00-b6ce-4466-2d17ff52ef72.png)

**[コード]**
**・準備**
①BasePresente

元記事を表示

Kotlin Flow 勉強まとめ

#目次

1. Kotlin Flow とは
2. サンプルコード
3. まとめ

##1. Kotlin Flow とは

**suspend fun**は、返す値が1つのみで、**Flow**は、複数の値を順に出力することができることが、大きな違いである。リアルタイムで、更新処理を行いたい場合に有効である。(UI の状態が変化したときに、変更を受け取る等)
また、**Flow**は、**suspend fun**を使うことで、メインスレッドを妨げることなく、ネットワークリクエストを行える。

**Flow**は、大きく分けて3つの役割を持っています。

・**プロデューサ**‥非同期に出力する値の作成を行う
・**インターミディアリ**‥出力されたデータに変更を加えることができる
・**コンシューマ**‥得られた出力値を利用する

“Repository“,“ViewModel“に当てはめると、出力値の作成を“Repository“で行い、使いやすい状態に変換する(mapで、リストの中身を置き換えるなど)、次に、得られた出力値を適切なスコープで呼び出し、UInへと反映さ

元記事を表示

Flutter doctorコマンドで「Android license status unknown.」が出る場合の解決法

#はじめに

“`console
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.3, on macOS 11.1 20C69 darwin-x64, locale ja-JP)
[!] Android toolchain – develop for Android devices (Android SDK version 30.0.2)
✗ Android license status unknown.
Run `flutter doctor –android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details

元記事を表示

【Android】初心者向け シンプルなドラムロール式TimePickerサンプル

以前にドラムロール式のDatePickerのサンプルを紹介しました。
https://qiita.com/masayah/items/c979e42b6333f15bd930

今回時刻入力が必要になったので時刻用のTimePickeを作成しました。サンプルとしてご紹介します。
私と同じようなAndroid開発初心者の方の参考になれば幸いです。

#ドラムロール式TimePickerのイメージ
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546646/ac71483c-4482-ed64-5a95-ec89892ccba7.png)

#時刻入力でドラムロール式の必要があるのか?
最近のAndroidの標準の時刻入力方式は私も気に入ってます。こういう↓やつですね。
![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546646/80bf3402-0a53-e861-8494-43b2b018a13a

元記事を表示

RecyclerViewのいつもの設定をXMLでスマートに設定する方法

#はじめに
歴史のあるプロジェクトでは大体LayoutManagerの設定などをkotlinで指定しているのをよく見かけます。
この辺りはxmlでも設定ができるので、紹介したいと思います。

#LinearLayoutManagerを設定する場合

LinearLayoutManagerを設定する場合は以下をxmlに設定します。

“`

“`

設定は以上です。
LinearLayoutMa

元記事を表示

Couchbase Lite機能解説:Androidアプリ開発におけるライブクエリ利用

# はじめに

以前にこちらの記事で、ライブクエリ、つまりデータベースの変更を監視するクエリについて、概要を記しました。

https://qiita.com/yoshiyuki_kono/items/8da15296e9a979fbff3d

今回は、以下の公式チュートリアルの内容をベースに、Androidアプリ開発におけるライブクエリの利用について、具体的なコードを交えて解説します。

https://docs.couchbase.com/tutorials/university-lister/android.html

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

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

元記事を表示

日付を比較してどれだけ前かを表示したい

#初めに
今回、やりたいこととしては特定の日付と現在時刻を比較して、何秒前の物なのか等を出し分けるためのロジックです
組み分けとしては、0~59秒前、1~59分前、1~23時間前、1日前、それ以降は日付表示となっています

###コード
適当な名前で作った`DataClass`内に下記のコードを書くことにより、その`DataClass`を利用する際は`toString()`とするだけで望んだ結果が帰ってきます

“`kotlin:
override fun toString(): String {
val createdAt = at.toInstant().toEpochMilli()
val nowAt = ZonedDateTime.now().toInstant().toEpochMilli()
val diff = nowAt – createdAt
val sec = diff / 1000L
if (sec in 0..59) {
return “${sec}秒前”
}
val min = sec

元記事を表示

Firebase Storageで処理がタイムアウトしないよー

##はじめに
Firebase Storage、アプリから便利に使ってますが、オフライン時に処理が全くタイムアウトしないことが発覚:joy:

まあなんとかなったので、ご報告
##どうやる?
iOSは

“`ObjC
FIRStorage *storage = [FIRStorage storage];
const int timeout=5; //5秒
storage.maxOperationRetryTime=timeout;
“`
これはdeleteするとき。Operation以外にUploadとDownloadもある。リトライだけど5秒で終わる。

androidは

“`Java
FirebaseStorage storage = FirebaseStorage.getInstance();
final long timeoutMS = 5000; //5秒
storage.setMaxDownloadRetryTimeMillis(timeoutMS);
“`
なぜかdeleteはD

元記事を表示

【Unity】UnityとAndroid SDK & NDK Toolsをインストールする時に「ダウンロードが失敗しました: Validation Failed」とエラーが出る

Uninty Hub から「Android SDK & NDK Tools」をモジュール追加しようとすると、
「ダウンロードが失敗しました: Validation Failed」とエラーが出て追加できず、
結構ハマってしまったのでその議事録です。

# 結論
著者の環境では、ファイアウォールの設定で解決しました。

コントロールパネル > システムとセキュリティ > Windowsファイアウォールによるアプリケーションの許可 > Unity Hub の項目をチェックして、「ドメイン / プライベート / パブリック」は環境に応じてチェック

一応PCを再起動して、再度モジュールの追加するとインストールできました。

# 環境
– Windows10
– Unity Hub 3.0.1
– Unity 2020.3.27f1

# エラー内容
UnityHubから、Unity 2020.3.27f1をインストールする時に、
「**Android SDK & NDK Tools**」にチェックをして、インストールしようとしました。

![68747470733a2f2f716969746

元記事を表示

OTHERカテゴリの最新記事