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

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

【Android】LifecycleOwner として Fragment 自身ではなく viewLifecycleOwner を使うべき場合

`Fragment` クラスは `LifecycleOwner` インターフェイスを実装しています。
しかし `LifecycleOwner` オブジェクトとして、`Fragment` オブジェクト自身ではなく、
`Fragment.viewLifecycleOwner` プロパティが返すオブジェクトを使うべき場合があります。

本稿では、まず前提となる ライフサイクル、`Lifecycle` クラス、`LifecycleOwner` インターフェイス について簡単に説明してから、その本題について説明します。

## ライフサイクル

アクティビティやフラグメントにはライフサイクルがあります。

![アクティビティのライフサイクル](https://developer.android.com/guide/components/images/activity_lifecycle.png?hl=ja “アクティビティのライフサイクル”) ![フラグメントのライフサイクル](https://developer.android.com/static/images/fragment_lifec

元記事を表示

Android位置情報取得についての覚書き

## 概要
「移動している状態で位置情報を欲しいとき高精度で最新かつほぼ最新の値で取りたい。けど、位置情報を更新し続けて常に最新を保つほどでもない。電池効率も悪いし。」
という状況になったときに
FusedLocationProviderClient.getCurrentLocation()
に当たりました。
ただこのような有用メソッドがありつつ、あまり調べてもあまり良い記事に当たらなかったので(調べ方が雑なだけ?)
[AndroidDevelopers](https://developer.android.com/training/location/retrieve-current “直近の位置情報を取得する”)にもちょこっと書いてあるだけで具体的なコードはなし。

正直まだ分からないところもありますが、他の位置情報取得APIと合わせてメモ書き
前置きはいらねーぜという方は「getCurrentLocation()を使う」だけ見れば良い

## LocationManager
位置情報取得の一例としてはLocationManagerを使うのが昔ながら(?)のやり方だと思う。
こちらは

元記事を表示

[Kotlin]ファイル名が被ってimportするとどっちかがフルパスになっちゃうとき(メモ)

## 答え
importのところに as を使って新しい名前をつけてあげる。

## 公式
https://kotlinlang.org/docs/packages.html#imports

## 例
“`
import org.example.Message
import org.test.Message
“`

ファイルは違うんだけどMessageって名前被ってるからどっちかがフルパスになる…

## なので
“`
import org.example.Message
import org.test.Message as testMessage
“`

下のtest.Messageの方をtestMessageってことで名前をつけてあげる。

使う感じ
“`
import org.example.Message
import org.test.Message as testMessage

fun xxx():String{
Message.foo() + testMessage.bar()
}
“`

みたいな。

元記事を表示

[Kotlin]sealed interfaceの使い道(メモ)

## 使い所
– enumみたいに使いたいとき
– elseを書きたくないとき
– (他にもあるはずだけど私はわからない)

## sealed interfaceとは
– ざっくり、「interfaceを継承できる範囲に制限をかけれる」
– interfaceの中に書いたやつ、もしくは同じファイル内のやつしか継承できない。
– なのでwhenで条件分岐したときに”else”が要らなくなる。

## 例:ただのinterfaceの場合
“`
fun eval(expr: Expr): Int =
when (expr) {
is Num -> expr.value
is Sum -> eval(expr.left) + eval(expr.right)
else -> throw IllegalArgumentException(“Unknown expression”)
}

interface Expr
class Num(val value: Int) : Expr
class Sum(val left: Exp

元記事を表示

FusedLocationProviderClientがclassからinterfaceになった。ライブラリとのバージョン不一致に気をつけろ

com.google.android.gms:play-services-location:21.0.0にて、`FusedLocationProviderClient`, `ActivityRecognitionClient`, `GeofencingClient`, `SettingsClient`がclassからinterfaceに変わったらしいです。

https://developers.google.com/android/guides/releases
> `FusedLocationProviderClient`, `ActivityRecognitionClient`, `GeofencingClient` and `SettingsClient` are now interfaces instead of classes, which helps enforce correct usage and improves testability.

20.0.0 までの`FusedLocationProviderClient`の使い方は以下のような形かと思います。

“`

元記事を表示

Android端末で画面回転のイラッを解決する

# はじめに
スマートフォンで写真や動画を見ているときに、写真や動画の向きを画面にあわせるのにイラッとしたことはありませんか?
そんな時に、スマフォを振るだけで横向き固定・縦向き固定に強制する方法です。
Youtubeアプリでも、動画を横向き再生画面と、縦向きの説明やコメント画面を容易に切り替えることが出来ます。

# 方法
MacroDroid というデバイス自動化アプリを使用します
https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid

以下のようなマクロを2つ登録します
### 画面回転
端末の自動回転がOffの時に、端末をシェイクすると
横画面⇔縦画面 のトグルで画面を回転させ固定します。
詳しい設定方法や解説は、ここでは説明しません。
あくまで、「こんな便利なことが出来ますよ」というのが、この投稿の趣旨です。
ただし、少しだけ解説すると縦と横のトグルを実現するために、ユーザ定義変数x(変数名は任意)を定義して実行のたびにTrueとF

元記事を表示

Androidジェスチャーナビゲーションエリアの背景色変更方法

今回はジェスチャーナビゲーションエリアの背景色を変更してみたいと思います。

ジェスチャーナビゲーションエリアとはどこかというと、下の黒の部分です。

![Screenshot_20221026_124713.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/350602ac-7506-e6b0-ba91-382db89a1a9e.png)

こちらの色を変更していきます!

※Android 10(API レベル 29)以降の Android 対象です。

公式

https://developer.android.com/training/gestures/gesturenav?hl=ja#edge-to-edge

# ジェスチャーナビゲーションエリアの背景色変更方法

“` values-v29/themes.xml