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

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

Navigation ComponentのstartDestinationでもHomeAsUpボタンを表示したい

Navigation Componentを教科書通り、BasicActivityなどのサンプルのまま実装すると、NavigationGraphとActionBarがリンクして、startDestinationに指定したFragmentではActionBarのUPボタンが表示されず、遷移先ではUPボタンが表示されるという動作になります。

|FirstFragment|SecondFragment|
|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/9dc4392f-21d0-bd5f-3823-f75afd3bb85a.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/6e70643b-f045-4625-0a7f-9afa03a50b63.png)|

しかし、SingleActivityで最初から作る場合はともかく、一部画面からNavigation Componentを適用

元記事を表示

【個人開発】シンプルな単語帳アプリを作ってみた【Android】

# はじめに
少し前から開発を進めていた単語帳アプリの審査が通り、めでたくGoogle Play Storeで公開されました。
https://play.google.com/store/apps/details?id=com.warpstudio.android.simplevocabulary

せっかくなので簡単に開発を振り返ってみたいと思います。
![フィーチャーグラフィック.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1073313/477b7643-088f-6a5f-6ed1-c744ae62498f.jpeg)

# 作ったもの
「**SimpleVocabulary**」というその名の通りハチャメチャにシンプルな単語帳アプリです。
会員登録やログイン等は一切不要です。
**ストアの紹介文に書くことが無さ過ぎて困ったくらい**にはシンプルです。

↓は簡単なデモです(gifなんで見づらかったらゴメンナサイ)。
![demo.gif](https://qiita-image-store.

元記事を表示

HMS Scan Kit実装入門

# HMS Scan Kitの特徴
HMS Scan KitはQRコードやバーコードのスキャン機能を提供するライブラリです。簡単に導入できるのが特徴です。

# サポートデバイス
Android 4.4以上

# サポートコード
– QR Code
– Data Matrix
– PDF417
– Aztec
– EAN-8
– EAN-13
– UPC-A
– UPC-E
– Codabar
– Code 39
– Code 93
– Code 128
– ITF-14

# 実装手順

## 前準備
(1) Huaweu Developerを登録します。

(2) AppGallery Connectでアプリのプロジェクトを登録します。
スクリーンショット 2020-10-01 155726.png

元記事を表示

【無料】ゲーム・アプリ開発におすすめのアイコンダウンロードサイトまとめてみた。6つ

アプリ制作におすすめの、アイコン素材サイト【無料】をまとめてみました。

それぞれの短所・長所も追加でまとめて行きます。

https://kaedeee.com/app-famous-icon-download-site/

#Streamline

https://app.streamlinehq.com/icons
![スクリーンショット 2021-11-15 14.12.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1900756/884c2559-1ba2-4702-4d4e-47c348a7af08.png)

**長所**
ライナーデザインから、マテリアルデザインまで。
一つのアイコンに対し、複数のデザインを選ぶことができる。

**短所**
無料版では、使えないデザインもある。

#ICOON MONO

https://icooon-mono.com
![スクリーンショット 2021-11-15 14.16.35.png](https://qiita-image-store.s3

元記事を表示

【Android】Imageをブラー加工する方法【Jetpack Compose】

# はじめに

Imageをブラー加工したい場合ってあるよね。
xmlだと結構面倒で、Glide使ってる場合なんかは[wasabeefさん作のGlide Transformation](https://github.com/wasabeef/glide-transformations)を入れるとさっと実装できたりする。

僕が担当させてもらっているプロジェクトでは着々とJetpack Compose導入の準備をしていて、その過程でブラー加工をしなきゃいけない箇所があった。
xmlでやった時困った記憶があったのでかなりびびっていたのだけど、Composeではとってもシンプルかつ簡単に実装できたので紹介させて欲しい。

## Modifier.blurを使う場合

そもそも、ComposeにはModifierでブラー加工のAPIが用意されていて、これを使えば一発で実装できる。

■こんな感じ

“`kotlin
Image(
painter = painterResource(id = R.drawable.droid),
contentDescription = nul

元記事を表示

Couchbase Lite機能解説:ピアツーピア同期〜プログラミング構成と設定項目

## ピアツーピア同期プログラミング構成

Couchbase Liteのピアツーピア同期機能を利用するためには、`URLEndpointListener`クラスを利用します。

`URLEndpointListener`を初期化する際に、`URLEndpointListenerConfiguration`を使用して構成を実行します。

ここでは、Couchbase Liteのピアツーピア同期で行えることの理解を助けるため、`URLEndpointListenerConfiguration`で設定できる項目を紹介します。

## ピアツーピア同期設定項目

`URLEndpointListenerConfiguration`を使用して、リスナーを初期化するために使用できる構成オブジェクトを作成します。

#### `port`
リスナーがリッスンするポート。

ポートがnullまたはゼロの場合、リスナーは使用可能なポートを自動割り当てします。

#### `networkInterface`
IPアドレスまたはネットワークインターフェイス名の形式で指定する、リスナーが利用する使用するネ

元記事を表示

【Android】新規画面の追加、別画面として扱い(Java)

最近、Android Studioを使って、JavaのAndroidアプリを独学で作成しているので、その過程で勉強した内容です。
作成したコードはGithubで公開しているので、気になる方は下記をご覧ください。
https://github.com/NagaJun1/OriginalCalendar

#新規画面作成においての前提
まず、Androidで新規画面(アプリ起動後の初期画面とは別の画面)を表示するには、Javaの場合は`setContentView();`を実行することで表示できます。
ですが、この場合、Androidのライフサイクル(`onStart()`や`onStop()`などのイベント)を使用することが難しくなります。
その問題を解消するために、`Intent`を使用した処理を実装する必要があります。

#新規画面の作成
新規画面の’.xml’作成は、プロジェクト作成時に作成される`\res\layout\activity_main.xml`と同様の作りにすればOKです。
(例として、`activity_sample.xml`としておきます。)
ついでに書いておくと

元記事を表示

APKのサイズを約80%削減した

# TL;DR

– 結果

“`
# ls -l *.apk
-rwxrwxrwx 1 kabocha kabocha 293997572 Nov 14 20:22 original.apk*
-rwxrwxrwx 1 kabocha kabocha 289364774 Nov 14 20:54 minifyEnabled_shrinkResources.apk*
-rwxrwxrwx 1 kabocha kabocha 97902257 Nov 14 21:34 abiFilters.apk*
-rwxrwxrwx 1 kabocha kabocha 49605621 Nov 14 22:48 extractNativeLibs.apk* # 最終結果
“`

(49605621/293997572)*100 ≒ 16.87…

– `app/build.gradle` で,`ndk.abiFilters` を指定

“`
android {
defaultConfig {
// arm64のみサポートする.
ndk

元記事を表示

Android Navigation : DialogFragmentのレスポンスは ResultReceiverで処理したほうが良くないですか? という話

タイトルでほぼすべて。 この方法が正しいかどうかわかってないので request for commentsです。

GitHubにプロジェクトを置きました

https://github.com/Nunocky/NavigationAndDialogFragment

* 一般的に紹介されている方法 (app)
* 今回提案する方法 (app2)

## 動機
「コールバックでDialogFragmentの結果を取得するなんてレガシー(笑」 と言われたこと。

とはいえ Navigationによる Dialogの定義と結果の取得は今まで非常に気に入らなかった。

## 一般的に紹介されている方法 (app)

ViewModelに LiveDataをもたせて ダイアログの結果を Fragmentと DialogFragmentで共有する方法が一般的。

“`DialogResultViewModel.kt
class DialogResultViewModel : ViewModel() {
val result = MutableLiveData

元記事を表示

【Android】Kotlin + Firestore + RecyclerViewを使ってTodoアプリを作る

# Cloud Firestoreとは
Cloud Firestore(以下Firestore)とはFirebaseのサービスの1つです。
サーバー上にデータを保存できるデータベースです。
またデータの変更を**リアルタイムで**アプリに反映してくれます。

参考:[Cloud Firestore | Firebase Documentation](https://firebase.google.com/docs/firestore)

# 実際に使ってみる
それでは実際にFirestoreを使ってTodoアプリを作ってみましょう。
ソースコードは[こちら](https://github.com/Kaito-Dogi/android-sample-firestore)にあります。(GitHub)

![firestore-sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/ed2a404c-7e61-fd9d-bcf8-5c95753196b1.gif)

## 手順
1. Fi

元記事を表示

ActivityResultContractのリクエストと結果の処理をより強く結びつかせる

ActivityResultContractsの仕組み、個人的にちょっとどうかな?と思っているところがあります。
それは、リクエスト内容と、結果の処理の結びつきが弱く、余計な自由度が残されてしまうところです。

例えばパーミッションのリクエストの場合、以下のように記述します。

“`kotlin
private val launcher =
registerForActivityResult(RequestPermission()) {
// 結果の処理
}

// リクエスト
launcher.launch(Manifest.permission.CAMERA)
“`

ここで、リクエストしているパーミッションと、その結果の処理は紐付いています。にもかかわらず、コールバックの登録時点でリクエストするパーミッションは決まっておらず、lauchをコールする時点で自由度が残されています。ここで間違って異なるパーミッションを指定してしまうと意図した動作となりません。
registerをコールした時点でこの対応関係が固定できないところがちょっとモヤモ

元記事を表示

AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまで試してみる

## 概要
AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまで試してみる
これでアプリを自前でビルドして作成し、手動でPlayストアにアップロードする手間が省かれる

## 前提条件
前提条件として既にPlayストアに公開済みのアプリがあること。app bundleに対応していること(apkではなくaabを対象とする)

## ビルド設定
`./gradlew bundleRelease` で署名付きaabが出力されるよう設定しておく

“`build.gradle

android {

signingConfigs {
release {
storeFile file(‘../keystore/xxxx.jks’)
storePassword ‘xxxx’
keyAlias = ‘xxxx’
keyPassword ‘xxxx’
}
}

buildTyp

元記事を表示

.ideaのgit管理について Android Studio

Android Studioでプロジェクトを開始するときに.ideaファイル内のgit管理についていつも迷うのメモします。

### 結論
[こちら](https://takemikami.com/2018/08/29/GitIntelliJ-IDEA.html)によると以下3個をgit管理しておけば良いみたいです。

– `build.gradle`
– `.idea/gradle.xml`
– `.idea/misc.xml`

### 自分の場合

しかし自分の環境では`misc.xml`にはユーザー固有のファイルパスが記述されていました。とりあえずユーザー固有のファイルパスの部分を`$PROJECT_DIR$`に変更しておけば良いと思います。

上記以外も基本的にユーザー固有ファイルパスの部分を適宜`$PROJECT_DIR$`に直してさえいればgit管理して問題ないかと思います。

### .idea内のファイルについて

記事を各過程で各ファイルがどのような役割なのか簡単に分かったことをまとめたいと思います。(適宜更新していくかと思います。)

– `workspace.x

元記事を表示

【Android】BottomNavigationView(画面下部のナビゲーションビュー)の実装(Java)

最近、独自でAndroid のアプリを書いているので、それのメモ書きぐらいのつもりで書いています。
独自で書いているコードは下記に収めてあるので、気になる方は下記をご覧ください。
(「カレンダー_設計書.xlsx」に完成図がざっくりと書いてあります。)
https://github.com/NagaJun1/OriginalCalendar

#「BottomNavigationView」とは?
下記画像の、赤枠の部分がそれです。
今回の記事の題名には「Java」と書いてありますが、実装方法自体は「xml」で実装します。
![ナビゲーションバー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/b5204b73-9f70-d32e-a279-d3b00bde96dd.png)

#実装
ソースコードは下記の通りです。
(各ソースの配置位置は、Andoid Studioでプロジェクトを生成した基本的な構造を想定しています。)

“`xml:\res\layout\activity_main.x

元記事を表示

[Flutter] CodeMagic で自動で build_number を更新できない時の対処法。build number が更新されない。 –build-number=$(($BUILD_NUMBER))

https://kaedeee.com/flutter-codemagic-build_number/

CodemagicでFlutterを利用する際に、Github にデプロイ後、自動でbuild numberを更新するように設定したにも関わらず、iOSで自動更新が反映されませんでした。

対応を以下に示します。

#対処法

##Codemagicの設定を見直す。
build > build arguments を

–build-number=$(($BUILD_NUMBER))

と設定する。

![スクリーンショット 2021-11-12 17.49.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1900756/24fd56ef-c082-f3d8-b787-83342dcb7035.png)

##Xcodeの設定を見直す。
Xcode > Info.plist より、

key CFBundleShortVersionString
key CFBundleVersion
部分の

元記事を表示

PreferenceScreenの導入に手間取った話

設定画面を自前で作っていましたが、
PreferenceScreenというものがあるらしく導入したときの話です。

# 赤くなっていて、設定が反映されていない
“`groovy:build.gradle(:app)
dependencies {
implementation ‘androidx.preference:preference-ktx:1.0.0’
}
“`

を記述したのにエラーが出てる。
Alt + Shift + Enterをしても`implementation`が増えるだけで一向に直らない…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447423/4a2eb61e-0b07-5ade-5f95-e11c27088a0b.png)

# 公式に書いてある通りに修正
https://developer.android.com/guide/topics/ui/settings#kotlin
をもう一度見てみると、
![image.png](https://

元記事を表示

Android 11 API30 以降に対応したアプリ開発用メモ

2021年11月からプレイストアの要件でターゲットAPIバージョンが30以降になったことに伴い、作業で躓いたポイントのメモです。

——-

## 前提
Android API30 の要件により、端末内へのアクセスなどをする場合は以降に記載する作業が必要になっています。
私の場合はアプリからブラウザを呼び出すために作業が必要でした。
[Android でのパッケージの公開設定のフィルタリング  |  Android デベロッパー  |  Android Developers](https://developer.android.com/training/package-visibility)

## AndroidManifest.xml への追記
プロジェクト名/android/app/src/main/__AndroidManifest.xml__
に必要な情報を追記します。
私の場合は以下を記載しました。
“`


【Flutter】プラグインでAndroidのActivityとContextを取得する方法

#概要
FlutterプラグインでAndroidネイティブ画面を利用するために、プラグイン側でActivityとContextを取得する方法を整理します。
プラグイン作成時にはthis経由でActivityを取得できず、代替手段が必要になるため、その補足記事となります。
本記事は[公式ドキュメント](https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration)を参考にして記載しています。

#環境

“`shell-session
$ flutter –version
Flutter 2.5.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 18116933e7 (3 weeks ago) • 2021-10-15 10:46:35 -0700
Engine • revision d3ea636dc5
Tools • Dart 2.14.4
“`

#実装

以下の手順で実

元記事を表示

M1 Mac (Monterey) でandroid studio をインスコするときに躓いた話。 ”Failed to determine required packages”

##概要
Montereyが動いているM1MacにAndroid studioを新規インストールしようとしたところ、セットアップが一発でうまくいかなかったので解決策をメモ。

##症状
Android studioの初期セットアップでNextとfinishを押していけば問題ないという記事が多くあるが、その通りに進めていくと、以下のようなエラー画面が出る。
![k7NcO.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270248/ebafcb33-9221-0b5e-72d4-57322f4ed4a7.png)

Android studioがAndroid SDKを正常にインストールできない(そんなことあっていいのか?)ためにこのエラーが出るようだ。因みに、Brewで別個にAndroid SDKをインストールしてもダメ。

##解決策
IntelliJ IDEAをインストールし、新規プロジェクト→Android からAndroid SDKをインストールして、Android Studioのセット

元記事を表示

Couchbase Lite 機能解説:インデックス作成

Couchbase Liteの機能全般について、以下の記事も合わせてご参照ください。

https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417

## 概要

インデックスを作成すると、クエリのパフォーマンスを高速化できます。クエリは、インデックスを利用して、ドキュメントのセットを絞り込むことができれば、より迅速に結果を返すことができます。

## 新しいインデックスの作成

次のデータモデルに含まれる`type`、`name`プロパティを指定して新しいインデックスを作成します。

データモデル

“`JSON
{
“_id”: “hotel123”,
“type”: “hotel”,
“name”: “Apple Droid”
}
“`

インデックスを作成するコードは次のようになります。

##### Android

“`JAVA
database.createIndex(
“TypeNameIndex”,
IndexBuilder.valueIndex(

元記事を表示

OTHERカテゴリの最新記事