Android関連のことを調べてみた

Android関連のことを調べてみた
目次

#320 2024-03-31 駄菓子 議事録

## [Retaining beyond ViewModels](https://chrisbanes.me/posts/retaining-beyond-viewmodels/)

– Circuitというライブラリ
– Slackが出している
– いわゆるMVIみたいなやつ?React Hooksみたいな感じ?
– ViewModelという概念を使わない
– CircuitInjectアノテーションを使っていい感じにするとStateをComposableとして扱うことができる
– イベント更新する時はforegroundじゃないとダメなのでrepeatOnLifecycleを使わないとダメ
– けどめんどくさいけどcircuitを使えばその周辺の問題(ライフサイクルとか)を考慮しないで済む
– rememberRetainedでプレゼンターのライフサイクルを超えてstateを保持できるよ
– マーシャル??:rememberSavableを用意しないといけない時にSaverとかいうrememberSavableに即した

元記事を表示

Gradleリポジトリの検索条件を設定して、ビルドを効率化

Android Studioで新規プロジェクトを作成した場合に、setting.gradle.ktsのpluginManagementが以下のように作成されるようになっています。

“`setting.gradle.kts
pluginManagement {
repositories {
google {
content {
includeGroupByRegex(“com\\.android.*”)
includeGroupByRegex(“com\\.google.*”)
includeGroupByRegex(“androidx.*”)
}
}
mavenCentral()
gradlePluginPortal()
}
}
“`

Gradleでは複数のリポジトリが記述されている場合、先頭から順にリクエストし、エラーとなった場合は次のリポジトリにリクエス

元記事を表示

mockkでテストを書くときにこれさえ押さえとけばある程度かける

# 初めに
今回はAndroidのテストコードで使うMockkでテストを書くときにこれ知ってればとりあえず読み書きできるよっていうものを紹介していきます
### 本文
`@Before`

これは単純にRespositoryやUseCaseなどの初期化をする部分
“`kotlin
@Before
fun hoge() {
fuga: FugaRepositoy = mockk(relaxed = true)
}
“`

`@Test`

これがある部分はメイン部分でテストをしたい内容が書いてあります

coEvery

coroutine scopeが必要なAPIなどから受け取るデータを作成できます
こうすることで持ってるデータによってしてほしい挙動をしてるかどうかを確認することができます

coVerify

coroutine scopeを使ってる部分のデータが正しいかを確認するためにあります

### 最後に
すごく簡略化して書いているので実際に触ってみてもらうのがいいと思いますが、まだ触ったことのない方がコードと並列して読むと理解しやすいと思

元記事を表示

AndroidStudioのプラグインを使用して要素入力済みのデータを作成する

AndroidStudioのプラグインを使用する事があまりなかったのですが、便利な機能があるので最近調べています。

Jetpack ComposeのPreView表示用やユニットテスト実装にデータをを設定したりすることが多いので便利だと思いました。

# 要素を入力方法

プラグインの入れ方はこちらを参考にしてください。

https://qiita.com/yuta317/items/4599276d5b2e58250364

こちらを使用します

https://plugins.jetbrains.com/plugin/10942-kotlin-fill-class

![スクリーンショット 2024-04-07 20.59.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/343a086f-d1b8-7e2a-bc54-a83c629634f6.png)

こちらをインストールいたします。

# 使用方法

まずは作成したいデータの変数定義をします。
`val user = Us

元記事を表示

Androidの面白そうなライブラリ5選

# はじめに
今まで勉強してきて「面白そう」「いつか触ってみたい」「そのうち役に立つかも」と思った内容でも、タイミングが悪かったり、しっかりと時間をとって理解する、使ってみる段階までいかなかったりすると、ウィンドウに残したまま長く放置してしまいがちです。
そのせいで PCにどんどん負荷がかかってしまうので整理も兼ねてメモがわりに記事にしようと思います。

# スポットライト

https://github.com/TakuSemba/Spotlight

参考記事

https://qiita.com/Mosea/items/ae1589b64b21c33fa8bd

# 縦書き

https://github.com/taizan/vjap

参考記事

# 折りたたみレイアウト

https://github.com/alexvasilkov/FoldableLayout

参考記事

https://learn.microsoft.com/ja-

元記事を表示

【kotlin】coroutines-coreに含まれている不要なファイルを除外する方法

# はじめに
一昔前まではRxなどを使用されているプロジェクトがちらほらありましたが、現段階ではほとんどがcoroutineを使用する形で置き換わってきたのではないでしょうか?
coroutineを導入する際にcoroutines-coreをgradleへ追記し使用すると思いますが、このcoroutines-coreにはdebug用のリソースファイルが含まれています。
今回は生成されるAPKファイルにdebug用のリソースファイルが含まれないよう除外する方法を備忘録的にまとめたいと思います。

# coroutines-coreのdebug用ファイルを除外する方法
除外する方法は簡単で、gradleのandroidブロックに以下を追加する形になります。

“`app/build.gradle
packagingOptions {
resources.excludes += “DebugProbesKt.bin”
}
“`

以上で除外完了になります。

# さいごに
今年もKotlin Festが開催されるようですねー!
5年ぶりにオフラインで開催するようなので、伺う予定で

元記事を表示

Flutter で Android をビルドした時に Your project requires a newer version of the Kotlin Gradle plugin. と最新の Kotlin Gradle plugin が必要だと怒られた

# これなに
Flutter で Android をビルドした時に、 `Your project requires a newer version of the Kotlin Gradle plugin.` と言われて、最新の Kotlin Gradle plugin が必要だと怒られた時の対処内容のまとめ。
“`bash
┌─ Flutter Fix ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [!] Your project requires a newer version of the Kotlin Gradle plugin. │
│ Find the latest version

元記事を表示

折り返し可能かつ改行不能なEditTextのつくりかた

Googleカレンダーのタイトルのような挙動をする入力フィールドを作成したい場合の方法です。
情報が少なく動作する方法を見つけるのに苦労したので残しておきます。

– 端まで入力すると次の行に折り返す
– IMEのActionがDoneとなっており改行はできない

![ezgif-3-5e0291b992.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762653/bc4de0b0-a54a-99c2-08f8-4321fb2bd8d8.gif)

## 結論
コードでEditTextを参照し、次の設定を行います。
“`kotlin
edittext.imeOptions = EditorInfo.IME_ACTION_DONE
edittext.inputType = EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE
edittext.setHorizontallyScrolling(false)
edittext.maxLines = Integer.MAX_VALUE

元記事を表示

Five Must-Know Most Popular Figma to Code Plugins

> This article aims to introduce and compare several leading Figma plugins that convert design drafts to code.

### [I. Codia](https://codia.ai)

[Codia AI](https://codia.ai) can convert Figma designs to production-ready code within minutes for web and app development, just like a human coder. This significantly amplifies [design-to-code](https://codia.ai/design-to-code) efficiency by 10 times or more.

Pros:

– The technology stack supported by [Codia](https://codia.ai) includes:

Web: A ric

元記事を表示

AndroidデバイスをLinuxサーバーに変える (4) チャットサーバーをウィジェットから起動する

# はじめに

前回までにAndroidデバイスを使ってLinux環境を構築しチャットサーバーを動作させるところまで進めた。

https://qiita.com/rairaii/items/cc3771cdb3bff42d9da4

この記事ではTermuxで動作するチャットサーバーをAndroidのウィジェットから直接起動する方法について解説する。この方法を用いることで、デバイスの画面をタップするだけでサーバーを起動できるようになり、より迅速かつ便利にサービスを利用することが可能となる。

これでデモを実行するときにターミナルを開いてコマンドを入力するといった手間を省くことができる。

## Termux:Widgetのインストール

AndroidのウィジェットからTermuxのスクリプトを実行するために[F-Droidアプリ](https://f-droid.org/ja/)からTermuxのプラグインの1つである`Termux:Widget`をインストールする

## ウィジェットを使ったチャットサーバーの起動

Termuxを用いて、チャットサーバーを簡単に起動するためのシ

元記事を表示

AndroidデバイスをLinuxサーバーに変える (3) chatgptを使ったチャットサーバーを動作させる

# はじめに

前回はAndroidでLinux環境を実現するTermux上でflaskを用いてWebサーバーを動作させた。

https://qiita.com/rairaii/items/183bab10869ab52c0531

この記事では、langchainライブラリを使ったchatgptとのチャットサーバーを構築し動作させる。

# Termuxでチャットサーバを構築する

シンプルなチャットサーバ[githubに用意しておいた](https://github.com/aRaikoFunakami/test_langchain/tree/main)。
## Gitのインストール

チャットサーバのソースコードをgithubからダウンロードするために`git`コマンドをインストールする

“`terminal
$ pkg install git
“`

このコマンドにより、GitがAndroidデバイス上のTermux環境にインストールされる。

## 作業フォルダの作成

プロジェクト管理のための作業フォルダを作成し、そこに移動する。

“`terminal
$ m

元記事を表示

AndroidデバイスをLinuxサーバーに変える (2) flaskでWebサーバーを動作させる

# はじめに

前回はAndroid上でLinux環境を提供するTermuxのインストールとsshでのリモートアクセスまでを確認した。

https://qiita.com/rairaii/items/c45d19179cda01054a0e

今回はAndroid上でLinux環境を提供するTermuxを用いて、PythonとFlaskをインストールし、簡単なWebアプリケーションを作成・実行するプロセスを解説する。Termuxを介して、Androidデバイスを使って、開発環境を構築し、ローカルでWebサーバーを動作させる方法を紹介する。この記事では、Pythonのインストールから、Flaskを使ったWebアプリケーションの開発、実行までをカバーする。

## Pythonのインストール

まず、TermuxでPythonをインストールする。以下のコマンドを実行し、Pythonをセットアップする。

“`terminal
$ pkg install -y python
$ python -V
Python 3.11.8
“`

インストール後、Pythonのバージョンを確認して、

元記事を表示

AndroidデバイスをLinuxサーバーに変える (1) Termuxとsshで作業を開始

# はじめに

Androidで動作するクライアントアプリとWebサーバーとの組み合わせで動作するサービスを構築したときに、WebサーバーをAWSなどで公開してデモ環境を構築するのは一手間かかる。また、そのデモ用のWebサーバーのセキュリティーやメンテナンスなどもあまり考えたくない。

デモのための環境は手元でサクッと構築できるのが一番である。そのデモ環境を人に渡す場合もAndroid機器を渡すだけで終了するのであればシンプルに終了する。このよう要求を満たすデモ環境を用意するために、Androidで動作するLinux環境を用意し、そこにデモ用のWebサーバーを構築することにした。

Androidデバイスを手軽にLinux環境に変える方法として、Termuxのインストールと設定、さらにはMacや他のPCからのSSH接続設定までのプロセスを解説する。この記事では、Androidデバイス上でTermuxを使ってLinux環境を構築し、OpenSSHをインストールして外部からのSSH接続を可能にするまでの手順を紹介する。

## AndroidにTermuxをインストールし、Linux環境を

元記事を表示

【C#】サーバー側でAndoridのレシートを署名検証する

C#(.NET)での実装が調べてもあまり出てこないので残しておきます。

:::note warn
コピペで使う場合でも必ずドキュメントを読んだ上で使用してください。
課金に関わることなので重大な問題が発生する可能性もあります。
発生する問題については一切の責任を負いかねます。
:::

## はじめに
Andoidのレシート検証は2つあります。

1. 自分のアプリのレシートか検証(ローカルでの署名検証)
1. Googleのサーバーにレシート情報があるかを検証(APIでの検証)

どちらも行うことが推奨されています。(どちらかしかやってない人が多いのではないでしょうか)
今回は1. 自分のアプリのレシートか検証の部分を書きます。

## 環境
.NET8

## 用意するもの
サーバー側で実装しているとレシートの現物が手に入らない、そもそも何を使用するのかというところで最初躓く可能性があるのでまとめておきます。

サーバー側 : 公開鍵
クライアント側 : 発行されたレシートと署名

## コード
“`csharp
public bool Verify(string re

元記事を表示

音声認識中のAndroidの通知音をミュートする方法

# はじめに

AndroidのSpeech Recognizerを利用して音声認識機能を実装する際、音声認識の開始を示すための”ピロン”や”ポロン”といった通知音が自動的に鳴ることがある。これらの音はシステムによって生成されるため、通知音を無効にしてSpeech Recognizerを実行する直接的な方法は存在しない。

しかし、この通知音が頻繁に鳴り、場合によっては邪魔になることもあります。実装したい機能によっては、音を一時的にミュートしたい状況が生じるかもしれない。最近のAndroidバージョンでは、`adjustStreamVolume`メソッドを用いて通知音をミュートするのが良いようだ。 今回の内容はAndroid 9で動作確認した。

## adjustStreamVolumeを使用して音声認識の通知音をミュートする

`adjustStreamVolume`を使用する場合、特に問題なく通知音をミュートすることができる。

“`kotlin
val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager

元記事を表示

Slack Circuitの`rememberRetained{}`のドキュメントとコードを読むメモ

https://qiita.com/takahirom/items/8888b324b40bf5eb252b の続きです。

`rememberRetained{}`でViewModel相当のスコープを持てるということでしたが、それはどういうことなのか。どうやってnavigationとの連携をしているのかが気になったので見ていきます。

まずは公式ドキュメント。ViewModelを使っているとありますね。

> rememberRetained – custom, remembers a value across recompositions and configuration changes. Can be any type, but should not retain leak-able things like Navigator instances or Context instances. Backed by a hidden ViewModel on Android. Note that this is not necessary in most cases if handl

元記事を表示

Pixcel 6 API 33で実行

### Android Studio Iguana Kotlin

で実行すると
“`
:app:mergeDebugResouces 1 warning
 AGPBI: {“kind”:”error”,”text”:”
“,”sources”:[{“file”:”C:\\Users\\lhssy\\AndroidStudioProjects\\Test\\app\\src\\main\\res\\values
:app:packageDebugResouces 1 warning
:app:writeDebugSigningConfigVersionas UP-TO-DATE6errors
 com.android.build.gradle.tasks.ResourceException:
 com.android.build.gradle.tasks.ResourceException:
 C:\Users\lhssy\AndroidStudioProjects\Toushiup\app\src\main\res\values\strings.xml:2:6
“`

と出

元記事を表示

Android上でWindowsアプリを動かす!【Winlator】

# はじめに
皆さん、簡単に持ち運べてどこでも使用できる、小型のWindows機が欲しいと思ったことはありませんか?
でも、ミニノートPCとかを買うほどでもない……
そんなあなたにお勧めするアプリが、「Winlator」です!
この記事では、Winlatorの使用方法について解説したいと思います。

# Winlatorって何?
簡潔に言えば、
Winlatorは、AndroidデバイスでWindowsアプリを実行するアプリです。これは、WineとBox86/64という2つのアプリを組み合わせて作られています。

Wineは、WindowsアプリをWindowsOS以外のOSでも動かせるようにするものです。しかし、Wineはx86/x64アーキテクチャ専用なので、ARMアーキテクチャのAndroidデバイスでは直接使えません。そのため、Box86/64が必要となります。これは、x86/x64のプログラムをARMアーキテクチャに変換してくれるもので、ARMデバイス上でx86/x64のプログラムを実行できるようにしてくれます。

Winlatorでは、まずAndroid上でBox8

元記事を表示

AndroidアプリにGoogle Mapを表示する手順

私がAndroidアプリでGoogle Mapを使う開発を行ったので、備忘録として1からGoogle Mapを表示する手順を記録しておきます。

# Google MapのAPIキーを取得する
前提としてGoogle MapのAPIキーが必要になります。
これはマップを表示するたびに料金がかかるので注意が必要です。
何回表示までは無料というサービスがあるので小規模であれば積極的に利用して大丈夫そうです。

https://mapsplatform.google.com/intl/ja/pricing/

APIキー取得の手順は調べればたくさん出てくるので割愛します。
私は以下を参考にしました。

これを見れば完璧!Google Maps API 取得方法をご紹介します。

# Android Studioでプロジェクトを作成する
Android Studioで`New Project` > `Empty Views Activity` を選択して`Next` > 設定を選んで`Finish`を選択します。

![001.jpg](https://qiita-image-store.s

元記事を表示

Android Studio をアップグレードしたら失敗した「AOP 起動トランスフォーマーの開始に失敗しました」

# 目次
[事象](#事象)
[原因](#原因)
[解決方法](#解決方法)
[サイトの手順通りにやってみた](#サイトの手順通りにやってみた)
[備考](#備考)
[参考サイト](#参考サイト)

# 事象
Android StudioのインストーラーでAndroid Studioをアップグレード後、起動しようとしたら以下のポップアップが表示されて起動に失敗した。

:::note alert
**AOP 起動トランスフォーマーの開始に失敗しました**
![エラーポップアップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2330584/c7ea9c9c-b905-d2f1-a94b-86401ad78e8e.png)
:::

因みに、上記ポップアップに出ている
“`
C:\Users\ユーザ名\AppData\Roaming\Google\AndroidStudio4.1\jp.sourceforge.mergedoc.pleiades\cache
pleiades.log
“`
の中身

元記事を表示

OTHERカテゴリの最新記事