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

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

HMS Map Kit Android SDKの導入方法について

#1. 概要
HMS Map KitはHMSの地図サービスであり、現時点では以下の5つのサービスを提供しています。

1. [Android SDK](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-v4-abouttheservice)
2. [JavaScript API](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-js-about-the-service)
3. [Web API](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-directions-api)
4. [React Native SDK](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-v4-abou

元記事を表示

[Android]Androidアプリ側で何かしらのライブラリを読み込むとコンフリクトバージョンエラーが発生する理由

# はじめに

Androidで開発をしていて、よくある問題として何かしらのライブラリをgradleで読み込み実行すると、kotlinのバージョンンコンフリクト系のエラーが発生する場合がある。ので見解

ちょっと調べたのでメモ程度に残しておきます

# 原因

いろいろな理由があるのかも知れないが、まずライブラリのkotlinのバージョンとコンフリクトを起こしている場合に起きえます。
その場合は、そもそもライブラリを使うのを諦めるか、ライブラリのバージョンを古いものを使ってみるか、ライブラリを組み込むアプリのkotlinバージョンをアップしてみるかなどよくわからずに適当に試行錯誤して解決することが多いです。

## kotlinライブラリのコンフリクト
kotlinのライブラリを読み込むとkotlinのライブラリがアプリ側に読み込まれます。
その分apkのサイズとメソッド数は増加します。multi dexが必要かも。

アプリ側に読み込まれたkotlinライブラリとアプリ側のkotlinのバージョンでコンフリクトが起きる場合があるようです。
gradleの使用は下記を参考ください。ko

元記事を表示

OracleのJava Development Kitが有償化したが、引き続きAndroid Studioは無料で使えるのか?

Android Studioはデフォルトで無料のOpenJDKを使用しているため、無料で使用可能。
有償化したのはOracleJDK。
非商用、非本番利用であれば、OracleJDKも無料使用可能。

元記事を表示

[Android]GsonからMoshiに移行しようとした時、ビルドができなくなった

## 状況
GsonからMoshiに移行した時にビルド時にエラーが出てしまった。

## Mohsiをプロジェクトに追加する
以下をgraldeに追加しMoshiを既存プロジェクトに入れる。

“`Kotlin:gradle.app
def moshi_version = ‘1.5.0’
implementation “com.squareup.moshi:moshi:$moshi_version”
implementation “com.squareup.moshi:moshi-kotlin:$moshi_version”
“`

ビルドすると、下記エラーが出た。

## エラー内容
`Duplicate class kotlin.reflect.KClasses found in modules jetified-kotlin-reflect-1.1.1.jar (org.jetbrains.kotlin:kotlin-reflect:1.1.1) and jetified-kotlin-stdlib-1.3.72.jar (org.jetbrains.

元記事を表示

[Material Design] Icons のvisibility / visibility_off をパスワード入力のTextFormField で利用する場合、テキストが見えているときにvisibiltyを表示するべきなのか、見えないようにしますよという意味合いでvisibility_off を表示するべきなのか考えた結果

visibility
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132323/f99f9f5c-d65e-69bd-3a24-a9a2638fbd89.png)

visibility_off
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132323/b02e52e7-4362-0af1-07ba-22fd36a964f3.png)

#結論
以下の理由により、テキストが見えているときに「visibility」、隠しているときに「visibility_off」を使う方がMaterial Designに沿っているように感じました。

・公式のページにテキストが見えているときに「visibility」を表示している図がある
MATERIAL DIS

元記事を表示

【翻訳】Android Developers ガイド:アプリの権限の概要

デベロッパーガイドの**アプリの基本**を順に読んでいったのですが、最後の[アプリの権限の概要](https://developer.android.com/training/basics/permissions)が英語だったので読みながら翻訳しました。

このQiitaでは現公式ドキュメンツに即し基本的に「権限」としてますが、漢字が並んだりして気になった際には適宜「パーミッション」表記にしましたが、同じものと思ってください。
(化石がまだナマモノだった時代の日本語のブログとかだとpermissionは「権限」より「パーミッション」と書いている人が多かったような記憶が朧げにあります。)

# アプリの権限(パーミッション)の概容
[App permissions overview](https://developer.android.com/training/basics/permissions)
> Android builds upon [system security features](https://source.android.com/security/features)

元記事を表示

今やってるAndroidプロジェクトにgitlabciを導入してみた

# 前回やったことと今回やること
前回は今回の事前準備として、手動でDockerコンテナからAndroidアプリのビルドを行いました

今回は

– gitlabciを使ってCommit時に自動ビルドを実行する
– ブランチごとにビルドタイプとフレーバーを指定する
– VersionCodeにgitlabciのJobIDを割り当てる

ここまでやっていきたいと思います

# .gitlab-ci.yml作成
まずはgitlabciのCI/CDの設定ファイルである**.gitlab-ci.yml** を作ります

作り方はとてもかんたんで、

– リポジトリのファイル一覧のページから,「+」→「New File」を選択
– Templateで「.gitlab-ci.yml」「Android」を選択

すると、下記のファイルが作成されます

“`yml:.gitlab-ci.yml
# This file is a template, and might need editing before it works on your project.
# Read more about thi

元記事を表示

[Flutter] floatingActionButton を複数表示する方法(※Material Design非推奨)

floatingAnctionButton(以下FAB)を1画面に複数設置したい場合のサンプルです。
ただし、Material Design では、FABは画面内の主要、または最も一般的な操作を表現するためのものとされているため**「原則1画面に1つ」**が推奨されています。
特別な理由がない場合は大事なアクションをFAB、他方は通常のボタンにした方がMaterial Design に沿ったものになります。
参考※1のMaterial Design公式ではFAB2つで「Caution」、3つで「Don’t」とされていますね。。

以下にサンプルを記載します。
参考※2のflutter.devの通り、Scaffoldの中でappBar, bodyと一緒に記述します。

“`dart
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(centerTitle: true, title: Text(‘Title’)),
body: // (省略)
floatingActionB

元記事を表示

Android: kotlinx.serialization 1.0.1

– kotlin: 1.4.10
– kotlinx.serialization: 1.0.1

Jsonのパースをkotlinx.serializationの0.2.0で行っていましたが、Kotlinが1.4になったことにより、いろいろ変わったみたいなのでやり直し。

https://kotlinlang.org/docs/reference/serialization.html

## 導入

build.gradle(app)の記述だけでよくなったようです。

“`gradle:build.gradle(app)
plugins {
id ‘org.jetbrains.kotlin.plugin.serialization’ version ‘1.4.10’
}

dependencies {
implementation “org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1”
}
“`

## 実装

テストコードで実行。ドキュメントのサンプルそのままです。

“`kotlin
package jp

元記事を表示

[Android] [Material Design] テーマの参考になったページまとめ 2020

Android アプリ開発時のテーマを決める際に参考になったページをご紹介したいと思います。

## 1. Material Design > Color > The color system
Material Design > Color > The color system
Material Design の公式ページです。基本的にAndroid はMaterial Design に準拠したものにしたいため、まずはこちらを眺めてみることをオススメします。

## 2. COLOR TOOL
COLOR TOOL
カラーパレットから色を選択すると、アプリがどのようになるのかわかるツールです。
色はMaterial Design color pa

元記事を表示

KotlinでAndroidアプリ開発時、ローカルのDBに保存処理を行った際に起こったエラーと対策

## はじめに

Kotlinで、バーコード読み取り機能を使用したAndroidアプリ開発時、
読み込んだ値をローカルのDBに保存する際に起こったエラーと、解決方法を共有したいと思います。

## エラー内容
`Cannot access database on the main thread since it may potentially lock the UI for a long period of time.`

UIスレッドを長時間ロックしてしまう可能性があるため、メインスレッド上でDBへのアクセスはできないようです。

## 解決方法

### 依存の追加
まずは、build.gradle に下記を追加します。

“`app/build.gradle
dependencies {
implementation ‘io.reactivex.rxjava2:rxjava:2.1.12’
implementation ‘io.reactivex.rxjava2:rxandroid:2.0.2’
implementation ‘io.reactivex

元記事を表示

Androidライブラリ公開

2020-05に別の場所で書いた社内用メモの転記です。
変わったところがあれば修正していきます。

※2020-11-05
※公開方法、ここに書いた方法では動きませんでした。(半年前なのに。。)
※いろいろな方の記事を参考に試行錯誤してみましたが、うまくいきませんでした。
※動作する手順がわかったら、また更新します。。。

# Androidライブラリの公開手順
1. GitHubにレポジトリ作成 → Push
[SankoSC GitHub](https://github.com/sankosc?tab=repositories)
1. Bintrayにレポジトリを作る
[Sankosc Bintray](https://bintray.com/sankosc)
1. ライブラリのbuild.gradleにpublish情報を記述

“`xml:build.gradle
publish {
userOrg = ‘sankosc’
groupId = ‘jp.co.sankosc’
artifactId

元記事を表示

【Android】Room DaoクラスのアノテーションとOnConflictStrategyまとめ

[Room]:https://developer.android.com/jetpack/androidx/releases/room?hl=ja
[Room  |  Android デベロッパー]:https://developer.android.com/jetpack/androidx/releases/room?hl=ja

[Room を使用してローカル データベースにデータを保存する  |  Android デベロッパー]:https://developer.android.com/training/data-storage/room?hl=ja

[Room DAO を使用してデータにアクセスする  |  Android デベロッパー]:https://developer.android.com/training/data-storage/room/accessing-data#convenience-insert

[OnConflictStrategy  |  Android デベロッパー]:https://developer.android.com/referenc

元記事を表示

KotlinでScopeクラスを作ってその中だけで呼べる拡張関数を定義する

今日ご紹介させていただくのは、Kotlinの拡張関数を特定の条件下のみで使える様にする。
といった実装の話です。

通常の拡張関数ではできないことが、特定の条件下ではできるようになることが今回のポイントになります。
これによって、ちょっと面倒な処理で、同じコードの繰り返しが多い場合に非常に楽になると思います。
ただし便利な反面設計が重要になります。より発展的なことをしようとすると隠蔽された実装のなかで、特に状態管理やAPI設計が非常に重要になるので、諸刃の剣になると言うことを十分に理解した上で適所のみに使うことが重要です。

ではさっそく段階を踏んで紹介していきましょう。

## レベル1

まず最初は特定のクラス内でのみ使える拡張関数からです。

“`kotlin
class SquareScope {
fun Int.square(): Int = this * this
}
“`
上記のように`SquareScope`クラスの中に拡張関数を定義した場合、SquareScopeのインスタンスを`this`で参照できる場合のみ拡張関数の`square`を利用することができ

元記事を表示

【Android】SearchView 使ってみた

#【Android】SearchView 使ってみた

## SearchViewとは
文字を入力してもらうような検索レイアウトを作るのって、面倒だなと思ってたら、もともと用意されているレイアウトで、SearchViewというものがありました。

[SearchViewについての公式ドキュメント](https://developer.android.com/reference/androidx/appcompat/widget/SearchView)

## 使い方
使い方はとても簡単です。

* レイアウト

“` searchView.xml

元記事を表示

#35 Kotlin Koans Properties/Delegates how it works 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Properties/Delegates how it worksの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 Properties/Delegates how it works の解説

[Kotlin Koans Properties/Delegates how it works ](https://play.kotlinlang.org/koans/Properties/Delegates%20how%20it%20works/Task.kt)の解説です。
随時本サイトの内容を引用させていただきます。

本文とコードを見てみましょう。

> You may declare your own [delegates](https://kotlinlang.org/docs/re

元記事を表示

Apple Developer と Google Play の公式テスターについて

## 概要

久々に調べて毎回ググるのが面倒だからここにまとめる。
iOS/Androidのアプリ開発で、公式のテスター登録について次の内容となる。

※一部公式の内容を抜粋しているため、アップデートがあった際に詳細が異なる可能性があり、この記事をそのまま鵜呑みにせず必ず公式ページを確認するようにお願いします。

## [TestFlight](https://developer.apple.com/jp/testflight/)

 lockup-hero-large_2x.png

### 内部テスター
* チームでAccount Holder、Admin、App Manager、Developer、Marketingのいずれかの役割を担うメンバーを**最大100人**まで追加可能。

### 外部テスター
* Eメールアドレスを使用するか、任意のユーザーに対してAppのテストに参

元記事を表示

Foreground Service利用時の注意点

Android開発を始めて間もないため、ちょっとしたことで躓いてしまうのですが、ForegroundServiceでハマってしまいました。

## API Level 28 以上の場合の対応
Manifestファイルに追記が必要でした。これがなかったため、Service開始時にアプリが落ちていました。

“`Kotlin

“`

## 参考
[Foreground Serviceの基本](https://qiita.com/naoi/items/03e76d10948fe0d45597)
[Android 9 Pie 時代のフォアグラウンドサービス](https://rakuishi.com/archives/android-9-pie-foreground/)

元記事を表示

[Flutter] [Navigator] 次画面へ複数の値を渡す方法

Navigatorによる画面遷移時に次画面へ値を渡す方法です。
SQLiteやSharedPreferencesで保持する必要はなく、ライトに値を渡したいときにご参考になればと思います。

渡したい値が1つの場合

変数 hogeを次画面に渡す例

第3引数のargumentsに変数 hoge をセットします。

遷移元

“`dart

String hoge = ‘hoge’;
Navigator.pushReplacementNamed(
context,
‘/next_path’,
arguments: hoge
);
“`

遷移先

“`dart

final String hoge = ModalRoute.of(context).settings.arguments;
“`

渡したい値が複数ある場合

変数 hogeId, fuga を次画面に渡す例

渡したい値をまとめたクラスを作成し、そのオブジェクトを渡します。
名前はなんでも良いので、ViewAToBArguments というクラス名で以下のように作成すると

元記事を表示

Android-Kotlin入門記事まとめ

【超初心者向け】Android入門 Hello World編
https://qiita.com/dosukoi_android/items/0d70194a97b625206f40

【超初心者向け】Android入門 TextView編
https://qiita.com/dosukoi_android/items/d72c2f6d668ef04206ac

【超初心者向け】Android入門 Button編
https://qiita.com/dosukoi_android/items/823e7c293016db1deec3

【超初心者向け】Android入門 EditText編
https://qiita.com/dosukoi_android/items/96868f29c061dd46950a

【超初心者向け】Android入門 LinearLayout編
https://qiita.com/dosukoi_android/items/197d2704e7ec44cf884b

【超初心者向け】Android入門 RecyclerView編
https://qiita

元記事を表示

OTHERカテゴリの最新記事