- 1. 音声認識中のAndroidの通知音をミュートする方法
- 2. Slack Circuitの`rememberRetained{}`のドキュメントとコードを読むメモ
- 3. Pixcel 6 API 33で実行
- 4. Android上でWindowsアプリを動かす!【Winlator】
- 5. AndroidアプリにGoogle Mapを表示する手順
- 6. Android Studio をアップグレードしたら失敗した「AOP 起動トランスフォーマーの開始に失敗しました」
- 7. AndroidとLINEで定型文を定期送信する
- 8. Jetpack Compose の Linebreak が反映されない
- 9. UnityでAndroidのアプリをビルドする際にアイコンを漏れなく設定しておくコード
- 10. 【UE5】AndroidアプリにFirebaseを組み込んだら広告を使用している判定になった
- 11. LazyLayoutで無限スクロールを実装する
- 12. 【Android/Java】Linuxコマンドを実行
- 13. AndroidStudioでカレンダーを作ろう
- 14. アプリリンク( App Links )のテストには Maestro が良さそうだった
- 15. jetpackComposeでTextを装飾するbuildAnnotatedStringを使ってみた
- 16. 【Android】アプリにPythonのプログラムを組み込む
- 17. 【Android】 CircleCI + Roborazzi + Showkase で VRT 試しました(改)
- 18. Androidの有料アプリを無料でクローズドテストしてもらう方法
- 19. 【Android】StateFlowのEvent的使い方まとめ
- 20. UiEventを使ったCompose Dialogの表示/非表示
音声認識中の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アプリにGoogle Mapを表示する手順
私がAndroidアプリでGoogle Mapを使う開発を行ったので、備忘録として1からGoogle Mapを表示する手順を記録しておきます。
# Google MapのAPIキーを取得する
前提としてGoogle MapのAPIキーが必要になります。
これはマップを表示するたびに料金がかかるので注意が必要です。
何回表示までは無料というサービスがあるので小規模であれば積極的に利用して大丈夫そうです。https://mapsplatform.google.com/intl/ja/pricing/
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
“`
の中身
AndroidとLINEで定型文を定期送信する
## 前置き
iPhoneのオートメーション、LINE公式アカウント、LineNotify、LINEmessagingAPIでは要件を満たせない場合やiPhoneを持っていない場合の苦肉の策です。GoogleAssistantの解釈に依存している部分があるため、思わぬ動作をする可能性はあります。
## 使用したもの
– Android端末
– GoogleAssistant
– LINE## 準備
1. LINEで「LINE友だちを連絡先に追加」のトグルを有効にする
2. Android端末でGoogleAssistantを実行できるようにする## 手順
1. GoogleAssistantの「ルーティン」を新規作成
2. 「カスタムアクション」でLINEを送信する命令を設定する
例:`{送信対象アカウント名}に ‘{メッセージ内容}’ ってLINEを送って`
Jetpack Compose の Linebreak が反映されない
## 概要
Jetpack Compose の LineBreak を設定すると、長いテキストで改行を挿入するタイミングを調整することができます。以下にコード付きのドキュメントがあります。
https://developer.android.com/reference/kotlin/androidx/compose/ui/text/style/LineBreakところが以下のようなコードを実行してみたところ
“`kotlin
@Composable
@Preview
fun TestView() {
Text(
text = “こちらはいい感じのところで改行して欲しい文章です。よろしくお願いします。”,
style = TextStyle(lineBreak = LineBreak.Heading),
fontSize = 22.sp,
)
}
“`Preview でいい感じに改行表示されているものの、実機(Android 11)では改行位置が調整されていない形になってしまいました。
| Preview
UnityでAndroidのアプリをビルドする際にアイコンを漏れなく設定しておくコード
Androidアプリのアイコンは通常のアイコン、AdaptiveIcon,Roundアイコンと何故か3種類もあります。
それなりの規模のPJだと基本的にBatchModeでビルド関数叩いて、その際に引数で環境情報とか何某を入れるみたいな実装をすると思います。
そんなときにコード側でアイコンを変えるのが普通に面倒&忘れがちだったので備忘も兼ねて残しておきます。### 環境
– Unity2021.3.36f1### コード
“` cs:build.cs
//まずはAdaptiveとRound以外を設定
var icons = PlayerSettings.GetIconsForTargetGroup(BuildTargetGroup.Android);
for (var i = 0; i < icons.Length; i++) { icons[i] = 標準のアイコンTexture; } //標準のアイコンを反映 PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, icons); /
【UE5】AndroidアプリにFirebaseを組み込んだら広告を使用している判定になった
## はじめに
AndroidアプリにFirebase Analyticsを組み込んでGoogle Play Consoleにアップロードしたところ、広告は全く使っていないのに広告IDの申告を更新しなさいとエラーが出てしまいました。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/75643634-54a6-373c-4f0b-4fd402e02ed4.png)本記事では、広告IDの使用申告を更新することなくこのエラーを回避する方法を解説します。
## 開発環境
– Windows11
– UE5.1.0
– [Firebase – Features](https://www.unrealengine.com/marketplace/ja/product/firebase-features)(有料です)
– 広告を使用していないモバイルプロジェクト## 原因
![4.png](https://qiita-image-store.s3.ap-northeast-1.ama
LazyLayoutで無限スクロールを実装する
# 前置き
以前は`HorizontalPager`で無限スクロールを擬似的に実装しましたが、
今回はより低水準な`LazyLayout`を利用してもう少しスマートに実装を試みます。https://qiita.com/Seo-4d696b75/items/566beaf56df8da6421ca
# 完成品
https://github.com/Seo-4d696b75/compose-loop-pager/tree/lazylayout
# 実装の解説
## LazyLayoutによる基本実装
まずは`LazyLayout`で表示する各ページの描画方法を定義する必要があります。重要なのは`LazyLayoutItemProvider`の2つのプロパティ・メソッドだけです。
– `itemCount`:
【Android/Java】Linuxコマンドを実行
## やりたいこと
端末の温度やIPアドレスなど、Androidフレームワークから取得するより、Linuxカーネル上から取得したほうが、簡単な場合がある。
AndroidからLinuxコマンドを実行するやり方を、備忘録として残しておく## Step1.Linuxコマンドの実行メソッド
Linuxコマンドを実行するメソッドを用意する~~~java
public void commandExecution(String command) {
Process process = null;
BufferedWriter writer = null;
BufferedReader reader = null;
StringBuilder result = new StringBuilder();try {
String processInfo;
writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
AndroidStudioでカレンダーを作ろう
AndroidStudioのインストールが完了していることを前提として始めます.
### 新しいアプリのためのファイルを作ろう
AndroidStudio左上の「ファイル」⇒「新規」⇒「新規プロジェクト」
“「 Alt+F ⇒ N ⇒ Enter 」でも可“下記のものを選んで「次へ」を押します.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759397/a55fd66b-7865-bc5e-5f37-238f52b65dff.png)Nameに好きなアプリ名を入力し,
LanguageをJava,
Minimum SDKをAPI 24(“Nougat”;Android 7.0)を選択します.XMLファイルとJavaファイルが開かれた状態になれば成功です.
### プロジェクト構造を設定しよう
カレンダーを作成するためにライブラリーを使用しますが,プロジェクトのコンパイルSDKが少なくとも34以上でないといけません.ファイル⇒プロジェクト構造(Ctrl +
アプリリンク( App Links )のテストには Maestro が良さそうだった
最近Androidの[アプリリンク( App Lins )](https://developer.android.com/training/app-links/)の起動テストする機会がありました。
## アプリリンクについて
まずアプリリンクをサポートするには AndroidManifest.xml を次のようなの構成にします。
“`xml
jetpackComposeでTextを装飾するbuildAnnotatedStringを使ってみた # はじめに
JetpackComposeより以前ではSpanを使ってTextの一部などを装飾していましたが、それと同じことをJetpackComposeでやろうとした時にどうやってやるかを調べて使ってみた所 なんとなくで使うには少しクセがあったので自分で公式の内容を触ってみたメモ的なものを記事にして残しておこうかと思います。# buildAnnotatedString
[buildAnnotatedString Android公式](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/AnnotatedString)
公式内での使い方の例で一番簡単なのは実際に使ってみるとこんな感じ
“`
Column(
modifier = Modifier
.fillMaxSize()
.background(color = Color.White)
) {Text(text = build
【Android】アプリにPythonのプログラムを組み込む
## はじめに
Androidアプリは通常kotlinやFlutterを使って実装しますが、プラグインを用いる事で、Androidアプリのプログラムの中に、Pythonのプログラムを組み込むことができます。そうする事で、例えば、Pythonでお手軽に機械学習の実装をしてAndroidアプリに組み込むことができます。Androidのアプリを開発する中で「Pythonだったら簡単にできるのに…」と感じたことがある方に、ぜひ読んでいただきたいです。
## 動作環境
– Android Studio Hedgehog | 2023.1.1 Patch 2
– kotlin 1.9.22
– macOS 14.1
– Python 3.9.6## Pythonの導入準備
Android Studioで空のプロジェクトを作成し、Pythonを導入するためにChaquopyというプラグインを追加します。build.gradle.kts (Project) に1行を追加してSync Nowします。
わからない場合は、[こちらのページ](https://chaquo.com/chaquopy
【Android】 CircleCI + Roborazzi + Showkase で VRT 試しました(改)
## はじめに
2023年3月からAndroidアプリエンジニアをしている KSND([GitHub](https://github.com/kosenda)、[X](https://twitter.com/ksnd_dev) )といいます。以前自分が書いた以下の記事では `AWS S3` を使っていましたが、`AWS S3` を使わなくて済むようにするなど改善点がたくさんあり書き直したいと思ったので今回この記事を書きました。
https://qiita.com/KSND/items/8b285c54f1b56d598740
## 想定読者
– `Jetpack Compose` を使っているAndroidアプリのプロジェクトに `VRT`(画像回帰テスト) を導入したい方
– `VRT` 導入にあたって `GitHub Actions` ではなく、`CircleCI` を使わないといけない何かしらの理由のある方## 実際に試した際の比較画像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazona
Androidの有料アプリを無料でクローズドテストしてもらう方法
# はじめに
初めまして、ココナラでアンドロイドのクローズドテスターをしているもっとPythonです。
個人でアンドロイドアプリをリリースする条件が厳しくなり、対策として以下の「クローズドテストをお手伝い」する商品を出品しています。https://coconala.com/services/3123009?ref=blog
https://www.lancers.jp/menu/detail/1275674
これまで、多くの方に発注していただき、非常にありがたく思っております。
おかげさまで、テスト・検証・デバッグ部門のランキングで1位になることができました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3611982/ce50f4f4-bca5-6318-5272-27429f686b94.png)
さて、今回のテーマは、有料アプリを無料でクローズドテストしてもらう方法になります。
プレイストアは仕様上、有料アプリの開発をクローズドテストする場合、なんと、テスター
【Android】StateFlowのEvent的使い方まとめ
# はじめに
MVVMのようなアーキテクチャーを使用していると使用頻度の高いFlowシリーズですが、中でもStateFlowはその利便性から使用頻度が多い機能ではないでしょうか?
普段使用されるケースで多いのはViewModelとFragment間のやりとりだと思いますが、このStateFlowは性質上EventBusのような使い方も可能です。
今回はStateFlowを使用してEventBusのように使用する方法をまとめたいと思います。# StateFlowを使用したEvent通知実装方法
まず、StateFlowのベース部分であるSampleEventStoreから実装します。“`SampleEventStore.kt
class SampleEventStore {
companion object {
private var instance = SampleEventStore()
fun sharedInstance(): SampleEventStore {
return instance
UiEventを使ったCompose Dialogの表示/非表示
# Dialogのざっくり紹介
Jetpack ComposeのDialogは[AlertDialog](https://developer.android.com/develop/ui/compose/components/dialog?hl=ja)を使うことで、簡単にダイアログの定義をすることができるため、XMLでの作成と比べてとても楽です。
“`Kotlin
@Composable
fun SampleDialog() {
AlertDialog(
onDismissRequest = {
// Dialogの枠外タップ時の挙動
},
confirmButton = {
// OKとか確認とかのボタンの実装
// 空だとボタン表示自体がされなくなる
},
dismissButton = {
// キャンセル系のボタンの実装
// 空でもOK
},