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

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

【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を利用し画面を更新す

元記事を表示

お住まいの国では利用できないアイテムです

# 問題

開発中の出来事。

Google Play Consoleにアップした aab(apk)だと 問題なくアイテム購入出来るのに、
ローカルで作成したapkだと `お住まいの国では利用できないアイテムです` と表示され
購入することができない。

# 環境

Unity 2021.3.5
Unity – InAppPurchasing Version 4.5.0
Androidアプリ

※ Unityは関係ないと思われる

# 前提

* Google Play Consoleの クローズドテスト等に aabをアップしている
* 公開している
* テスター登録 → ダウンロードしたアプリで アイテム購入(課金)出来る
* その後 ローカルで作成した apkでは アイテム購入(課金)出来きない

# 解決方法

Google Play Console にて

* 製品版 – 国/地域 – 日本 を設定
* クローズドテスト – 国/地域 – 製品版と同期させる

これだけです。
GoogleDevelopConsoleのメール設定にもよりますが、自分の環境・タイミングでは 30

元記事を表示

Android 通知バイブレーションのパターンを変更する

# はじめに

通知チャンネルごとの設定で通知バイブレーションのパターンを変更することができます。
日本語の記事が思いのほか少なかったのと、ドキュメントに記載のないちょっとしたポイントがあったのでメモをまとめてみます。

# サンプル

以下のアプリで試せます。

https://github.com/kmachida12345/BuzzBuzz

# パターンを設定する

[setVibrationPattern()](https://developer.android.com/reference/android/app/NotificationChannel#setVibrationPattern(long[]))メソッドで設定します。

createNotificationChannel()で通知チャンネルを生成する前に設定される必要があります。
アップデートでバイブレーションパターンが変わるようにしたい場合などは、すでにある通知チャンネルを消去して新しく生成してやる必要があります。
引数vibrationPatternに設定した値は、[インターバル、鳴動時間、インターバル、鳴動

元記事を表示

androidってkotlinのactivityからjavaのactivityって遷移できるんだ….

# 要約
気になって試したらタイトルのことができた。
# 本題

Android Studioでは、まず最初にアクティビティを作る際にkotlinかjavaかを選択すると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321651/2a05f77e-9ecf-bb4d-c438-e5e3d09dd25e.png)
*本名使っちゃっているので適当にPathは書き換えてます。

自分はここで選択しているため、Android開発ではできないのかと思っていましたが適当にButtonでkotlinとjavaのActivity間を遷移するアプリを作ってみたらできました(コード等は参考にしたQiita記事のコピペです。)
参考したQiita記事
https://qiita.com/sato-na/items/aebbe482bf40db1fd3b0

まぁkotlin自体はjava互換性があるから動くのは知っていたが、検索してもjavaのactivityが動くのはわからなかったのでメモ程度に

元記事を表示

RecyclerViewでAdapterにnullを入れた方がいい話

# 初めに
今回は、`RecyclerView`実装時にレビューをいただいて指摘された内容に疑問が残っていたので調べたものをまとめていこうと思います。
### 本文
自分が頂いたレビューは***RecyclerViewのAdapterにonDestroyViewでnullを入れてあげて***と言った内容でした。
ではなぜ、そうする必要があるのかですが、`Activity`よりも長生きしてしまう可能性があるからです。
そうするとメモリーリークが発生してしまいます。
明示的に`null`を入れてあげる事でメモリが解放されメモリリークの発生を防ぐことができます。
`Adapter#onAttachedToRecyclerView(RecyclerView)`
`Adapter#onDetachedFromRecyclerView(RecyclerView)`
`Adapter#onViewAttachedToWindow(ViewHolder)`
`Adapter#onViewDetachedFromWindow(ViewHolder)`
`Adapter`には上記4つのコールバッグがあり、

元記事を表示

Unity AndroidアプリでFirebase Crashlyticsを使うのにハマった話

# この記事について
UnityでAndroidアプリにFirebase Crashlyticsを利用する際、ハマった部分をまとめました。

# バージョン
Unity 2021.3.11f1
firebase unity sdk 9.6.0

# 事象
[Firebaseドキュメント](https://firebase.google.com/docs/crashlytics/get-started?platform=unity&hl=ja)に沿ってアプリを作成し、実行したところ、`adb logcat`でなんかエラーが出た:boom:
(ビルドのタイミングで出て欲しい:sweat_drops:)

“`
10-17 15:19:00.821 17474 17552 E firebase: Failed to read Firebase options from the app’s resources. Either make sure google-services.json is included in your build or specify options explicit

元記事を表示

AndroidStudioのCodeStyle設定チートシート【XML編】

## 前書き

AndroidStudioのXMLフォーマッターの設定値は多岐にわたりうんざりするので設定例を記載しておきます。

※随時更新中

## 設定方法

上部メニューの`File > Preferences > Code Style > XML`を開きます。
Windowsの場合は`File > Settings > Code Style > XML`です。

各XMLファイルごとの設定値は以下です。
`Android`タブを開きます。

|Androidタブ|該当ファイル|
|:–|:–|
|AndroidManifest.xml|マニフェストファイル|
|Value Resource Files and Selectors|``等のリソースファイル|
|Layout Files|レイアウトXML|
|Other XML resource files|その他のXML|

![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584743/2ead7c99-5c77-

元記事を表示

Android/View関連のクラスの挙動を確認する手法例

今回は、Android/TextClockが、
アプリがバックグランドになった際に停止されているかを検証します。

# ソースコードの確認
[TextClock]
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/TextClock.java

TextClockのソースコードになります。
Androidフレームワークでは、
オープンソースとして公開されているため、
TextClock自体を解析します。

「TextClock#onVisibilityAggregated」で、
「Runnable mTicker」の停止/再開をしているようです。

# API仕様の確認
次は、「TextClock#onVisibilityAggregated」を調べます。
https://developer.android.com/reference/android/widget/TextClock#onVisibilityAggregated(boolean)

元記事を表示

Jetpack ComposeでHiltを使ってDIする

# はじめに
私は業務でServer-side Kotlinの開発に携わっているのですが、Androidアプリ開発に関してはかなり初心者です。
ふと、Jetpack Composeでアプリを作ってみようと思い立ち、その過程で勉強したDIライブラリの[Hilt](https://dagger.dev/hilt/)の使い方についてまとめました。

# 開発環境
– PC: M1 Mac mini / macOS 12.5
– Android Studio: Dolphin|2021.3.1

# サンプルアプリの概要
## 機能要件
– [Joe Schmoe](https://joeschmoe.io/)のAPIをコールして、アバターを生成
– アバターをローカルDBに保存
– 保存されているデータの一覧を表示

Joe Schmoe APIを使用したのは無料で利用できるAPIを探していてたまたま見つけたからです。
勉強のためとは言え、無料で利用させていただき、感謝いたします。

## ライブラリ
– DI: Hilt
– その他: 画像表示にCoil、DatabaseにRoomを使用し

元記事を表示

【Android】onBackPressedメソッドが非推奨になった

`onBackPressed()`が非推奨になった。
`onBackPressedDispatcher.onBackPressed()`を使えばよい。

元記事を表示

UnityにNew Relic Agent(Android)を導入してみる。

# はじめに

New RelicのMobile Agentは、正式にはUnityをサポートしてません。ただし、AndroidのSDKはあるので、それらを組み込んでみた方法の記録と結果です。

## 確認したバージョン
以下のバージョンで確認してます。バージョンが異なると、設定項目や方法が異なる可能性があります。
– Unity
– 2020.3.26f1
– New Relic Android Agent
– 6.9.0 (NativeCrashも組み込みます)

## 導入方法
### UnityPlayerActivityのオーバーライド
NewRelicのAgentの初期化のため、Activityクラスに実装を追加する必要ので、デフォルトのUnityのActivityをオーバーライドしたクラスを作成。
※すでにオーバーライドしたクラスを作成済みの場合は、本ステップはスキップ。

1. 「Assets/Plugins/Android/」のフォルダに、MyUnityPlayerActivity.javaを作成。
1. 作成したファイルに以下のコードを貼り付け。

元記事を表示

AndroidでOSの文字サイズ設定を変更しても、ブラウザで文字の大きさが変わらない

Androidでは、設定にある「表示サイズとテキスト」を変更した場合、webサイトの文字サイズが可変します。
iOSにおけるDynamic Typeの有効化のための特殊な指定や、font-sizeをremにするといった対応は不要です。

OSの設定のほかに、ブラウザにも文字サイズの変更設定があり、OS全体ではなくブラウザのみ変更することも可能です。

しかし、一部環境ではこの文字サイズの可変が正しく動作しない場合があります。

## 可変しないケース1:文字数が少ない

AndroidのChromeで次のHTMLを表示したとき、文字サイズはOS/ブラウザの設定値に応じて可変になります。

※ 以降のサンプルで `word-break: break-all;` を指定していますが、これはサンプルテキストが画面幅を突き抜けるのを防ぐための指定で、文字サイズ可変の挙動とは無関係
“`




Android開発でRetrofit2初心者がつまずいたところ

# Android開発初心者がRetorofit2でつまずいたところ
## 結論
エンドポイントの指定の仕方が間違っていた

## 状況
Retrofit2のPUTメソッドで処理を実行したら文字列を返すように実装したが、なぜか404が返ってくる

## 解決策
指定したエンドポイント文頭の/を削除した

“`変更前hoge.kt
@PUT(“/fuga/{fugi}”)
fun func(
@Path(“fugi”)
):Call
“`

“`変更後hoge.kt
@PUT(“fuga/{fugi}”)
fun func(
@Path(“fugi”)
):Call
“`

## まとめ
どこが違うのか見つけるのに3時間くらいかけてエンドポイントの指定方法が違っていることに気づいた。同じようにつまずいている人の解決につながってほしいのと、自分の備忘録としてqiitaに残しておくことにする。

元記事を表示

OTHERカテゴリの最新記事