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

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

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に残しておくことにする。

元記事を表示

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が削除を行ってくれる|
|updeta|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

元記事を表示

iOS・Android兼用Appアイコンを作成する (Flutter)

# はじめに
“`Flutter“`でiOS / Android両対応アプリを作成した時に、“`AppIcon“`の作成に一番時間を取られたので作業ノウハウをまとめました。

## どこに時間を取られたのか?
**iOS**
1024 x 1024 px[^1]の画像を用意すれば良いです。

**Android**
“`Android 8“`から導入された“`Adaptive Icon“`[^2]によって、画像中央の直径“`66 dp“`の“`セーフゾーン“`を残して周囲が切り取られる場合があるので、予め構図を考えておかないと意図しないアイコン表示になってしまいます。


:weary:
【UnityRenderStreaming×ARFoundation】スマホ向けのビデオストリーミング & カメラ制御してみた

# はじめに
こちらはIwaken Lab. 主催のXR好き開発合宿ブログリレーの14日目の記事になります。この記事では、開発合宿中に触っていた技術について書かせてもらいます。

https://iwakenlab.jp/

また、XR好き開発合宿では、たくさんの方々から温かいお言葉や支援をしていただきました。この場をお借りして感謝申し上げます。本当にありがとうございました。

# この記事の概要
UnityRenderStreamingの機能を使って、処理の重たい描写をグラボがついてるPCに任せて、その映像をスマホで見れるようにし、ARFoundationを利用することで、PC上で動作するカメラの位置情報と回転情報をスマホで制御できるようにしました。

![システム図 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2700137/fbc46cd6-aac2-a3d9-7b0d-45e16d7c220e.jpeg)

スマホの傾きや位置がUnityのシーン内のカメラに連動しているため、動画のよ

元記事を表示

Flutter(MethodChannel/Android)

# MethodChannel
FlutterとAndroid or iOS間のやりとりを可能にするクラスです
Flutter側でメッセージを送信して、Android or iOS側でメッセージを受信して対応した処理の結果を返却する

# Flutter側
Flutter側のメッセージ送信手順を記載します

1. MethodChannelの実装(チャンネル名を指定します。プラットフォーム側で同じチャンネル名を指定する必要があります)
2. invokeMethodの実装
1. 第1引数:プラットフォーム側でメソッドを識別するための文字列を指定
1. 第2引数:プラットフォーム側に送りたいデータを指定。複数送る場合はMap型にすると良いらしいです

# プラットフォーム(Android)側
プラットフォーム側のメッセージ受信手順を記載します。今回はAndroidのみの記載になります

1. MethodChannel.setMethodCallHandlerでメッセージを受信
2. MethodCallのmethod(Flutter側で指定した文字列)で処理の切り分け

元記事を表示

APKファイルの作成方法

#はじめに
androidアプリの開発でマストになるのがAPKファイルの作成です。

・APKでなにができるのか
・具体的にどうすれば作成できるのか

まとめました。

#APKファイルでなにができるのか?

Androidアプリケーションを格納することができる実行ファイルです。
AndroidOSでAPKファイルを実行すると、格納されたAndroidアプリケーションが実行されます。
現在開発中のアプリを端末で実際に動作確認する事ができます。

#具体的にどうすれば作成できるのか
Androidアプリ開発の際にはAndroid studioという統合開発環境を利用するのが一般的ですが、
そちらにAPKを作成する機能があります。

1.ヘッダーメニューから「Build」を選択し、「Generate Signed Bundle/APK…」を選択します。

Android
[スクリーンショット 2022-10-12 11.33.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2915524/abc56

元記事を表示

ONLYOFFICE Documents 5.5 for Android、パスワードや塗りつぶし図形、UIを改善

みなさん、こんにちは!ONLYOFFICE Documents for Androidをバージョン5.5にアップデートしました。今回のリリースでは、パスワード保護、塗りつぶし図形、より直感的なインターフェースなど、モバイルでの文書編集がパワーアップしています。

## モバイルビュー

モバイルビューで、テキスト文書内のコンテンツをより快適に閲覧できます。

どこにあるのか:ドキュメントを開く → 「設定」アイコンをタップ → 「モバイルビュー」スイッチャー

また、ドキュメントのデフォルトの表示モードとして設定することも可能です。

## パスワードによる保護

機密ファイルへの不正アクセスを禁止するためのパスワードを設定します。あらゆる種類の文書で利用可能です。

どこにあるのか:ドキュメントを開く → 「設定」アイコンをタップ → 「保護機能」

## 図形に対する塗りつぶしやカスタマイズ

新しいフィリングタイプ、グラデーション、テクスチャ、パターンを追加しました。

どこにあるのか:「シェイプ」設定 → 「シェイプ」タブ → 「スタイル」 → 「シェイプの塗りつぶし」 → 「

元記事を表示

Android TV用のJetpack Composeがリリースされました

# はじめに

これまでJetpack Composeには、通常のComposeの他にもWear OS用のComposeが存在していて、Android TV用のComposeが存在していなかったのですが、2022/10/05にalpha版がリリースされていたので、そちらのAPIを抜粋します。

https://developer.android.com/jetpack/androidx/releases/tv

# フォーカスについて
その前に、Android TVはPhoneなどと違い、タッチパネルも持たず、トラックボールなどを用いてのポインタ操作でのコンポーネントクリックも不可能なデバイスです。
Android TVの主な操作は、リモコンを操作してUIコンポーネントを移動して、決定ボタンで現在指し示す場所をクリックする操作です。
そのため、現在指し示す場所(フォーカス)がどこにあるかをユーザーに教えてあげる必要があります。

これを行うために、`FocusRequester`などでフォーカスを実装し、フォーカスされている箇所は色を変えるなど、周りより強調する対応が必要になります。

元記事を表示

a-2-1(2).通常の画面遷移(Intent)とデータ受け渡し

### a-2-1(2).通常の画面遷移(Intent)とデータ受け渡し

#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)

#### 課題
3. Intentを利用して画面遷移ができるか。
3. Intentを利用して画面遷移後に元の画面に戻ることができるか。
3. Intentを利用して画面遷移時にパラメーターを渡すことができるか。

#### Github

https://github.com/rwakizaka7/AndroidTest

#### テスト実装

“`kotlin:IntentTestActivity.kt
class IntentTestActivity : AppCompatActivity(), View.OnClickListener {
companion object {
const val CHILDREN_STATES = “children_states”
}

private lateinit var

元記事を表示

OTHERカテゴリの最新記事