Android関連のことを調べてみた2021年12月03日

Android関連のことを調べてみた2021年12月03日

【Jetpack Compose】Stateと再Composeの仕組みを検証してみた

この記事は[andfactoryアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/andfactory)の3日目の記事です?

## はじめに

Jetpack Composeを書いていて、Stateを更新すると画面が更新されると思うのですが、その際に再Compose処理が発生します。再Compose処理はドキュメントによると「入力が変化している」部分で発生し、そうでない部分は回避してくれるようです。

ですが、じゃあ具体的にどのように書いたら回避されて、どう書いていたら回避されないのかがいまいち理解できていませんでした。

特に、ViewModelで保持するFlowやLiveDataのObserve場所です。自分は基本的に、ViewModelの値をComposeの上位でobserveして、他の下位Composeはシンプルな値を引数をとるように実装しています。
その場合、ViewModelの値が変わるたびに全体が再Composeされるのか、よしなになってくれるのかがわからなかったので、今回実際にコードを書いて試してみるこ

元記事を表示

コマンドでdetektをかける

https://detekt.github.io/detekt/cli.html

gradleで入れるのが面倒だったのでとりあえずCLI版を入れてしまう

“` bash
curl -sSLO https://github.com/detekt/detekt/releases/download/v1.18.1/detekt-cli-1.18.1-all.jar
“`

以下のコマンドでテキスト形式で結果を出力できる

“`
java -jar detekt-cli-1.18.1-all.jar -r txt:detekt.txt
“`

元記事を表示

コマンドでcheckstyleをかける

https://github.com/checkstyle/checkstyle/releases/

上からcheckstyleのjarをダウンロードする

循環複雑度をシュッとかけるためのxml

“` xml







“`

おもむろに実行してみる

“` bash
ja

元記事を表示

RE: AndroidでFlowをrepeatOnLifecycleでcollectするのをちょっとだけ楽にする

## 前置き

以前 [AndroidでFlowをcollectするのをちょっとだけ楽にする](https://qiita.com/KazaKago/items/b24b457d8f6bf5bcf591)という記事を書いたのですが、 `Flow` をcollectする際には `launchWhenStarted` ではなく代わりに `repeatOnLifecycle` を使いましょうというお達しが出ているのでそれに合わせて記事の内容も書き直してみます。

## 課題

[公式の案内](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow)でもあるとおり、AndroidのActivity/Fragmentで`Flow`を `collect` する場合には下記のいずれかの記述をする必要があります。

“`kotlin:Activity
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch

元記事を表示

Navigation SDK v2 for Androidを試してみる (いじってみる編)

## はじめに

[前回](https://qiita.com/OttyLab/private/d8cb612c4265a6a686fd)サンプルの中身について詳しく見ました。今回はこれを踏まえてナビゲーションアプリとしての使い勝手を向上させたいと思います。

## 注意事項
– この記事では2021/11/25現在で最新の`v2.0.2`を使用します。
– [Pricing](https://docs.mapbox.com/android/navigation/guides/pricing/)にご注意ください。特にMAUは100まで無料ですが、[ここに記載](https://docs.mapbox.com/android/navigation/guides/pricing/#how-are-unique-users-counted)されているようにアプリケーションの削除・インストールでカウントアップします。デバッグ中に何度も削除・インストールを繰り返すと無料枠を超える可能性があります。

## 変更点

以下の点について変更を行います。

– GPS
– 日本語(多言語)サポート

元記事を表示

Airtestでほぼ円状にスワイプしてみる

#先にコードを掲載

ほぼ円状にスワイプ

“`Swipe_in_an_almost_circle.py
# -*- encoding=utf8 -*-
from airtest.core.api import *
import math

”’
x , y はスマホ内の座標
radiusは描く円の半径距離
”’

x , y = 540 , 1110
radius = 300

list = []
for i in range(39):
tuple = (x + math.sin(i/6) * radius),(y + math.cos(i/6) * radius)
list.append(tuple)

device().maxtouch.swipe_along(list,duration=0.02, steps=3)
“`

#Airtestってなんだ?
画像認識やUIの階層化により、ゲームテストをサポートする自動化フレームワークです。
簡単に言っ

元記事を表示

五百円貨幣潜像Androidアプリ

新しい五百円貨幣が、令和3年11月1日より発行されました。ほんの一ヶ月前ですね。
[解説!新しい500円貨:財務省] (https://www.mof.go.jp/policy/currency/bill/20210816.html)にて解説があります。
そうすぐに新貨を手にすることはないかもしれませんが、
  そうか、旧貨は いずれ 居なくなるのか…。
そういえば白銀色に輝く初代五百円貨幣(昭和57年4月1日発行)もいつしか見かけることも少なくなり、
平成12年8月1日にやや黄みかった輝きを持つ二代目が登場して。
しかして今回の三代目は二色三層構造バイカラー・クラッド

まるで源氏将軍の賴朝、賴家、實朝のようではないですか。源氏を退け、栄華を誇った平氏一門。しかれどその平氏もまた壇ノ浦にて滅亡。鎌倉幕府も源氏が将軍職に就けたのはこの三代まで。

ああ諸行無常。盛者必衰。

えっと。なんの話でしたっけ?そうだ五百円貨幣についてでした。
そうそう!お

元記事を表示

Android開発チュートリアル翻訳1(フランクに)

※少し、いや、かなり意訳が含まれている部分もあります。

#1.紹介
このコードラボではエミュレータとか実機上で動く`Hello World!`って表示するアプリを作って実行するよ!

#前提知識はこうだ!
– Android StudioみたいなIDE(統合開発環境)を使ったオブジェクト指向アプリの一般的なソフトウェア開発の流れを知っている。
– 少なくとも一年以上のオブジェクト指向プログラミングの経験があって、さらにkotlinとjava(javascriptじゃないんだからね!!!)について理解している。

#学習内容だ!
– Android Studioでの基本的なアンドロイドアプリのビルドの仕方。
– テンプレートからのアンドロイドプロジェクトの作り方
– アンドロイドのメジャーな部品のみっけかた
– エミュレータと実機でのビルドの仕方

# やることだyo!
– helloworldってゆうデフォルトのアプリの作成
– PC上で実行できるようにエミュレータの作成
– エミュレータと実機でHelloWolrdのビルド
– プロジェクトのレイアウトを確認する。
– Androi

元記事を表示

暗黙的な内部の Intentを解決したい

Android Studioにて開発を行っております。
課金部分のテストを行うために内部テストとしてリリースを行おうとしておりますが、
セキュリティと信頼性の項目にて「暗黙的な内部の Intent」としてエラーが返ってきております。

こちら該当コード箇所が以下になります。
“`
Intent intent = new Intent();
intent.setAction(“hoge.hoge.hoge”);
intent.putExtra(“status”, 1);
sendBroadcast(intent);
“`

AndroidManifest.xmlにて受信側の宣言として

“`





“`

というようにブロードキャストレシーバーを宣言しました。
しか

元記事を表示

`Run flutter doctor –android-licenses to accept the SDK licenses.` が上手く行かなった時のtips

### `flutter doctor`した時にこのようなエラーが出るケースがある
“`
❯ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.5.2, on macOS 11.6 20G165 darwin-arm, locale ja-JP)
[!] Android toolchain – develop for Android devices (Android SDK version 31.0.0)
✗ Android license status unknown.
Run `flutter doctor –android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[✓] Xcod

元記事を表示

Navigation SDK v2 for Androidを試してみる (中身を見る編)

## はじめに
[前回](https://qiita.com/OttyLab/private/83185cca45ee9f2f406d)Navigation SDK v2 for Androidのサンプルをコピペで動かしてみました。今回はコードの中を見て、どのような処理が行われているかを追ってみます。

## 注意事項
– この記事では2021/11/25現在で最新の`v2.0.2`を使用します。
– [Pricing](https://docs.mapbox.com/android/navigation/guides/pricing/)にご注意ください。特にMAUは100まで無料ですが、[ここに記載](https://docs.mapbox.com/android/navigation/guides/pricing/#how-are-unique-users-counted)されているようにアプリケーションの削除・インストールでカウントアップします。デバッグ中に何度も削除・インストールを繰り返すと無料枠を超える可能性があります。

## 概観

サンプルで使用してる機能の概観は以

元記事を表示

JetpackComposeのEffect系関数一覧

# はじめに
Google公式ドキュメントで説明されているComposeのEffect系関数について、端的にまとめました。

https://developer.android.com/jetpack/compose/side-effects

## Effect系関数の役割・目的とは?
Composable関数の実行したときの副作用(Composable関数を実行したことによる、Composable関数外への影響)を定義するための関数。
(Google公式ドキュメント上では「Side-Effect APIs」と表現されている)

# LaunchedEffect
「非同期で実行される副作用」を定義する関数。

LaunchedEffect関数にkeyを設定することで、Recomposeに伴うCoroutineの再起動を抑止することができる。

以下の処理の場合、remember関数でsnackbarHostStateが生成されているため、snackbarHostStateはRecomposeを跨いで生存する。つまり、このsnackbarHostStateをkeyとしているLaunch

元記事を表示

Flutterの開発環境構築方法(Mac)

## はじめに

本記事は [エムティーアイ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/mti) の1日目の記事です。

Flutterの開発環境を構築する方法を紹介します。

ちなみに業務ではFlutterを一切触っていません。
昨日行われた [FlutterKaigi](https://flutterkaigi.jp/#/) のハンズオンで初めてFlutterを触り、その準備時に行ったことを残します。

## 環境

– OS:macOS Big Sur 11.6
– ハード:MacBook Air (M1, 2020)
– Flutter:2.5.1

## 開発環境の構築

公式ドキュメントに沿ってFlutterの開発環境を構築します。

https://docs.flutter.dev/get-started/install/macos

### Flutter SDKのダウンロード

以下のページから、使いたいバージョンのFlutter SDKをダウンロードします。

https://docs.

元記事を表示

Androidのゲーム開発まとめ

# 背景
どうも”おもり”です。

私の最近のハマりは、「ちいかわ」です。

こんな可愛らしいキャラクターを自分で作って、Androidアプリでゲーム化したいなーという野望があるのです。
ちょうど、?のようなアプリがあることも知って、可愛らしさに舌を巻きました。

そんな訳で、Androidでゲーム開発をするスキルを頑張ってみようと思った訳です。今月ちょっと頑張ってみます。

# 対象読者

* Androidでゲーム開発をしたことが無い人
* Androidアプリ開発はしているが、ゲーム開発にも興味がある人

# Androidでゲーム開発を始めるには?

https://developer.android.com/games?hl=ja

まず初めに辿り着くのは、こちらの記事でしょう。

* Android Game Development Kit(AGDK)の中にゲーム開発で必要なものが詰まっ

元記事を表示

Android Studioでjdkを8→11にアップデートしたらComponenCallbacksにアクセスできませんというエラーに遭遇した

先日Android Studioでjdkを8→11にアップデートした際に、 `ComponentCallbacksにアクセスできません`というビルドエラーに遭遇しました。
エラーが出ている所を見に行っても何も警告等は出ておらず、何かライブラリが足りていないのかと長時間ハマってしまいました。
結論としては、gradleバージョンが低い事が原因だったようです。

File > ProjectStructure > Project
と遷移していくと、Android Gradle Plugin VersionとGradle Versionを設定画面に遷移できます。
![スクリーンショット 2021-12-01 17.59.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533385/99176f39-cbf3-592a-e92a-99875f64b98b.png)

ここでこれらのバージョンを最新のものにしてあげると無事ビルドができるようになりました。

謎のビルドエラーに阻まれた時は、まずクリーンビルドや

元記事を表示

禁断の速読術の習得方法!速読英単語のアプリを個人開発してリリースした話

#禁断の速読術の習得方法

速読のアプリというのは、大体高額のセミナーに参加したり、速読をするための訓練が必要な事がほとんどだと思います。
そんな中無料でアプリをリリースしたので、皆さんに使って貰いたいので、記事を書く事にしました。

まずリリースしたアプリはこちら

https://play.google.com/store/apps/details?id=com.english.sokudoku&hl=ja&gl=US

現在は、google playストアにしかリリースしていません。
androidユーザーが登録してくれたら、iOS版版も出そうと思っています。

##開発環境はMonacaです

Monacaとは、「ハイブリッドアプリ」を作成することができるWEBサービスです。ネット上にアプリの開発環境を用意してくれるので、面倒な環境構築は一切必要ありません。

また、サンプルのアプリもいくつか用意されているので、簡単にアプリ開発を体験することができます。

私はここの最小限のアプリケーションを作るから、JQueryとFont Awesomeをダウンロードして
www配下に設定

元記事を表示

Unity Android 画面設定 ナビゲーションバーの表示

##0.0 はじめに
Unityで作ったアプリのデフォルト設定はナビゲーションバーが表示されません。ナビゲーションバーとは下に出てくる丸や三角や四角のボタンです。この設定では下からスワイプすることで表示はできますが、しばらくすると消えてしまいます。この記事では最初からナビゲーションバーを表示する方法、ナビゲーションバーを保持する方法を書いています。

##1.0 ナビゲーションバー常時表示
下記を最初のシーン入れます。これでアプリが立ち上がったらすぐにナビゲーションバーが表示されます。

“`C#:Test.cs
void Awake(){
Screen.fullScreen = false;
}
“`

##2.0 戻るボタンの有効化(◁ボタン)
戻るボタンは1.0を設定しただけでは有効になりません。下記を各シーンに入れると戻るボタンを有効にして、アプリを終了させることができるようになります。

“`C#:Test.cs
void Start () {
Input.backButtonLeavesApp = true;
}
“`

元記事を表示

[Java]Android Fragment間のデータ受け渡し Bundle vs ViewModel

# 目的
Android, Javaで開発するにあたり、Fragment間のデータ受け渡しにBundleとViewModelどちらを使うべきか指標を明示する。
※ただしデータの値は変更しない前提です。

# 結論
Bundle:Fragment間で受け渡すデータ数が少ない場合
ViewModel:Fragment間で受け渡すデータ数が多い場合
のように使い分けるのが良いと思います。

# はじめに
初めてAndroid開発をしたときに、Fragmentから別Fragmentにデータを受け渡すとき、メジャーな方法としてBundleとViewModelがあると知りました。
両方使ってみて、それぞれの利点・欠点が少し分かったので、まとめてみます。
ちなみに筆者は最初はBundleを使いまくっていたのですが、以下に記載する欠点により、ViewModelをメインで使うようになりました。

# Bundle vs ViewModel
BundleとViewModelの利点・欠点をまとめます。

| |Bundle|ViewModel|
|—|—|—|
|利点|データの定義が不要

元記事を表示

2021食べチョクAndroidが取り入れた技術まわりを振り返っていく

この記事は [ビビッドガーデン Advent Calendar 2021](https://qiita.com/advent-calendar/2021/vivid-garden) の1日目です。

## 食べチョクAndroidアプリは1周年を迎えました?

https://play.google.com/store/apps/details?id=com.tabechoku.android

2020/11/2にリリースした食べチョクAndroidアプリは先日1歳のお誕生日を迎えました?

1stリリースへの開発期間は3ヶ月ととても短く、更に先行していたiOSアプリに追いつくためにもリリースから一定期間は機能開発に集中する時間が続いていました。

そんな食べチョクAndroidにおいてもリリースから半年を過ぎた頃から少しずつではありますがモダンな開発に近づけていく努力を行っていけるようになりました。今回はそんな食べチョクAndroidアプリの1年間の軌跡を振り返っていきたいと思います。

## リリース前(~2020/11)
### Bitrise

https://www.bit

元記事を表示

なぜ、Couchbaseなのか?〜モバイル/エッジコンピューティングプラットフォームとしての観点から

## はじめに

Couchbaseは、NoSQLドキュメント指向データベースです。この表現は間違ってはいませんが、若干正確性を欠いてもいます。つまり、Couchbaseという名前を持つデータベースには、Couchbase ServerとCouchbase Liteというふたつが存在します。

ここではCouchbaseについて、そのモバイル/エッジコンピューティングプラットフォームとしての側面について解説します。この側面においては、Couchbase ServerとCouchbase Liteの両方が重要な役割を持ちます。

以下、上述の本題に進む前にいくつか基本的な部分を整理します。

### NoSQLドキュメント指向データベースについて

NoSQLドキュメント指向データベースについては、パブリッククラウドが提供する独自のテクノロジーを除くと、代表的なものとして以下の3つをあげることができます。

– MongoDB
– Apache CouchDB
– Couchbase Server

### Couchbase Serverについて

Couchbase Serverにつ

元記事を表示

OTHERカテゴリの最新記事