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

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

ViewStubを含むレイアウトは、ViewStubをinflateしたあとにViewBindingへのbindができないので注意しよう

タイトル通りの罠にはまったので書きます

通常ViewBindingはActivityやFragmentの最初にinflateもしくはbindするだけなので問題は起こらないでしょうが、常時必要ではないモジュールにviewだけを渡して内部で再bindしている箇所があり、そこにViewStubを追加したことで問題が発生しました。

ViewStubを含むレイアウトを扱う際に、以下のようにinflate後にViewBindingへbindしようとすると

“`kotlin
val binding = HogeBinding.bind(view)

binding.viewStub.inflate()

HogeBinding.bind(view)
“`

NullPointerExceptionが発生してクラッシュしてしまいます。

“`
Caused by: java.lang.NullPointerException: Missing required view with ID: com.example.myapplication:id/view_stub
“`

V

元記事を表示

Androidで保険業界の単語帳を作る vol.2

# オブジェクト構成
単語帳に最低限必要な機能といえば単語の一覧を表示することと、データを保存するデータベースの2点かなと思ってます。
いろいろ調べていたところ、まあうさブラザーズさんが書いている以下のブログの記事のオブジェクト構成がヒントになるんじゃないかと思ったので、こちらを参考にしながら開発していこうかなと思います。

https://www.ma-chanblog.com/2021/02/android-listview.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2803693/9b5cc170-ed04-6727-23e3-7d528564098b.png)

「テキスト画面」は今のところ作るつもりはないので、メイン画面とデータベースとそれをつないでいるオブジェクトを作成していこうかなと思います。

今のところどんな風に開発するか、まったく見当がついていませんw

# メイン画面を作成する
メイン画面を作ろうと思いますが、記事を読むとメイン画面も「メイン画面」の

元記事を表示

Android: Kotlin でファイルの MD5 を計算する

Android や JVM 環境の Kotlin でファイルの MD5 を計算する実装です。

# 前提

InputStream からデータを読み込み、JDK の `java.security` を利用して MD5 を計算する方針とします。

ファイルサイズがある程度大きい (1MB ~) 状況を想定し InputStream からの読み込みとしています。

# 実装

“`kotlin
import java.io.InputStream
import java.security.DigestInputStream
import java.security.MessageDigest


val inputStream: InputStream = … // File の inputStream など
val md5 = DigestInputStream(inputStream, MessageDigest.getInstance(“MD5”)).use { input ->
val buffer = ByteArray(1024 * 1024) // buf

元記事を表示

[Android][Kotlin]圧縮ネイティブ・ライブラリについて

新規アプリケーションをPlay Consoleにアップロードする場合はAndroid App Bundle (AAB) 形式が義務付けられているが、既存アプリケーションでリリース手順を変更したくないとか、デバッグ用途でadbコマンドで端末にアプリケーションをインストールする場合はAndroid Application Package (APK) 形式でアプリケーションを生成することになる。

Play ConsoleにアップロードされたAABは、ストアによってインストールする端末に対応しAPKを生成し、ストアによって署名して端末にダウンロードされインストールされる。

![AAB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12540/ec80ade4-4223-cc42-9cf7-f75b5ded54a4.png)

アプリケーションのサイズを縮小するという目的で、デフォルト値がサイズ縮小の方向になるようになった。

Gradleで署名されたAPKを生

元記事を表示

Androidで保険業界の単語帳をつくる vol.1 ~いざ、Android Studio!~

# Android Studioを立ち上げる
Androidアプリを作成する開発環境はAndroid Stuidoを使用していきます。
Googleから提供されているIDEで無料でだれでも使えます!

Android Studioを立ち上げるとアクティビティと呼ばれる開発をする際のベースとなる画面の選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2803693/534e54f2-4dbe-ee67-ef4e-2b9c439083df.png)

いろいろあるみたいですが、よくわからないのでEmpty Activityを選択します。

# ソースコードについて
最初に表示されるのは以下の画面
かっちょいい✨
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2803693/9c301353-2695-67f2-191d-166fcaf0b9ff.png)

基本的には画像の通り[activi

元記事を表示

Androidで保険業界の単語帳をつくる vol.0

# この記事について
この記事ではAndroidアプリ開発未経験である私が簡単な単語帳の開発とGoogle Playへのリリースまでを記事にしてまとめていきたいと思ってます。
自分のアウトプット兼学習教材みたいなものです。

# なんで保険業界?
自分自身保険業界に身を置く人間なのですが、専門用語がとにかくたくさんある、、、
保険はその業界で働いている人だけではなく、生きている限り全員関わるものなので、会って損することはないかなと思いました。かなりニッチなものですが、、、
単語帳なんて学習用にみんな開発しそうだし、ニッチなほうがいいでしょ!

少し真面目なことを言うと、義務教育の中で金融教育が実施され始めた時代背景とかもあり、
保険という金融商品をもっと知っていく必要があるのではないかなと思ってます。
その一歩としてこういう単語帳があってもいいんじゃないかなと考えてます^^

# とりあえずやってみる
Googleが提供している学習教材とかやってみたけど、実際に自分が作りたいもの作ってるほうが身につくと思うのでとりあえず開発してみる。

元記事を表示

[Flutter]デプロイゲートでAndroidのプロジェクト名を変えるには

AndroidManifestのlabel名を変更すればOKです。

ディレクトリの場所はこちら。

アプリ名/android/app/src/main/AndroidManifest.xml

![スクリーンショット 2022-08-22 17.26.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494487/e51bd2fc-3f2d-fea4-1328-70c96387d58f.png)

Flutter側のプロジェクト名を変更したのに、なぜか変わらないなーって思って調べたらこんな単純なことでした。

どなたかの参考になれば幸いです。

元記事を表示

【Flutter/Android】DartDefinesで、flavorをする

### FlutterのAndroidで、flavorをする場合、下記の2つある

* flutter_flavorizrを使う
* DartDefinesを使う

flutter_flavorizrは、コマンドで自動的にファイルを作成・変更を行ってくれるので楽なのですが、ファイルが複数出来たり、管理が煩雑になります。
DartDefinesは、手動でファイルを修正する必要がありますが、ファイルが増える訳ではないので、管理が楽になります。
今回は、DartDefinesでflavorを実現したいと思います。

### build.gradleを編集

“`diff_gradle:app/build.gradle

def flutterVersionName = localProperties.getProperty(‘flutter.versionName’)
if (flutterVersionName == null) {
flutterVersionName = ‘1.0’
}

+def dartDefines = [:]
+if (project.hasP

元記事を表示

【Flutter】intro_slider の使い方

## 初めに
intro_slider とは、以下のようなチュートリアルの画面を作成するためのパッケージです。
![intro_slider_sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609901/7316c25b-ecb8-0b73-4b22-d77848f9862c.gif)

## 準備
まずは、[intro_slider パッケージ](https://pub.dev/packages/intro_slider) を「 pubspeck.yaml 」に記述します。
パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。

“`yaml: pubspeck.yaml
dependencies:
flutter:
sdk: flutter

intro_slider: ^3.0.9
“`
Pub get をして準備は完了です。

## 実装
まずは実装したい画面で intro_slider をインポートします。
“`dart: ma

元記事を表示

【Android】時間を表示するView『AnalogClock』

# はじめに
前回は デジタル時計を表示する『TextClock』を記事にしました。
よければそちらも見てください →[【Android】時間を表示するView『TextClock』
](https://qiita.com/Tsubasa12/items/443db0ce5d89667a25bf)

今回は アナログ時計を表示する『AnalogClock』を紹介します。

# AnalogClock
使い方としては 先述したTextClockの記事に書いてあるのと同じで
AnalogClockクラスか LayoutにAnalogClockタグを追加して用います。

AnalogClockではデジタル時計のように時計の型式を変えることはできませんが、
AnalogClockでは時計の見た目を変更することができます。

xml側で
android:dial属性で, 時計の文字盤の画像
android:hand_minute属性で, 時計の長針の画像
android:hand_hour属性で, 時計の短針の画像
をそれぞれ指定することができます。

また、AnalogClockはAPI le

元記事を表示

AndroidStidioファイル内のコード置換方法(Mac)

今回はxmlなのでViewのidの名前を変更するときなど、ConstraintLayoutを使用しているとViewのidを複数箇所に記載している事などがあるので、その場合に便利だったりします。

# ファイル内のコード置換方法
`command + F`でまず、検索を表示させます。
ここにリネーム前文字を入力します。

`command + R`でリネーム後の文字を入力します。

Replaceを押すと置換されます。
Replace Allはファイル内全て置換されます。

![スクリーンショット 2022-08-21 19.24.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/c97cdd19-3266-b2de-afc8-fb7b077f0bd1.png)
このスクリーンショットの場合androidがappに置換されます

以上です。

元記事を表示

Room等で作成したDBの配置先とDB内を参照する方法

# はじめに
Room等でデータベース絡みの実装を行う際に、DB内のデータを参照したり、DB消してみたり等色々検証が必要ですよね。
その際に必要不可欠なDBの配置先とDB内を参照する手順を備忘録的にまとめておこうと思います。

# DB配置先確認方法

画面右下のDevice File Exprorerから、[data] > [data] > [パッケージ名] > [databases]の中にroom等で作成したdbが配置されています。
こちらから対象のdbを消したりできるので、検証時に便利です。

# DB内参照方法

Jetpack ComposeでViewModelを使わずに、Composable関数を使って状態とロジックを切り出す!

## はじめに
最近、Androidアプリ開発においてJetpack Composeを使用する機会が増えたことを嬉しく感じています。

この記事では、**Jetpack Compose** で、 **ViewModelを使わないで** に **Composable関数(Factory Function)** を使って、**状態とロジック** をViewの外に切り出す方法 について、説明しています。

**Composable関数(Factory Function)** を使えば **「状態やロジック」** を簡単にViewの外に切り出すことができます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f39333730332f65613365366164372d306130302d323436342d323935392d3737386566313365363232372e706e67.png](

元記事を表示

AndroidのAPN Type一覧

# 前提
Androidのモバイルネットワークの設定においてAPNを登録することがあります。その中でもAPN Typeに関してまとまった記事がなかったため、メモがてらに作成します。

## Android コード
https://android.googlesource.com/platform/frameworks/base/+/a79bad63a3a813d0c38babd8d74c4076a43d47d/telephony/java/android/telephony/data/ApnSetting.java

# Type 一覧
| 内容 | 文字列 | 概要 |
| —- | —- | —- |
| TYPE_ALL_STRING | “*” | データ接続用のAPNタイプ |
| TYPE_DEFAULT_STRING | “default” | デフォルトのデータトラフィックのAPNタイプ |
| TYPE_MMS_STRING | “mms” | MMS(Multimedia Messaging Service)トラフィックのためのAPNタイプ |
| T

元記事を表示

Jetpack Composeで画面幅を取得して4分割する方法

## はじめに
今回はまず画面の幅を取得して、その上で最小値を設定して4分割した値を取得し、Jetpack ComposeのRowの中でそれぞれ要素に横幅を設定して呼び出していこうと思います。

## 画面の幅を取得
まず、画面の横幅を取得するところからやっていこうと思います。

“`Kotlin

@Composable
fun Root() {
DetailSection(
modifier = Modifier
.fillMaxWidth()
)
}

@Composable
fun DetailSection(
modifier: Modifier = Modifier
) {
val configuration = LocalConfiguration.current.screenWidthDp.dp

Row(
modifier = modifier,
horizontalArrangement = Arrangement.Start,
verticalAlignment = Alignment.

元記事を表示

Unity で Google Mobile Ads (AdMob) を使うコード

## 前提
– Unity 2021.3.8f1
– Google Mobile Ads Unity Plugin v7.1.0
– Apple App Store、Google Play Store
– この記事では、Google Mobile Adsの一部機能を限定的に使用し、汎用性のない部分があります。
– この記事では、以下の内容を扱いません。
– Google Mobile Adsのルールやコンソールの使い方など
– Unityエディタの使い方やモバイル向けのビルド方法など
– この記事のソースは、実機でテストしていますが、本番広告でのテストはしていません。
– プロジェクトで使用したIDはテスト用のもので、ストアで公開する製品に使用できるものではありません。

## できること
– AndroidまたはiOSで、AdMobを利用します。
– 複数のバナー、インタースティシャル、リワードビデオ広告の表示を制御し、シーンに応じて広告を切り替えます。
– 報酬の獲得を検出します。

## リソース
### このプロジェクト
– [ソース (GitHub)](https

元記事を表示

【Flutter】percent_indicator の使い方

## 初めに
percent_indicator とは、以下の画像のように何らかの達成状況を示すための Widget です。
家計簿のアプリや習慣化のアプリに多く使用される印象です。

## 準備
まずは、[percent_indicator パッケージ](https://pub.dev/packages/percent_indicator) を「 pubspeck.yaml 」に記述します。
パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。

“`yaml: pubspeck.yaml
dependencies:
flutter:
sdk: flutter

percent_indicator: ^4.2.2
“`
Pub get をして準備は完了です。

## 実装
まず

元記事を表示

UIの状態管理方法とViewModelイベントの実装例

## はじめに
2021年12月に公式の[アーキテクチャガイド](https://developer.android.com/jetpack/guide?hl=ja)が大幅に更新されました。

この記事では、[UI層](https://developer.android.com/jetpack/guide/ui-layer?hl=ja)の大まかな解説と、[ViewModelイベント](https://developer.android.com/jetpack/guide/ui-layer/events)について、LiveDataとFlowの2パターンでの実装例を示しながら解説を行います。

## UI層の大まかな解説
公式のアーキテクチャガイドをおさらいしてみると、 `UI層、Domain層、Data層`の3つに分かれており、それぞれ`一方向に依存している`ことが分かります。

この一方向に依存しているというのが、後から重要になってくるので覚えておいてください。
![mad-arch-overview.png](https://qiita-image-store.s3.ap-nort

元記事を表示

JetpackCompose BottomNavigation の基本的な構成

![Reflector Recording.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/2d744d55-4699-e0c5-c0ae-216c5210948e.gif)

# 構成

シンプルに構成します。

![スクリーンショット 2022-08-18 19.14.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/59a48ebe-9e3f-b6a0-f24b-fb8f0a4ff13f.png)

メイン画面を表示する部分は

「NavHost」

それを表示切り替えする下側に並んだ操作部分は

「BottomNavigation」

です。

コードは以下のように構成できます。

“`kotlin
@Composable
fun MainScreen() {

val navController = rememberNa

元記事を表示

【Flutter】アプリアイコンを変更する

## 初めに
Apple Store や Google Play Store にアプリを表示させる場合、当然のことながら、自分独自のアイコンを作成して表示させる必要があります。
今回は作成したアイコンをアプリアイコンとしてホーム画面に表示させる方法を紹介します。

## flutter_launcher_icons
今回は [flutter_launcher_icons](https://pub.dev/packages/flutter_launcher_icons) というパッケージを使用します。
このパッケージはアプリのアイコンを変更する際に使用されるパッケージです。

## 準備
まずは、パッケージのバージョンを「 pubspeck.yaml 」に記述します。
このパッケージを使用するのは開発段階であるため、`dependencies` ではなく、 `dev_dependencies` に追加します。

パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。
“`yaml: pubspeck.yaml
dev_dependencies:
flutt

元記事を表示

OTHERカテゴリの最新記事