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

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

AmazonアプリストアにAndroidアプリを登録してみた

# 概要

[Amazonアプリストア](https://www.amazon.co.jp/Android%E3%82%A2%E3%83%97%E3%83%AA/b?node=2381130051)に自作アプリ[CIFS Documents Provider](https://f-droid.org/packages/com.wa2c.android.cifsdocumentsprovider/)を登録してみたので、その内容について書きます。

# Fire OSとAmazonアプリストアについて

Amazonでは、[Fire タブレット](https://www.amazon.co.jp/Fire-タブレット-ファイア-Amazon/b?ie=UTF8&node=3933931051)という、電子書籍リーダ向けのタブレット端末が販売されています。これはE-ink画面のKindleとは異なり、Fire OSというAndroidをベースとしたOSが搭載されています。AndodroidとFire OSのバージョンの対応関係は、次のページに書かれています。

[Fire OSの概要 \|

元記事を表示

Action名やExtraのKey名はどうやって定義するのがよいか?

Intentに付与するAction名やExtraのKey名をアプリ独自で定義する場合、どういう値を定義すればいいのか、独自なのでどうとでも定義できてしまうため悩んでしまいますよね。
また、外部に公開する場合、アプリ間プロトコルの定義になりますので、一度適用してしまうと変更不可能という、取り返しのつかない設計要素です。将来を見据えて慎重に決める必要があります。

というわけで、どうやって決めればいいのかを説明しようと思います。

# アプリ外部に公開する場合

Intentを使ったインターフェースをアプリ外部に提供し、独自のActionを定義する場合は、他のAction名と重複しないように、**パッケージ名などをプレフィックスとしてつけた名前を定義する**のが良いでしょう。アプリ外部に提供する場合、それが機能を識別するためのIDになりますので、他のアプリで使用される名前と衝突すると問題が発生してしまいますからね。

プレフィックスの後の名前は自由につけて良いです。アプリ内のシンボル名として、ACTION_HOGEHOGEという名前で定義することが多いと思うので、それをそのままつけても良い

元記事を表示

API31以上をターゲットにした時の変更点をざっくりと(UXについて)

# まもなくAndroid12!
最終beta版がリリースされて、いつリリースなのか推測が色々なされています。
QAエンジニアとのコミュニケーションで必要になってくる場合もあるのでチャックしておこうと思います。
今回はAPI31以上をターゲットにした時のUX変更点に関していくつかピックアップしたいと思います。

# UXの変更点
### ピクチャー イン ピクチャーの動作の改善
ピクチャーインピクチャーとは、Android8から導入された機能で、メイン画面でActivityを操作しながら別のActivityを画面の片隅に表示させられるというものです。

GoogleMapなどで体験したことある人多いと思います。

これに関して、いくつか動作変更が起きました。

例えば、PIPモードに入る時のジェスチャーナビゲーションは、ホームに戻るアクションを検知してからでしたが、新しくできたAPI `PictureInPictureParams` によりコールバックを待たずして `setPictureInPictureParams` を呼び出せるようになりました。

かなりスムーズな遷移が出来そうで

元記事を表示

Flutter 2.5.x 環境をmacOS上に構築する(XcodeとFlutterの複数バージョン対応版)

# なぜこの記事を書いているか?

自分の参画していたプロジェクトで、FlutterおよびXcodeのバージョンの違いに悩まされていたので、違いを吸収する方法は無いかと色々調べていたら以下の方法にたどり着きました。その備忘録です。

# 環境(2021/10/03現在)

– MacBook Pro (Intel Mac)
– macOS Big Sur (11.6)
– Flutter (2.5.2)
– Android Studio (Arctic Fox | 2020.3.1 Patch 2)
– Xcode (13.0)

# インストール

## Homebrew

今回は色々な物をHomebrewでインストールするので、以下を実行します。

“`bash
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

## Google Chrome

なにはともあれ、Chrome。

“`bash
brew install –ca

元記事を表示

Jetpack ComposeのSlotTableへの変更の適応のコードリーディング

https://qiita.com/takahirom/items/8e978eeb6d85bf48a330

の続きです。

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

前回までで、recomposeの実装を読んでいくことができました。
SlotTableに反映していくところつまり、4を呼んでいきます。

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

元記事を表示

【Android】Jetpack Composeでwakelock対応(スリープさせない)をする【Tips】

個人的なメモも兼ねて

## 概要

Androidアプリにおいて、何らかの都合で画面をスリープ状態にさせないようにする場合は専用の実装が必要です。
Android公式の推奨方法は`FLAG_KEEP_SCREEN_ON`をActivityから呼ぶ実装です。

https://developer.android.com/training/scheduling/wakelock

“`kotlin
// コードで呼ぶ例
class MainActivity : Activity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

元記事を表示

Activityの起動処理は起動されるActivityで実装すべし

Androidアプリの開発を始めたら、かなり初期に習得するであろう他のActivityを起動する方法ですが、いわゆる入門書とかに書かれているような実装方法はよろしくない。って話をしようと思います。
最近はNavigation Component使っているしSingle Activityだから使う機会が無い?知らんがな。

MainActivityからMainActivity2を起動する例を考えます。

# 入門書の延長

意外とよく見かけるのが以下のように呼び出し元でIntentをつくってstartActivityをコールする方法。入門書に書いてある感じです。ExrtaのKeyをConstantsに定数定義しているのもあるあるですね。

“`kotlin:MainActivity.kt
findViewById(R.id.button).setOnClickListener {
startActivity(Intent(context, MainActivity2::class.java).also {
it.putExtra(Constants.

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事