- 1. [Jetpack Compose]xmlでConstraintLayoutみたいにComposeで書く方法
- 2. [Jetpack Compose] xmlでtextSizeがdp指定されている部分をComposeで書き直す [Android]
- 3. Androidアプリの個人開発を始めてから1年が経ったので振り返ってみた
- 4. UnityでAndroid用のBLEプラグインを開発した
- 5. お住まいの国では利用できないアイテムです
- 6. Android 通知バイブレーションのパターンを変更する
- 7. androidってkotlinのactivityからjavaのactivityって遷移できるんだ….
- 8. RecyclerViewでAdapterにnullを入れた方がいい話
- 9. Unity AndroidアプリでFirebase Crashlyticsを使うのにハマった話
- 10. AndroidStudioのCodeStyle設定チートシート【XML編】
- 11. Android/View関連のクラスの挙動を確認する手法例
- 12. Jetpack ComposeでHiltを使ってDIする
- 13. 【Android】onBackPressedメソッドが非推奨になった
- 14. UnityにNew Relic Agent(Android)を導入してみる。
- 15. AndroidでOSの文字サイズ設定を変更しても、ブラウザで文字の大きさが変わらない
- 16. Android開発でRetrofit2初心者がつまずいたところ
- 17. Android StudioでRunした際にアプリがLaunchしないときの対策
- 18. 【Android】個人的新たに見つけたアノテーションのメモ part2
- 19. 【Android】ListAdapterの基本テンプレート
- 20. AOSPのAndroidX開発環境メモ
[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.javaTextClockのソースコードになります。
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に残しておくことにする。
Android StudioでRunした際にアプリがLaunchしないときの対策
# 事象
通常、Android Studio(AS)からアプリをRunするとビルドからアプリ起動まで実行されるが、
実行後にLaunch Succeedのポップアップが表示される(端末にインストールはされている)もののアプリの起動まではされなくなった# 対策
RunメニューのEdit Configrationsを開く
Launch OptionsのLaunchをDefault Activityに変更する
【Android】個人的新たに見つけたアノテーションのメモ part2
# はじめに
前回に引き続き 新たに見つけたアノテーションの意味を調べまとめたものをメモがわりに記事に残しておきます
前回のものはこちら↓
[【Android】個人的新たに見つけたアノテーションのメモ](https://qiita.com/Tsubasa12/items/ff48006cad875bb2928a)# アノテーション表
※”@”をつけるとアドレス認識になってしまうので省略
|アノテーション|意味|
|:—|:—|
|Dao|Roomによるデータベースへのアクセスで、interfaceがデータベースにアクセスするクラスである事を定義する|
|insert|Roomが挿入を行ってくれる|
|delete|Roomが削除を行ってくれる|
|updete|Roomが更新を行ってくれる|
|TypeConverter|RoomのEntityを作る時につける。メソッドは 1 つのパラメーターを受け取り、void 以外の戻り値の型を持つ必要がある。|
|SuppressWarnings|指定されたコンパイラ警告を抑制する|# おわりに
今回はRoomについての内容
【Android】ListAdapterの基本テンプレート
# はじめに
RecyclerViewを使用したリスト形式のUIを実装するケース非常に多いですよね。
都度調べて実装しているとコストがかかるので、サッとコピペしてすぐ使えるテンプレートを残しておこうと思います。# テンプレート内容
実装は以下です。“`TemplateListAdapter.kotlin
class TemplateListAdapter(
private val viewLifecycleOwner: LifecycleOwner,
private val onClickItem: (Unit) -> Unit
) : ListAdapter(ListCallback) { private object ListCallback : DiffUtil.ItemCallback
() {
override fun areItemsTheSame(
oldItem: Unit,
AOSPのAndroidX開発環境メモ
AndroidXのリポジトリにあるサンプルとかを動かしたくなるときって時々ありますよね?(ない?)
ちょっと動かなかったところをメモしておいて、あとでまた環境作るときに役立てようかと思いました。
基本的な手順は3ステップです
1. repoをインストール
2. initしてsyncする
3. Android Studioを立ち上げる基本はこの手順でうまく動きます。
https://android.googlesource.com/platform//frameworks/support/+/refs/heads/androidx-main/docs/onboarding.md
# 1. repoをインストール
repoは複数のgitリポジトリをいい感じにまとめて管理するコマンドです。(という認識)
ここに書いてある手順で動きます。
https://android.googlesource.com/platform//frameworks/support/+/refs/heads/androidx-main/docs/onboarding.md#setup-linux-m