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

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

【Flutter】FlutterJsonBeanFactoryがとても便利という話

インドネシアの[PT.AQ Business Consulting Indonesia](https://aqi.co.id/)でFlutterのエンジニア兼アドバイザーをしております菊池と申します。

Zennで本を出版しております[flutter chips](https://zenn.dev/tetsukick/books/06ee607e30e243)(30,000字程度)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5183aafc-d1d7-534f-f618-031f10790fdc.png)

## FlutterJsonBeanFactoryとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/d1b52181-fefe-1141-e570-5fa8e81ec090.png)
[FlutterJsonBeanFactory](https://p

元記事を表示

GooglePlayストアのOS対応とAPIレベル対応って何が違うの?説明してみた。

こんにちは。Advent Calendarも最終週となってまいりました。
[CYBIRD Advent Calendar 2021](https://qiita.com/advent-calendar/2021/cybird) 19日目担当の@koronekoです。
18日目は@whitemage_yuさんの「[SQLite meets Unity 〜Unityでローカルなデータベースを使おう〜](https://qiita.com/whitemage_yu/private/8f6bfc54c392b458b929)」についてでした。
サクッとSQL勉強するのに良い手段ですよね。

# はじめに
まずは軽く自己紹介をさせてください。
私はエンジニア歴十数年以上、CYBIRDでは技術部に所属し複数のタイトルの進行管理を行う業務に携わっています。
最近は手を動かすというよりも、管理業務の方が多い日々です。
他のメンバーは技術的に濃厚な記事が多いので、私はサクッと読める記事にしたいと思っています!

さて、突然ですが以下の会話をご覧ください。

### とある運用タイトルの企画とエンジニア

元記事を表示

Androidアプリ開発2ヶ月弱の新卒が思う、初学者でも参考になったサイト8選

この記事はレコチョク [Advent Calendar 2021](https://qiita.com/advent-calendar/2021/recochoku)の19日目の記事となります。

## はじめに
はじめまして、株式会社レコチョク新卒1年目の北島と申します。
趣味は音楽ゲームの「プロジェクトセカイ カラフルステージ! feat.初音ミク」をやることです。
中学校のときから色んな音楽ゲームが好きで、よく指が水ぶくれになるまでやっていました。

私は、約2ヶ月前からAndroidアプリ開発を始めました。
普段遣いはiPhoneなので、まずはAndroidスマホの操作法から慣れていったレベルの人間でも、少しずつアプリ開発が出来るようになってきました。
今回はAndroidアプリ開発の勉強をするにあたって、個人的に良かったと感じたサイトをご紹介しようと思います。

## 対象読者
– Androidアプリ開発に興味を持っている人
– Androidアプリ開発を何から始めればいいか迷っている人
– Androidアプリ開発を始めたての人

## 今回紹介するサイト

1. [これ

元記事を表示

【Android】画面分割やカットアウトに負けない画面サイズの測り方

この記事は[and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory) 19日目の記事です。
昨日は @ykkd さんの [【iOS】ストレージの空き容量を取得する方法 & 容量不足のデバッグ](https://qiita.com/ykkd/items/a75a1a97cd72b3bbc469) でした。

# はじめに

Android12Lの発表やそれに関する[ドキュメント](https://developer.android.com/guide/topics/large-screens/migrate-to-responsive-layouts#things-to-avoid
)にもある通り、Androidアプリは様々な画面構成に対応する必要性が増しているのを感じます。
端末サイズの種類自体もそうですが、画面分割によってアプリの領域が多種多様に変化するのもその要因の一つです。

この記事では、そんな様々な画面構成の中で、アプリが使える領域を正確に測る方法について書

元記事を表示

セル間に任意の間隔を空ける ItemDecoration

# ■ 概要
Android の [RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView) で、セル間に任意の間隔を空ける [RecyclerView.ItemDecoration](https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ItemDecoration) を作ってみました。

なんかしっくりした設計が見つからず、とりあえずやっつけ実装です、、、。

[Paging library](https://developer.android.com/topic/libraries/architecture/paging/v3-overview)(paging3) でも使えるように header と footer にも対応できる形にしてみました。

– セル間にコンストラクタ引数に渡した px に対応した間隔が入ります。

元記事を表示

[Jetpack Compose] 複数のComposableを簡単にColumnなどでwrapするショートカット

Jetpack ComposeでAndroid開発をするとき、複数のText ComposableをColumnで囲うなどよくあると思います。

Android Studioには、このような時に便利なショートカット**Surround with widget**があります。

## Surround with widget

例えば以下のような構成のComposableがあるとします

“`kotlin
@Composable
fun MessageCard(msg: Message) {
Text(text = msg.author)
Text(text = msg.body)
}
“`

これを、以下のようにColumnでwrapしたいとします。

“`kotlin
@Composable
fun MessageCard(msg: Message) {
Column {
Text(text = msg.author)
Text(text = msg.body)
}
}
“`

2つのText Composabl

元記事を表示

Android Kotlinの日本語チュートリアルを書きました

# Android Kotlin日本語チュートリアル
![androidkotlin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520839/4060a995-f839-6cd5-9f54-fe08013b7e87.png)
このたび表題の通り、初学者向けにAndroid×Kotlinの日本語チュートリアルを執筆しました。
全9回(+α) からなり、昨今のAndroid開発には欠かせない知識をできるだけ盛り込んだ内容にしたつもりです。

記事: [Android Kotlin日本語チュートリアル](https://araki.tech/android/article_135/)
Github: [HiroshiARAKI/AndroidKotlinTutrial](https://github.com/HiroshiARAKI/AndroidKotlinTutrial)

このQiita記事は本チュートリアルのポータル的な意味合いで書いています。
(あまり良い使い方ではないかもしれませんね、ごめんな

元記事を表示

【どうして…?】Android Studioインストールで「HAXM installation failed.」が発生する

## はじめに

Android studioのインストールでHAXMのインストールエラーが発生して、それの解消につまづきました。解消までの道のりをつらつらと書いていますので、誰かの助けになれば幸いです。

## 結論
先に結論を書いておくと、`WHPX(Windows Hypervisor Platform)が有効になっている人は、HAXM installation failed.と表示されても問題ない`です。それでも、「俺はHAXM(Hardware Accelerated Execution Manager)で開発するんだ!」って方はお読みください。
ただ、WHPXにもHAXM にも一長一短あるようです。

## 環境
ノートPC:HP(Hewlett-Packard)製
OS:Windows10 Home

(これより以下の文章は常体でお送りします。)

## エラー内容
以下のサイトからAndroid Stadioをインストールしようとする。

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

特に設定をいじらずに進めていたが、途中で以下

元記事を表示

安全なAndroid OS環境を子供世代に

今や老若男女問わずスマートフォン(スマフォ)は生活の必需品になりつつあります。しかしながら、いきなり子供世代にスマフォを無防備に渡すことは、80歳のペーパードライバー祖父にフェラーリをプレゼントするようなものに違いありません。
私はかねてよりiOSもAndroid OSもアプリ開発等携わってきた経緯があるものの、普段使いではiOSを比較的好み子供世代にも使い古しのiPhoneを主にあてがってきました。

#1. iOSのペアレンタルコントロール

iOSにはスクリーンタイムという標準のペアレンタルコントロール機能が付加されていて、主に次のような機能を使うことになると思います。
![IMG_583B97170C98-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/83484c7c-29dd-c0b7-d8b5-ab87726a18b8.jpeg)

1. 休止時間➡1日の使用時間制限(一括も、曜日毎も可能)
1. App使用時間の制限➡アプリごとの使用時間制限(アプリごと、ジャンルごと)

元記事を表示

ヒーローズリーグに登録した「開発中のソフト音源アプリ」について

[ヒーローズリーグ2021](https://heroes-league.net/)のオンラインリーグに作成中のソフト音源を投稿しました。
内容は以下のリンクから確認できます。
[開発中のソフト音源アプリ](https://protopedia.net/prototype/2718)

ちなみに、ソースも[GitHub](https://github.com/project-dev/ToneGenerator)にアップしています。

# なぜ作っているのか?
ヒーローズリーグのほうには簡単にしか書いてないですが、「音源を自分で作ってみたい」というのがまずあります。
中学生くらいの時はMSX BASICで音を鳴らして遊んでみたり、高校になってPCと一緒にYAMAHAのHello!Music!(TG300がセットのやつ)を買ってもらいました。
で、DTMを趣味でやっていたわけです。
で、バンと組んでKORG X5を手に入れたりして、TG300やKORG X5で音をいじったり、曲を作ったりしたわけです。
さらに時は進み、携帯電話でYAMAHAがSMAF発表してDTMマガジンにYAMAHAのチ

元記事を表示

Groupieより生産性高い(はず?)なRecylcerViewのススメ

この記事は[Uzabase Advent Calendar 2021](https://qiita.com/advent-calendar/2021/uzabase)の18日目の記事です。

# はじめに

Androidで一覧系を作るとき面倒ですよね。RecylcerViewなんですがそれがめんどくさい。
なので、2019年ぐらいから流行り出した[Groupie](https://github.com/lisawray/groupie)や[Epoxy](https://github.com/airbnb/epoxy)を使う人が多いのではないでしょうか?

だがしかし! 同僚が「@ko2icが作った仕組みの方がgroupieよりも簡単」という発言を信じて、仕組みを公開しようと思いますw
(読んでみて違うと思った方、先に謝っておきます。すいません。)

実は、Groupieが流行る前に作った仕組みなのですが、NewsPicksというデザインの凝ったアプリで洗練させていった感じです。
大体のアプリではこの仕組みを使うことで生産性は上がる気がしています。

まずは、簡単なこんな

元記事を表示

Android StudioでのJUnitテストのやり方

#はじめに
Javaのテストと言えば、**JUnit**。それをAndroid Studioで行う方法を紹介します。
#手順
以下のような**SampleActivity.java**があるとします。

“`
package com.websarva.wings.android.junitsample1;

public class SampleActivity {

private int id;
private String name;

public SampleActivity(int id,String name){
this.id = id;
this.name = name;
}

//IDと名前を紹介
public String explain(){
String explain;
explain = “id:”+id+”,name:”+name;
return explain;
}

//IDを取得
public i

元記事を表示

Snackbarのカスタマイズ – Android ViewとJetpack Compose比較

この記事は[Android Advent Calendar 2021](https://qiita.com/advent-calendar/2021/android)の18日目の記事です。

## 概要
あまり使う機会は無いかもしれませんが、Snackbarのカスタマイズ方法を整理してみました。
また従来のAndroid Viewでの方法とJetpack Composeでの方法を比較してみたいと思います。

以下で紹介するコードについて、こちらにサンプルプロジェクトをアップしてあります。
https://github.com/androhi/CustomSnackbarSample

## Android Viewでのカスタマイズ方法

Android Viewでは、以下のクラスを作成する必要があります。

* ContentViewCallbackクラスを継承したSnackbarのViewクラス
* BaseTransientBottomBarクラスを継承したカスタムSnackbarクラス
* 上記それぞれのレイアウトファイル

“`kotlin:CustomSnackbarVie

元記事を表示

アプリ設定の「ストレージを消去」の代わりに、アプリの「容量の管理」画面を起動させる方法

Androidのアプリ設定では、アプリのストレージを消去し、ほぼインストール直後の状態に戻すことができますが、このボタンを「容量の管理」に変更し、アプリを起動させることができます。

|ストレージを消去|容量を管理|
|:-:|:-:|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/0276fcf9-1760-7728-c2e1-e8fc376e035f.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/36d828cb-f1cb-1dda-8400-e6725c28b016.png)|

これを実現するのは非常に簡単で、AndroidManifest.xmlの`application`タグに`android:manageSpaceActivity`というattributeでActivity名を記述するだけです。
これだけで「ストレージを消去」が「容量の管理」になり、ここに記述したActi

元記事を表示

通知の有効無効状態が変化したことをアプリで受け取る方法

Androidではシステムの設定画面からアプリの通知の有効無効を変更できます。
Android 8以上であれば、通知チャンネルがありますので、すべての通知、通知チャンネルグループ単位、通知チャンネル単位、の3段階で有効無効を設定することができます。

|すべての通知|通知チャンネルグループ|通知チャンネル|
|–|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/151b4858-f700-c48b-4c67-61f7de26f341.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/30260af4-6fc0-c83f-da9f-4ab7b17fce16.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/448ef1bf-dbd0-42cb-4521-f4676a1cfb6a

元記事を表示

AndroidアプリにUnity as a Libraryでリッチな3Dを簡単に組み込む

本記事は、 [Android Advent Calendar 2021](https://qiita.com/advent-calendar/2021/android) 17日目の記事です。
PureなAndroidというよりUnity組み込むという飛び道具的な話

# Unity as a Libraryとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224134/acc135c3-17e0-4228-21f1-4be213987f11.png)

> 拡張現実(AR)、3D/2D リアルタイムレンダリング、2D ミニゲームなど、Unity で開発した機能を、ネイティブモバイルアプリケーションに直接挿入。

[Unity as a Library](https://unity.com/ja/features/unity-as-a-library) はゲームエンジンであるUnityで開発した機能を、モジュールとしてAndroidアプリケーションへ組み込むことが出来る仕組みである。

元記事を表示

Unity2019 で Android の Tareget API を 30 に設定する方法

Unity2019 で Android の Tareget API を 30 に設定するための手順です。
中々エラーが出て解決までに時間がかかったので、
同じ轍をふまないように誰かの役に、未来の自分のために。

# 注意
色々書いてありますが、
実は [Unity 2019のAndroid Build SupportでもAPI Level 29でビルドできるようにする](https://blog.yucchiy.com/2020/09/android-29-or-later-for-unity-2019/) を参考に、
素直に Unity に従って Update したほうが楽という事実が・・・。
エラーが出てしまって解決したい方などは、以下参照ください。

# 前提
* Windows 10
* Unity 2019.4.22f1
* Android Build で Target API Level を 30 で設定

# 概要手順
1. Target API Level 30 に設定する
1. [SDK を入れる](https://qiita.com/drafts#%E6%89%8

元記事を表示

[Flutter] 動画プレイヤーを再実装する形でTexture Widgetについて調べてみた

この記事は「[Flutter Advent Calendar 2021](https://qiita.com/advent-calendar/2021/flutter)」の17日目の記事です。

FlutterにはiOS/Androidと言った「プラットフォーム側で用意されているView」や「ネイティブ側で再生した映像」などをWidgetとして表示する仕組みとして、「**[Texture Widget](https://api.flutter.dev/flutter/widgets/Texture-class.html)**」や「**[Platform Views](https://docs.flutter.dev/development/platform-integration/platform-views)**」と言った機能が存在します。

今回、前者の`Texture Widget`について調査してみたので備忘録序に纏めてみようと思います。
もし記事中で間違いや説明不足の箇所などあれば、コメントや編集リクエストなどで教えて頂けると幸いです。

なお、調査する上では以下の

元記事を表示

Androidアプリ Realmでモデルパラメータを追加するとき、過去バージョン全てに渡ってパラメータ有無を考慮する必要があった話

こんにちは、ピリカ開発チームの九鬼です。

SNSピリカのAndroidアプリについて、段階公開していたv5.4.13, v5.4.14リリースで起動クラッシュが発生する問題がありました。v5.4.13でRealmのバージョンアップおよびRealm操作周りの役割分離を行っており、そのなかでのマイグレーション処理の不備が原因でした。本稿ではその経緯を共有いたします。

## 背景
SNSピリカにはイベント機能があるのですが、イベント一覧をキャッシュしておくためにRealmライブラリを使っています。v5.4.12の時点で、[Realm](https://realm.io/)のバージョンはv7.0.8でした。そのため、Realmをv10.0.0以上にアップデートするためにアプリ側の修正対応が必要でした。Realmのv10.0.0から、データの書き込みはUIスレッド以外から行う必要があるためです。

また、当時Realmを操作する部分の処理がView操作と密結合だった問題があり、そのままだと保守が難しくなる懸念がありました。そこで、Realmのバージョンアップとと

元記事を表示

kotlinのSAM変換

# kotlinでSAMのCallbackを登録する方法

## JAVAの場合

“`java
btn.setPressReleaseCallback((state) -> {
int discard = state ?
Log.i(TAG, “aiueo”)
: Log.i(TAG, “kakikukeko”);
});
“`

## Kotlinの場合

“`kotlin
btn?.setPressReleaseCallback({ pressed: Boolean ->
{
if (pressed) Log.i(TAG, “aiueo”)
else Log.i(TAG, “kakikukeko”)
}
} as PressReleaseCallback)
“`

ラベルも使える

“`kotlin

元記事を表示

OTHERカテゴリの最新記事