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

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

【Android / Kotlin】双方向 DataBinding + Clickイベント / サンプルアプリ実装

# はじめに
[こちら](https://qiita.com/tkmd35/items/ed2ae410e875aba165f7)の記事にて Java で同様のサンプルアプリを作成している。
今回はその Kotlin バージョンである。

## 双方向データバインディングとは(一方向との違い)

– 一方行データバインディング
– ViewModel などの中でデータを変更 → View に反映
– 双方向データバインディング
– ViewModel などの中でデータを変更 → View に反映
– ユーザが View でデータを変更 → ViewModel にデータの変更が反映(通知)

一方向が ViewModel などのロジックファイルから View 側への通知だけであるのに対し、
双方向ではユーザがアプリのフォームなどに値を入力したときなどに、ロジックファイルの方にも値の入力(変更)が通知される。と言うものである。

なお一方向データバインディングについては 言語はJavaですが[こちら](https://qiita.com/tkmd35/items/f5cc228

元記事を表示

Kotlin Multiplatform Mobileで作ったプロジェクトで実機ビルドができない場合の対応

# 概要
プラグイン`Kotlin Multiplatform Mobile`を利用してプロジェクトを作った際、実機ビルドができないとなった時の対応。

– [Kotlin Multiplatform Mobile](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile)

エラー内容としては下記。

“`
${Path}/iosApp.xcodeproj Building for iOS Simulator, but the linked and embedded framework ‘shared.framework’ was built for iOS.
“`

# 原因
AndroidとiOS側で共有されている’shared.framework’がiOS Simulator用にビルドされていて、実機では使えないという話。

FWは以下のような処理を経て生成される。
具体的にはConfigurationを基に各ターゲット向けに生成されたFWをコピーし、`xcode-frameworks`

元記事を表示

【iOS/Android】ネイティブアプリ開発をしたい人への上達マップ【初心者】

## 想定読者:これからネイティブアプリを開発したい人
想定読者に向けて、上達の全体像をお伝えします。
新人や駆け出しエンジニアの方が自分がどのあたりにいるか把握でき
モチベーションアップになれば幸いです。

## まずは入門書の前半くらい
画面のレイアウトを作れるようになる
数字や文字列を表示できるようになる
ボタンを作る
ボタンを押したら、数字が増えたり減ったりするカウンターを作れるようになる
画面遷移ができるようになる
画面遷移の時に値を渡せるようになる

## 入門書の後半くらい
値を保存できるようになる。
値を呼び出せるようになる。
データベースにデータを保存できるようになる。
データベースからデータを読み出せるようになる。

色や動きなどを実装できるようになる

## 結構大変になってくる
通信処理ができるようになる
エラーハンドリングができるようになる

## お、そろそろ実務の駆け出しくらいには行けるか?
綺麗にレイアウトを組めるようになる
(AutoLayoutなど)
デザインガイドラインを理解する
非同期通信ができるようになる

アプリの審査に提出できる
権限周りが

元記事を表示

DIライブラリ「Hilt」のセットアップ&使い方(Kotlin)

## 「Hilt」とは?

Android向けのDIライブラリです。

Daggerの上に構築されており、DaggerコンポーネントやAndroidクラスを自動的に注入するコードを生成するため、Daggerを使うよりボイラープレートが減ります。

## 環境

– OS:macOS Big Sur 11.1
– Android Studio:4.1.2
– Kotlin:1.4.10
– Gradle:6.8
– Gradle plugin:4.1.2
– Hilt:2.31-alpha

## セットアップ

### kaptのセットアップ

Hiltはアノテーションを使ってコードを生成するため、kaptが必要です。
以下の記事を参考にセットアップしてください。
https://qiita.com/uhooi/items/836902cdd322f9accded

### Hiltのインストール

ルート直下の「build.gradle」にプラグインを追加します。

“`diff:/biuld.gradle
buildscript {
repositories {

元記事を表示

【Android / Kotlin】プロジェクトでアノテーション(@)を使えるようにする

# はじめに
Kotlin でデータバインディングを使うために、**kapt** の導入が必要であることを知った。
具体的に言うと自分の場合は
“@get:Bindable ~“と言う記述をしても“BRクラス“に監視変数が生成されずにつまずきました。調べた結果 **kapt** の導入に行き着きました。

# なぜ必要なのか
**kapt** とは kotlin-annotation-processing-tools の略であり、Kotlin プロジェクトでもアノテーション(@)を使い自動コード生成ができるようにするもの。
つまり、Dagger や DataBinding などを利用する際に導入が必要となるようである。

# 環境
– Android Studio: 4.1.1
– Build #AI-201.8743.12.41.6953283, built on November 5, 2020
– Runtime version: 1.8.0_242-release-1644-b3-6915495 x86_64
– VM: OpenJDK 64-Bit Server VM

元記事を表示

DialogFragmentの背景色を透明 or 指定する

## やりたい事

マテリアルデザイン化したDialogFragmentの背景のグレー(スクリム)を透明 or 色を指定したい

スクリムとは何か?はMaterial Designガイドラインで説明されている
https://material.io/components/dialogs#anatomy

## 完成形

## 実装コード

やり方は style.xml or コードの2通りがある。

### style パターン

“`xml:style.xml

<

元記事を表示

Gradleプラグインを適用するスマートな書き方

`app/build.gradle`

“`groovy:before
apply plugin: ‘com.android.application’
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’
“`

“`groovy:after
plugins {
id ‘com.android.application’
id ‘kotlin-android’
id ‘kotlin-android-extensions’
}
“`

## 参考リンク

– [Using Gradle Plugins](https://docs.gradle.org/current/userguide/plugins.html)

元記事を表示

Googleマップのナビ音声を茜ちゃんに変える

## デモ

アカネチャンカワイイヤッター

そんな高度なことはしてないですが、
ブログとか持ってなくて、他に書く場所もないのでここに書かせてください。

## ひつようなもの

* Android端末
* Andorid Google Map アプリ
* Andoroid ナビボイスチェンジャー アプリ
* https://play.google.com/store/apps/details?id=jp.nekoteki.android.navivoicechanger&hl=ja&gl=US
* PC (Windows)
* PC ZIP圧縮ソフト(WinRARなど)
* Android PC データ転送用ケーブル
* **【重要】茜ちゃんのめっちゃかわいい音声ファイル一式**
* (ナビボイスチェンジャーでDLします)

OPPO Reno 10X Zoom (Android 10)
Google Map Ver.10.58.2 で動作確認済です
iPhoneとかでも同じ方法でできると思いますが、動作未確認です

#

元記事を表示

【Android / Java】双方向 DataBinding + Clickイベント / サンプルアプリ実装

# はじめに
実務案件で DataBinding を利用している。
なかなか難しい。そこで双方向 DataBinding を用いたサンプルアプリを作成しながら DataBinding について学んだ。

※ 今回は Java ですが、 ~~Kotlin でも同様のものを作成してみようと思っております。その時は改めて投稿します~~。
Kotlin バージョンも作成して記事にしましたのでご覧いただければ幸いです!!↓↓
[【Android / Kotlin】双方向 DataBinding + Clickイベント / サンプルアプリ実装](https://qiita.com/tkmd35/items/516283b4e43fd5ff7a7c)

## 双方向データバインディングとは(一方向との違い)

– 一方行データバインディング
– ViewModel などの中でデータを変更 → View に反映
– 双方向データバインディング
– ViewModel などの中でデータを変更 → View に反映
– ユーザが View でデータを変更 → ViewModel にデータの変

元記事を表示

【Android】ソフトウェアキーボードで悩むときにみる記事【EditText】

# EditTextがソフトウェアキーボードで隠れるのを防ぎたい

これを使えば一発で解決するかもしれません!

android:windowSoftInputMode=”adjustPan
android:windowSoftInputMode=”adjustResize|stateAlwaysHidden”

公式です
[入力方法の表示の処理  |  Android デベロッパー  |  Android Developers](https://developer.android.com/training/keyboard-input/visibility?hl=ja)

いい感じの記事です
[EditTextに入力中の文字がソフトキーボードで隠れるのを防ぎたい | by Keisuke Kawajiri | URL Memo | Medium](https://medium.com/url-memo/edittext-hidden-by-softkeybord-5406484db3ec)

オーバーフローでも同じようなことが書かれてます!
[resize – android:w

元記事を表示

【Android】加速度センサーの情報を表示する方法

#プログラミング勉強日記
2021年1月22日
加速度センサーの制度や種類、バージョンなどいろいろな情報を表示する方法を示す。

#Sensorクラス(センサーAPI)
 Androidでは、センサーによって変換された電気信号を取得するためのセンサーAPIが提供されている。そのうちのSensorでは、各センサーに関する情報を管理する。Sensorクラスのメソッドを使って、各センサーに関する情報を取り出すことができる。

“`java:Sensorクラスのメソッド
// センサーが検出できる最大値を取得するメソッド
getMaximumRange()
// センサーの名前を取得するメソッド
getName()
// センサーからの電気信号をmAで取得するメソッド
getPower()
// センサーの精度を取得するメソッド
getResolution()
// センサーの種類を取得するメソッド
getType()
// センサーのベンダー名を取得するメソッド
getVendor()
// センサーのバージョンを取得するメソッド
getVersion()
“`

#サン

元記事を表示

HitTestを実施した際に、Containerが反応しない

# 問題

テスト環境でHitTestにてContainerを検出することを確認後、本番環境に実装を行った。
が、なぜかContainerがHitTestにて検出されない問題が発生した。

# 解決方法

Containerのcolorに透明な色を適用することで、HitTestにて検出されるようになった。

# 原因

Flutter.devのContainerのページにも記載があったが、colorに何もしていない場合、ContainerはHitTestにて検出されなくなってしまうみたい。

> By default, containers return false for all hit tests. If the color property is specified, the hit testing is handled by ColoredBox, which always returns true. If the decoration or foregroundDecoration properties are specified, hit testing is handle

元記事を表示

Androidのログ出力ライブラリ”Timber”

どうも”おもり”です。

今年はOSS活動に精を出していこうと考えています。
Android開発のOSS活動。力不足の自分でもやっていけそうなissueを探している中、
以下のようなissueを見つけた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276053/740e7726-d41d-ab53-11ff-20d8c9a3246a.png)

[https://github.com/uhooi/UhooiPicBook-Android](https://github.com/uhooi/UhooiPicBook-Android)より

“good first issue”のタグが付いているので、いざやってみようと思ったのですが、
Timberとは何ぞや状態だったので、色々ネットを調べあさりました。
調べた情報をまとめて、Timberの良いところをサクッと学べるような記事を書きます。

# Timberとは?

Timberとは、Androidのログ出力ライブラリです。

And

元記事を表示

Android11から地味に変わったパーミッション

# パーミッション is 何
Androidアプリはアクセスが制限されたサンドボックス内で実行されるため、アプリの外部にあるリソースや情報を使用する必要がある場合には、権限をリクエストする必要があります。この権限がパーミッションです。

Android5.1(APIレベル22)以前は、アプリのインストールと共に必要なパーミッションがアプリに付与されるため、特に権限のリクエストをする必要がありませんでした。

しかし、Android6.0(APIレベル23)以降からはガラッと変わり、パーミッションが必要なタイミングでユーザにリクエストをしなければいけなくなりました。例えば、現在地を取得する時に、端末に「位置情報の利用を許可しますか?」みたいな画面が出てくるようになりました。

# Android11からまた変わったパーミッション
Android11(APIレベル30)から、アプリが

– 位置情報
– カメラ
– マイク

に関するパーミッションをリクエストするたびに、「今回のみ」というオプションが表示されるようになりました。
ちなみに、iOSでは実はiOS13(正式公開日が2019/9

元記事を表示

KotlinでMapとListをfor文で操作しよう!

### Key:Valueが1:1のMapをListにする

“`Kotlin:
// 1:1
val map = mapOf(“key1” to “val1”, “key2” to “val2”, “key3” to “val3”)
// mapのすべてのvalueが格納される
val valueList = ArrayList(map.values)
var list: MutableList
list = ArrayList()
list.addAll(valueList)
“`
### 1:1のMapを条件分岐でListに格納する

“`Kotlin:
val map = mapOf(“key1” to “val1”, “key2” to “val2”, “key3” to “val3”)
val valueList = ArrayList(map.values)

// key1のvalueがarray変数に格納される(“val1”)
var araay = map.get(“key1”).toString(

元記事を表示

【Android】加速度センサーの値を表示する方法

#プログラミング勉強日記
2021年1月21日
Androidに搭載されている加速度センサーを使ってx軸、y軸、z軸の各軸にかかる加速度を測定する方法をまとめる。

#加速度センサーについて
 加速度センサーは以下のようにx軸、y軸、z軸のそれぞれに対して単位Gの値として情報を素得できる。垂直で縦に持つ場合は、以下のようになり-y方向に重力加速度がかかるので、加速度センサーの値は(x, y, z)=(0, -1, 0)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/1d9727b1-c6d6-0b13-fe68-e6abf6677ccb.png)
[](https://blog.smartdrive.co.jp/b548607cc5ad/)
出展: iOSイベント処理ガイド

#加速度センサーの値を表示するプログラム

“`java:MainActivity.java
package sample;

import android.app.Activity;
impo

元記事を表示

Google Play App Signing に対応させる

# 概要

自分の個人アプリを Google Play App Signing に対応させた時の作業に基づき、署名移行時の具体的な作業内容について書きます。誤った内容があったらコメントいただければと思います。

詳細: https://developer.android.com/studio/publish/app-signing?hl=ja

# 基礎知識

## Google Play App Signing とは

Androidアプリに対して付与する署名の新しい管理方式。アプリ署名とアップロード署名の2段階で署名され、安全な鍵管理が行えるようになります。
**アプリ署名**:Google Play側で管理され、登録時に勝手に署名されます。こちらから触れず、基本的には変わりません。
**アップロード署名**: ユーザ側で管理し、Google Playにアプリをアップロードする時にこれで署名されている必要があります。流出時などに申請で変更することができます。

## 対応期限

Google Playにアプリ登録するためには必ず署名が必要になり、現状では従来の署名方式と、Goo

元記事を表示

Fragmentから他のフラグメントへの画面遷移

## FragmentからFragmentへの遷移
画面遷移の動きは、以下のようになります。

![画面収録-2021-01-21-10.13.11.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/953777/68363404-41b2-3c9b-aa1d-87ae09c053d5.gif)

動きとしては、
・MainActivityにFragment01(WelcomeFragment)を表示
・Fragment01からFragment02(MainFragment)へ遷移
・Fragment02からFragment03(SubFragment)へ遷移

## サンプルコード

“`kotlin:WelcomeFragment
class WelcomeFragment: Fragment(R.layout.welcome_fragment) {

private var _binding: WelcomeFragmentBinding? = null //
privat

元記事を表示

3 ヶ月掛けて 1 人で Android アプリをリプレイスした話

最近、現場で 3 ヶ月掛けてアプリのリプレイスを 1 人で行いました。
下記はプルリク時の修正ファイル数の画像です。

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93963/ddc2ae75-b208-e5a0-74cc-23142358358c.jpeg)

どのようなきっかけでリプレイスを行い、問題点は何だったか、具体的に何をやって結果どうなったかなどをまとめます。

# ソースコード構成

コア機能を実装したモジュールがあり、各社ごとにアプリを作成し、各アプリがそのモジュールを参照する構成となっております。
リプレイス対象としてはモジュールと、ある会社向けにリリースしていたアプリの 2 つになります。

# なぜリプレイスを行ったのか

きっかけはとある会社から直近で大幅な機能追加をしてほしいと要望があったことです。
ところが現行アプリは機能追加を想定した作りになっておらず、このまま追加するのが困難だと予想されました。
また、今後もさらに機能追加を行っていくとのことで、このままでは間違

元記事を表示

AndroidからAWS Cognitoのユーザプールをさっくり使う

![スクリーンショット 2021-01-21 8.25.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/026507a3-3977-e0d2-c867-46e2c94ed8b3.png)

サインアップやサインイン、パスワード再発行など、ユーザ管理がないアプリケーションを見かけない日はありません
とはいえ自前でバックエンドのシステムを作るのも大変…
でもAmplifyはちょっとリッチすぎる気がする…

そんな私のための備忘録です

下記のことができます

– メールアドレス、パスワードによるサインアップ、ログアウト
– メールアドレス認証
– パスワード再発行

メールアドレスやパスワードはガッツリ個人情報です
その辺りの管理をAWSにお願いできるのはかなり気楽ですよねー

# 前準備
## SES (Simple Email Service)に配信用のメールアドレスを登録する
![0_SESにメールアドレスを登録し、送られたURLをクリックしてVerifyする.PNG](

元記事を表示

OTHERカテゴリの最新記事