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

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

【Android】Repositoryの役割・メリットを考えてみる

## はじめに: アーキテクチャに関する一般的な原則について
本題に入る前に、「関心の分離」についておさらい。
認識すべきこと:すべてのコードを 1 つの Activity または Fragment に記述するのはよろしくない。

### すべてのコードを1つのActivityに記述したときに起こりうるデメリット
**①開発コスト高**
コード量が肥大化し、他人(未来の自分を含む)が理解しづらくなり、修正も困難に。。。

**②メモリ不足**
ActivityやFragmentは画面回転したりアプリをバックグラウンドに移したりするだけでLifecycleが終了するため、表示するたびに全ての処理を実行しなければいけなくなる。
高負荷な処理を連続で行うとメモリ不足になってしまうことも。。。

### 解決策: 関心の分離をする
関心の分離とは主にデータの管理(データの取得・保存)に関して、各クラスの関心を分離させるべきと言う考え方。
要するに、各クラスの役割を定め、自らの役割を全うさせることで効率的で、洗練されたアプリを作成しようということ。

本題:今回はViewModelを補佐す

元記事を表示

F-Droidにアプリを登録してみた

# 概要

[F\-Droid](https://www.f-droid.org/)に自作アプリ[CIFS Documents Provider](https://f-droid.org/packages/com.wa2c.android.cifsdocumentsprovider/)を登録してみたので、その内容について書きます。

# F-Droidとは

F-Droidとは、公式サイトによると次のように説明されています。

> F-Droidは、Androidプラットフォーム用のFOSS(Free and Open Source Software=フリーオープンソースソフトウェア)アプリケーションのインストール可能なカタログです。お使いの端末で簡単にブラウジング、インストール、およびアップデートの追跡ができます。

要するに、オープンソースのアプリに限定されたAndroidアプリストアです。
F-DroidアプリをAndroid端末にインストールすることで、登録されている各アプリを端末にインストールすることができます。
また、Androidだけでなく、Kindle FireのFir

元記事を表示

古いサンプルコードでSupport Library→AndroidXに変換して読む際に対応表が欲しいと思ったら普通に公式にあった話

## Support Libraryが利用されている古いプロジェクト等を確認する際にAndroidXの対応表が欲しいなと思ってGoogle先生に尋ねたら普通に公式にあった…

* AndroidX への移行
* https://developer.android.com/jetpack/androidx/migrate?hl=JA

上記に「アーティファクトのマッピング」と「クラスのマッピング」と言う項目が用意されているのでそこから確認できる…

* アーティファクトのマッピング
* https://developer.android.com/jetpack/androidx/migrate/artifact-mappings?hl=JA

* クラスのマッピング
* https://developer.android.com/jetpack/androidx/migrate/class-mappings?hl=JA

## 結論
ちゃんと公式を確認しようと思う…

元記事を表示

Cocos2d-x v4移行 Android編

前回に引き続きCocos2d-xのv4への移行を行なっていきます

### [4.Androidのビルド](#Migration-4)

Androidは3.17でCMakeが導入されているので3.17から
することは64bit対応とAndroidX対応程度ですが
今回はCMakeに習熟していない方のためにCMakeList.txtを
再起的参照でソースを読み込むように変更したいと思います

それ以前のバージョンから移行する場合にはCMake対応する必要があります
CMakeList.txt,build.gradleをそれぞれv4から取得してきて
dependanciesを移せば移行できると思います

#### [確認環境](#Migration-4.0)
あくまで動作確認環境なので
必須のものもそうでないものも混ざっています

– Android Studio 4.1.2
– Android SDK 9.0 Pie (API Level 28)
– Android SDK Build-tools 28.0.3
– NDK 21.1.6352462
– CMake 3.18.1

元記事を表示

【Androidアプリリリース】パワポでフィーチャーグラフィックを作成する方法

#背景
先日初めてAndroidアプリをリリースしようとしたときに、**フィーチャーグラフィック**が用意できていませんでした。本来であればデザイナーさんに依頼するのが一番だと思うのですが、趣味程度のアプリリリースだったのでパワポで作成することにしました。

#Androidアプリリリース時に必要な画像素材
(2021年10月現在)
– アプリのアイコン
– **フィーチャーグラフィック(Google Play ストアページの上部で使用されるんだと思います)**
– スマートフォン版のスクリーンショット
– 7インチタブレット用のスクリーンショット
– 10インチタブレット板のスクリーンショット

##パワポで作成する手順

1) パワポの 表示>スライドマスター を選択

![スライドマスタ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/875694/bcdba880-407f-cf6e-8f05-d3d7862d6d87.png)

2) スライドのサイズ>ユーザー設定のスライドサイズ を選

元記事を表示

Androidアプリがバックグラウンドの時にDialogFragmentを表示しようとして落ちる時に試したこと

# 概要
– アプリがバックグラウンド時にFragmentを追加・切替をすると落ちる・
– 回避する一つの方法として、
1. 親のFragmentがアタッチされているか判定。
1. `FragmentTransaction#commitAllowingStateLoss()`を使用してFragmentの状態を無視してcommitする。

:::note warn
Fragmentの状態を無視して実行しているのでonSaveInstanceStateを気にしている場合はこの限りではないです。
:::

# 詳細
アプリを使っていると非同期でデータを取得したタイミングで何か事を起こすことがあると思います。
私はよくそのタイミングでDialogFragmentを使っているのですが(これがよくない原因ですが)、DialogFragmentに限らずFragment全般に言えることで、アプリがバックグラウンド時にFragmentを追加や切替などを行うと大体`llegalStateException`が発生します。
原因は後述する[スタックトレース](#起きたエラーのスタックトレース

元記事を表示

Navigationの実装方法まとめ

kotlinにおける`Fragment`間の遷移を制御する`Navigation`の使い方、実装方法についてまとめていきます。

# この記事の内容
公式の[ドキュメント](https://developer.android.com/guide/navigation?hl=ja)やトレーニング「[Android Kotlin の基礎](https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja)」のレッスン3「ナビゲーション」を参考に実装のポイントとエッセンスをまとめていきます。
そもそも`Navigation`とは何か、という点については触れません。

### 前提知識

* kotlinの基礎的な文法
* AndroidStudioの使い方/アプリの作り方
* 画面や画面部品の配置方法

### 開発環境

* Windows 10 Home
* Android Studio 4.2.1

# 作成するサンプル
3つの画面を持ち、ボタンクリックにより画面遷移を行うごく簡単なアプリを

元記事を表示

RedmiNote9sにMIUI12.5のGame TurboでEnhanced Audioを表示させる (動くとは言っていない)

#はじめに
Xiaomi製スマホのMIUI12.1以降のGameTurboには「WiFiの最適化」、「最適化されたタッチコントロール」の他に「強化されたオーディオ」の項目があるはずなのですが、RedmiNote9sにはMIUI12.5になってもありませんでした。
これの何が問題かと言うと、デレステ(アイドルマスターシンデレラガールズスターライトステージ)やプロセカ(プロジェクトセカイ)と言った音ゲー(音楽・リズムゲーム)をプレイする際に、タップした時に効果音が鳴るのですが、鳴った際にデレステではノーツが一瞬カクっと遅れます。
特に高難易度をやろうとすると音が狂うので大問題です。
Mi11Liteなどは問題なくEnhanced Audioが表示されているそうですが、私のスマホには無かったため表示させる方法を模索しました。
あとついでにゲームターボのボイスチェンジャーも有効化します。
キチンと検証してないので完全無責任です。
#必要なもの
MIUI12.1以上のスマホ(12.0.4などではダメ)
Rooted環境(推奨)
Magisk(推奨)
ADB環境(rootが無ければ)(出来るか不明

元記事を表示

fragment勉強記録1

## 静的にFragmentを呼び出す
fragmentがまじでわけわからんのでmainActivity(緑)の中にfragment(青)を呼び出して表示させることから試してみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139020/4ed0c7cb-44c5-0340-20cf-d9b8c48a64aa.png)

### mainActivity.java

mainActivity.java でやることは activity_main.xmlを表示するだけ

“`java:mainActivity.java

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCont

元記事を表示

エラーの対処方法: Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

このようなエラーが出てアプリの実行ができなかった時の対処方法です。

– Android Studio にて「File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK」の設定を1.8から11に変更する
– Android Studioを再起動する

以上です。

元記事を表示

Android, Kotlin: JavaMailでメール送信 (gmail)

メール送信をするAndroidアプリを開発しましたので、最低限の実装を記録しておきます。
gmailにてメール送信する際の設定もあわせて記載します。

この2つの記事を参考に作成しました。

– https://qiita.com/Rabbit_Program/items/9df03bf2c1885561a5bd
– https://it-engineer-info.com/language/android-app/2142/

## gmailの設定

gmailはAPIで送信することが推奨されているらしいですが、今回はSMTPでという要件でした。
その際はgmail(googleアカウント)の設定にて「安全性の低いアプリのアクセス」を有効にする必要があります。

1. https://myaccount.google.com/ にアクセス(対象のアカウントでログインする)
1. 「セキュリティ > 安全性の低いアプリのアクセス」を有効にする

## JavaMail のインストール

Android Studio のgradleにJavaMailを追記します。

“`gra

元記事を表示

公式トレーニング「Android Kotlinの基礎」について

`Android Jetpack`の入門として[公式サイト](https://developer.android.com/jetpack?hl=ja)で紹介されているチュートリアル「[Android Kotlin の基礎](https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja)」を紹介します。

この記事は何かしらAndroidアプリ開発の入門書を読み終えたくらいの方向けに書いています。
このチュートリアルから学習をスタートすることはお勧めしませんが、Androidの実践的な開発で用いられる要素技術が広く紹介されているので学習の次のステップとしては非常にお勧めできる内容です。

ただ内容は結構ボリューミーで、**10個のレッスン、計33個ものコードラボで構成されています**。
英語読み込みながら全部マジメに取り組むと相当時間かかりま。

内容はすべてサンプルアプリを作りながらのハンズオン形式ですので手を動かしながら学びたい方には合っているかと思います。
この記事では各章で作成する

元記事を表示

Material Youのサンプルアプリを触ってみる

#はじめに
こちらの記事はGoogle I/O 2021で発表された『Material You』のAndroid向けサンプルアプリについての記事になります!
そもそもMaterial Youとは? という方向けの記事も書いてますので、よろしければ[こちら](https://qiita.com/t_nana/items/5f78377346030cb484fd)をご覧ください

#サンプルアプリの取得
##動作環境
・ M1 MacBook Pro
・ Big Sur 11.4
・ Android Studio Arctic Fox
・ Pixcel 3a / Andorid12(ベータ版) 

※確認端末はエミュレータでも構いませんが、Android12が入っていることが前提になりますので、ご注意ください

##GitHubからclone
material-components-androidの中にサンプルアプリ『Catalog』がありますので、そちらを取得しに行きます。
以下のコマンドをターミナルで実行してください。

“`
git clone https://github.com

元記事を表示

Unity2019.4 + Android11でビルドエラーになったときの対策

## 経緯/現象

**Unity 2019.4 (LTS)** を使用して、とあるサンプルプロジェクトを **Android 11 (Pixel 4a(5G))** 上でBuild and Runしようとしたところ、以下のようなエラーダイアログが表示され、Android実機での実行に失敗した(実行できなかった)。

> Unable to start ADB server. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.

使用環境は以下の通り。

* PC
* Windows 10 20H2
* Unity 2019.4.30f1
* Unity HubからUnity 2019.4をインストールする際、**Android Build Support**にチェックを入れてAndroid SDKのモジュールもインストール
* 実機
* Google Pixel

元記事を表示

Jetpack Composeのrecompose後。GlobalSnapshotへの適応のコードリーディング

https://qiita.com/takahirom/items/0e0a3559d95b49399c3b

の続きです。

今度まとめた記事を書く予定なので、この記事は読まなくていいです。

前回までで、recomposeの実装を読んでいくことができました。
これからSlotTableに反映していくところ
つまり3から4の間あたりをみていきます。

1: recordComposerModificationsLocked() を呼ぶ。Recomposer.snapshotInvalidationsを見て、IdentityScopeMapを使って変更点に対しての影響を受けるスコープを取得し、Recomposer.compositionInvalidationsやComposition.invalidationsというフィールドに変更を入れる。
2: compositionInvalidationsをtoRecomposeに入れる。
3: toRecomposeに対して、performRecompose(composition, modifiedValues)、(内部でdoCompos

元記事を表示

抵抗値のカラーコード表は二度と見たくないので、PyTorchでリアルタイムに物体検出をして抵抗値を計算してくれるスマホアプリをリリースしてみた

## これは何

スマホをかざすと、AIがリアルタイムに物体検出を行い抵抗値を判別してくれる抵抗値AI計算機というアプリを作成しました。

logo
Google Play で手に入れよう

元記事を表示

AlertDialogのカスタマイズその3:コンテンツエリアのカスタマイズ

`AlertDialog`について[引数を渡す方法](https://qiita.com/kame_yang/items/67978aa3cde688443cf5)と[戻り値を受け取る方法](https://qiita.com/kame_yang/items/435535850e47defc6b53)についてそれぞれ書きました。
今回はコンテンツエリアをカスタマイズする方法を紹介します。

# コンテンツエリアとは
`AlertDialog`は`タイトル`、`コンテンツエリア`、`アクションボタン`の要素で構成されています。
下図の赤い枠線で囲っている部分がコンテンツエリアですね。
通常はメッセージが表示されます。
01.png
今回はコンテンツエリアをスコープとしていますが、タイトル、アクションボタンも独自にカ

元記事を表示

【Kotlin】 LicenseToolsPluginを利用したOSSライセンス画面の実装

## 初めに
Androidアプリを作成するにあたって、たくさんのライブラリを利用するかと思います。
著作権的な観点から、それらのライブラリを一覧にして表示する必要があります。

LINEやインスタでも以下のように形式は違いますが表示している画面があります。(普段は目にしませんが)

| LINE | Instagram |
| —- | —- |
| | |

このような形式の表示方法は公式([Include open source notices](https://developer

元記事を表示

Kotlinでアプリがバックグラウンドからフォアグラウンドのタイミングで処理を実行するには

### Activityで行う場合
Androidのライフスタイルに従い `onResume`を呼び出して記述するだけです。

“`
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

override fun onResume() {
super.onResume()
Toast.makeText(baseContext, “フォアグラウンドから戻ったよ”, Toast.LENGTH_LONG).show()
}
}
“`

元記事を表示

AndroidStudio2020.3.1で日本語が文字化けする

## はじめに
AndroidStudioを2020.3.1にバージョンアップしたら、コミットメッセージ等に含まれている日本語が文字化けしまくったので直し方メモです。

## 環境
– macOS version:10.15.7
– AndroidStudio ArcticFox(2020.3.1)

## 手順
1. AndroidStudio => Preference を開く
![Preference](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740646/014f9995-2490-2565-64a9-53f8cc439be5.png)

2. Appearance & Behavior => Appearance を開き”Use custom font”のチェックを入れる。
![useCustomFont](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740646/353367e6-01ef-6a45-932f-3b5

元記事を表示

OTHERカテゴリの最新記事