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

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

Androidアプリ開発探求記(その8)

# 概要
[前回](https://qiita.com/beyondseeker/items/b998a418aaf37bd91837)は、buildSrc を導入しつつ、build.gradle を build.gradle.kts に書き換えてみました。

今回は、*buildSrc* 側で依存関係を一元管理する方法を模索してみようと思います。

# 前回の懸念点
前回は、以下のような懸念点を上げました。

## ◆ extension による可読性の低下
extension を使うと可読性が下がるように思えます。

“`kotlin
plugins {
id(“com.android.application”)
// TODO: この extension って逆にわかりづらい気がする。
kotlin(“android”)
id(“kotlin-android-extensions”)
}
“`

“`kotlin
plugins {
id(“com.android.application”)
// TODO: こっちのほうが分

元記事を表示

Androidのキーボード表示非表示を検知する最も簡単な方法(だと思う)

Androidではキーボードの表示/非表示を検知する方法が標準では用意されていないんですよね。。。

実際、ナビゲーションバーを非表示にしておきたい場合など、キーボードが表示されたタイミングを検知したい場合が多々あったため
よい方法はないかとググりました。

Activityの高さの変化などを取得し、キーボードの状態変化を検知する方法等ありますが、
最も簡単な方法かと思われる素敵なライブラリが公開されていたので共有です。

https://github.com/yshrsmz/KeyboardVisibilityEvent

このような素敵なライブラリが埋もれているのは勿体ないのでお勧めです。

元記事を表示

【Kotlin】スクロールと連動させつつ動的にFABを表示したり隠したりする

##はじめに
FloatingActionButtonを使うときはCoordinatorLayoutやRecyclerViewと一緒に使ったりして、スクロールに合わせて表示・非表示を切り替えるかと思います。
この場合は、レイアウトファイルのFABに「app:layout_behavior=”com.google.android.material.behavior.HideBottomViewOnScrollBehavior”」と書けばスクロールにあわせていい感じにやってくれます。
しかし、これだと何らかの理由でスクロールができなくなった時にFABが隠れたままになってしまうことがあります。

##どうするか
HideBottomViewOnScrollBehaviorにはslideUp/slideDownメソッドがあるのですが、protectedなメソッドのため外部から呼ぶことはできません。
なので継承したクラスでオーバーライドします。

“`Kotlin:ListActivity.kt
class ListActivity : AppCompatActivity() {

o

元記事を表示

Androidアプリ開発探求記(その7)

# 概要
今回は、*buildSrc* を導入しつつ、*build.gradle* を *build.gradle.kts* に書き換えてみようと思います。

# 現行ソース
## ◆ build.gradle
[source](https://github.com/beyondseeker/chrono0015/blob/c5009917501cbce49fc31e86a793000026071b85/build.gradle)

“`grooby
buildscript {
// 『この位置』でのバージョン情報定義は、結構他の多くのプロジェクトでも踏襲してるっぽい。
//
// – mockk(https://github.com/mockk/mockk/blob/master/build.gradle)の場合は結構愚直にやってる。
//
// – picasso(https://github.com/square/picasso/blob/master/build.gradle)の場合は
// ext.versions = [

元記事を表示

Android アプリに広告(Google AdMob)入れて不労所得したい

## きっかけ

最近私の巷で副業が流行っています。

そこで私も、「何か Web アプリでも開発して、広告収入を得てみたい!!」などと漠然と考えるようになりました。

個人開発者が作成しているとても魅力的な Web アプリを参考にしたり、自分がこれあったらいいなという物を考えて、いざ開発しよう!という段階にまで来ました。

しかし Web アプリは作って終わりではなく、サーバ設置やデータベース作成、ドメイン取得、その他セキュリティ設定、その他・・・などが必要になってくると知った私は

– 開発したものはすぐにリリースしたいのに、時間かかりそうだなー

– 一つ一つ攻略していくのに何かと時間かかりそうだなー

– 開発したものがそこまででもないのに伸びなかったら時間の無駄だなー

– ⇒ 本当はそんなことはなく、Web アプリのリリース手法が身につくので本来は自分にとってプラスであることは重々承知しています。。。

– 広告収入の仕組みがどんな感じなのか知りたいだけなのにそんなに時間かける必要性は?

などと思ってしまい、やる気がなくなってしまいました。

ただ、自分のモチベーショ

元記事を表示

物理アニメーションでRecyclerViewにオーバースクロールアニメーションを実装してみる

#はじめに
**「Android Studio のRecyclerViewをオーバースクロール(bouncing animation, ios風にスクロール)させたい」**、こんなことを思った人は多いと思います。(このアニメーション何て言うのか分かんない…)かく言う自分もその一人です。
デフォルトの`overScrollMode`とかいう色が付くスクロールアニメーションってダサくね?って思ってました。

初めてRecyclerViewを実装したときは、ios風にスクロール端のアニメーションを設定するにはどうするんだろう? なんかそういうAttributeでもあんだろ?
… そんな風に甘く考えてました。

実際にやろうとして、すぐにAttributeがないことに気づき嘘やろ?ってなりました。
何だかよくわからんが変なアダプタ作ったり、scrollリスナ使ったり、ライブラリ使ったりして3日ほど頑張ってみたけど、結局出来なくて泣く泣く諦めた記憶があります。(recyclerView触りたてのヤツがやるには難易度高すぎw)

それから少し時間がたちリベンジ。
検索していたらとても参考に

元記事を表示

【Android/Kotlin】世界測地系を日本測地系に変換する

# 世界測地系と日本測地系
測地系とは緯度経度を表すときの基準になるものです。
(詳しくはググってください)
普段GoogleMap等で目にするのは世界測地系ですが、まれに日本測地系を使用する場合があります。
今回その例に遭遇したので、変換方法をメモしておこうと思います。

# ライブラリのインストール
使用するライブラリ→ [Proj4J](https://search.maven.org/artifact/org.osgeo/proj4j/0.1.0/jar)

“`
// 測地系変換を実現するPROJライブラリ
implementation ‘org.osgeo:proj4j:0.1.0’
“`

# 測地系の変換
最後の`convertPoint`に変換後の緯度経度が入っています。

“`
val crsFactory = CRSFactory()
// wgs84(世界測地系)
val wgs84 = crsFactory.createFromParameters(
null,
“+proj=longlat +ellps=

元記事を表示

Androidアプリ開発探求記(その6)

# 概要
[現状のコード](https://github.com/beyondseeker/chrono0015/blob/e2cb85631b5c0aedc05048543669b5f23ba62430/app/build.gradle)は JDK8 対応が中途半端なので、今回はきちんと JDK8 に対応してみようと思います。

# やること
JDK8 対応する。

# 現行コード
[source](https://github.com/beyondseeker/chrono0015/blob/e2cb85631b5c0aedc05048543669b5f23ba62430/app/build.gradle)

“`groovy:app/build.gradle
apply plugin: ‘com.android.application’
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’

android {
compileSdkVersion 29

defaultC

元記事を表示

Androidアプリ開発探求記(その5)

# 概要
今回は、*build.gradle* について探求してみたいと思います。

# やること
*build.gradle* を一通り確認してみようと思います。

# 現行コード

## ◆ build.gradle
[source](https://github.com/beyondseeker/chrono0015/blob/d3cba524c8ac6dcc3b9b393c9fb6fe8645ef1395/build.gradle)

“`groovy
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = “1.3.72”
repositories {
google()
jcenter()
}
dependencies {
classpath “com.android.tools.bu

元記事を表示

【Flutter】DateTimeを「何日前」「何分前」など現在時刻との差分で表示させる方法

今回は、flutterで、「何日前」、「何分前」など現在時刻からの差分で表示していきます。

# 現在時刻より「〜日前」「〜分前」の時間をとって来きて画面に表示する

ソースコード

“`dart:main.dart

// 現在の時刻
final DateTime now = DateTime.now();

class Date extends StatelessWidget {
// 30秒前の時刻
final DateTime thirtySecondsAgo = now.add(Duration(seconds: 30) * -1);
// 30分前の時刻
final DateTime thirtyMinutesAgo = now.add(Duration(minutes: 30) * -1);
// 5時間前の時刻
final DateTime fiveHoursAgo = now.add(Duration(hours: 30) * -1);
// 30日前の時刻
final DateTime thirtyDaysAgo = now.ad

元記事を表示

道案内ボランティア向けのアプリ開発プロジェクト

#1 はじめに
みなさんはじめまして。塚原卜伝と申します。

仕事ではC,C++,pythonを扱っています。

仕事の合間に外国人道案内ボランティア団体であるask me!での活動に参加しています。

ask me! HP : https://askme.ne.jp/
Twitter  : https://twitter.com/askmeJAPAN
Facebook  : https://www.facebook.com/weareaskme
Instagram  :https://www.instagram.com/we.are.askme/?hl=ja

2020年の3月にask me!での活動の効率化のためにAndroid&iOSアプリ(ask me! app)をリリースしました。

今回初めての個人開発で大変な所も多かったですが、楽しい所もありました。

今回は自分がどのように「ask me! app」を作っていったのかをまとめたいと思います。

#2 ask me!の活動紹介

ask me! appはask me!での活動がベースになって作られたものなので

元記事を表示

coroutines x Retrofitで CallAdapterを使いAPIエラーレスポンスをデコードする

## はじめに
APIのエラーレスポンスの型が統一されている場合, エラーレスポンスの型を定義し, デコードを共通化して行いたくなります.
今回は[Retrofit](https://github.com/square/retrofit)の`CallAdapter`を使用して, APIエラー時の挙動を(`HttpException`ではなく) Custom Exceptionを吐くよう変更する方法をメモしておきます.

[公式のサンプル](https://github.com/square/retrofit/tree/master/samples/src/main/java/com/example/retrofit)にも同じ目的の`CallAdapter`がありますが, coroutinesの場合必要な定義が少し変わるのでメモしておきます.

### CallAdapter.Factory#getの処理
suspend関数を使う場合, `CallAdapter.Factory#get` で `returnType`が`Call`であることを確認する必要があります.

“`kotli

元記事を表示

ChannelTalkのiOS、Androdアプリへの導入方法

# MAMORIOにおけるチャットツールの利用とChannelTalkへの移行

落とし物防止タグのMAMORIOはIoTタグとアプリを連携させる複雑さの問題からユーザーからの問い合わせが多く、2018年頃からサポートの体験の質を向上させるためにIntercomというチャットツールを導入していた。

しかし、米国製で主に欧米や中南米諸国をマーケットとしているIntercomは基本的に英語話者向けで管理コンソールもIntercom社員とのやりとりも英語であり、また(便利そうな)自然言語処理を用いたチャットボット機能も一向に日本語対応する気配がなかったため、韓国製でBotやマーケティング機能のコストが安く、かつ日本語圏を優先してくれるChannelTalkへ移行したところ**オペレーターによるサポート負荷を半減させることに成功した**。

以下は弊社オペレーターが書いた記事: https://note.com/tanakosan0508/n/n99af82341ba0

# 導入方法

導入ガイド: https://developers.channel.io/docs

SDKを使用するに

元記事を表示

オープンソースのAndroid(AOSP)にGooglePlayStoreを入れる

# Step1 端末にあったファイルをダウンロードする
PlayStoreを利用するには、以下の3つのパッケージが必要となります。

– GoogleServicesFramework
– Phonesky(GooglePlayストア)
– PrebuiltGmsCore(GooglePlay開発者サービス)

これらは[Open GAPPS](https://opengapps.org/)からダウンロードすることができます。

手持ちのAndroidに合わせてPlatform,Androidを選択しましょう。
Variantはpicoあたりで大丈夫です。

CPUを確認するコマンド(armeabi-v7aであれば32bitARMです)
`adb shell getprop ro.product.cpu.abi`

バージョンを確認するコマンド
`adb shell getprop ro.build.version.release`

# Step2 必要な.apkファイルを揃える
ダウンロードしたファイルを解凍すると、Coreフォルダ内に以下の3つのファイルがあると思います。

元記事を表示

Androidアプリ開発探求記(その4)

# 概要
今回は git の *.ignore* に関して、探求してみたいと思います。

# やること
Android Studio で作成したデフォルトの *.ignore* ファイルに対して、以下のことをしてみようと思います。

– 現在の実験コード[^2]上にフィルタリング対象が存在する項目に対してコメントを追加
– 現在の実験コード上にフィルタリング対象が存在しない項目を削除

※ 自明と思われるものについては例外的に *.ignore* に含めていこうと思います。[^1]

# 背景
*.ignore* に関してはネット上に様々な情報が存在し、[.ignore.io](https://www.toptal.com/developers/gitignore) のような便利な自動生成ツールも存在します。

しかし、状況によっては必要となるグレーゾーンのファイルまでバッサリ切り捨ててしまっているため、弊害もあります。

例えば、[開発プロジェクトでスペルチェック用辞書を共有する方法](https://qiita.com/beyondseeker/items/7e63e6a22d6b

元記事を表示

【Flutterの状態管理】テーマ切替&多言語化 〜provider,BLoC,reduxの3パターンで実現してみる③

いよいよ本シリーズの最終篇になります。
本篇は、アプリのテーマ(Theme)切替、多言語化を通じてFlutterの状態管理のreduxパターンを説明します。

##三、reduxでテーマ切替&多言語化
>flutter_redux: ^0.6.0

Blocと同じのようにreduxにも3つのポイントがある。それは **状態State**、**アクションAction**、**変化させる者Reducer**。

>reduxは封建制とある程度似ている。天子が、土地を諸侯に分与し、諸侯はまたそれぞれ領内の管理を大夫に委託する。各々が責任を取って行動する。reduxにおいて、全ての状態はstoreによって集中管理し、天子AppStateから階層的に分配していく。

Simulator Screen Shot - iPhone 11 Pro - 2020-08-02 at 23.52.34.pngJetpack Composeの動画で驚いたこと、知らなかったこと

Jetpack ComposeのonCommitとonActiveの違いなどがコードを見ていてもよくわからなかったりしたのなど、見ることで色々すっきりしたので、見た感想を書いておきます。
今月末ぐらいに11 weeks of androidのUIの回があるので、また新しい動画などが出てくるかもです。

**Compose Runtime = AndroidやUIに関連するコードはなく、ツリー状で操作するだけでUI以外のものを処理することもできる**
Compose UI Core = 入力管理、計測、描画、レイアウト
Compose UI Foundation = 行や列、デフォルトのインタラクションなど
Compose UI Material = マテリアルデザインに必要なものが入っている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27388/1f5eb78e-9e7a-a6ce

元記事を表示

Ionic AdMobのプラグインをcapacitor-communityのに乗り換えた話【Androidバージョン】

#はじめに
[Ionic AdMobのプラグインをcapacitor-communityのに乗り換えた話【iOSバージョン】](https://qiita.com/kokogento/items/14f8ce0e1a3e2bca421d)
※こちらの記事の続きとなります:point_up_2:

元々は[capacitor-admob](https://github.com/rahadur/capacitor-admob)を使っていたのだが、**このプラグインではどうやら[Capacitor2にアップグレード](https://ionicframework.com/blog/announcing-capacitor-2-0/)した場合、Androidでビルドできない問題が起きた!**(2020/8月現在)

なのでAdMobのプラグインを変更することにした。

iOSバージョンは比較的簡単に乗り換えれたのだが、**Android版はかなりめんどくさかった!!!:sob:**
と言う訳で、この記事はAndroidバージョンで[capacitor-communityのAdMobプラグイン]

元記事を表示

Android入門!

#はじめに
こんにちは、今週いっぱいで学校が終わり、来週から中身のない夏休みを過ごす僕です。
今回は[前回の記事](https://qiita.com/takurinton/items/2f737519dbddb78a000b)で作ったDjangoのAPIに実際にAndroidアプリを使用してHTTP通信をしてみたいと思います。

ちなみにこれあたふたしながらも1日で実装したものなのであまりクオリティは高くないです。(とは言っても16時間くらいかかってますが)

#基本のき!

僕が一番苦労したのはここです。実行構成が全くわからなかったこと、全体像が全く見えなかったこと、フロントエンドはどうやって実装するの?などなど。
まずは全体像が把握できないと何から始めていいのかわかりません。そのため、まずはどのような構成で作られているのか、何ができるのかを理解する必要があります。

また、Androidアプリを開発するにあたって最近はKotlinやReactNativeなどありますが、今回は[オワコンレガシー言語](https://www.youtube.com/watch?v=Xlf7TN3H

元記事を表示

flutter build apkすると`Execution failed for task ‘:app:processReleaseResources’.`と出る

#### 原因
`flutter build apk -t -t lib/main_staging.dart –release`でapkファイルを作成しようとしていた

#### 解消法
`flutter build appbundle -t lib/main_production.dart –release`でaabファイルを作成する

#### 手元で`flutter build apk`した際に出たエラー
“`sh
You are building a fat APK that includes binaries for android-arm,
android-arm64, android-x64.
If you are deploying the app to the Play Store, it’s recommended to use app
bundles or split the APK to reduce the APK size.
To generate an app bundle, run:
flutter build appbun

元記事を表示

OTHERカテゴリの最新記事