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

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

[Android Studio] Kotlin Android live template

Android Studio 4.0 の新機能のうち Live Template が少し気になっていたので調べてみた。
[Kotlin Android live template](https://developer.android.com/studio/releases/#4-0-0-live-templates)
調べ始めたら、そんなに調べることもないことがわかった…。

Live Template を調べてみると、結構昔からある機能じゃない?新機能ってどういうことだ?と思ったら、4.0で変わったのは「Kotlin関連のクラスのlive templateを追加したよ」くらいの話らしい。

リリースノートで説明されているとおり、登録されているLive Templateは、メニューから **File > Settings..** で Settings画面を開き、 **Editor > Live Templates** と辿れば確認できる。
Android Studio 3.6 から増えたグループは

– AndroidCommentsKotlin
– AndroidKotlin
– A

元記事を表示

Application Development Guide for Android and iOS

The complete guide on how to create a mobile application, from defining the project goal and technology stack to testing and deployment. Check it out!

元記事を表示

How to attract more customers for your mobile app

How to promote a smartphone app, attract users, and earn an income? Check out the best mobile application marketing tools and strategies.

元記事を表示

Top 15 Apps Like Instagram for IOS and Android you need to know about

Though Instagram continues to be the leading photo-sharing app, it has strong competitors. Check out 15 Instagram-like apps to see their success formula.

元記事を表示

Daggerを使ってDI

# はじめに
新卒で入社してから2ヶ月が立ちました。Androidに少しはなれてきたかな…
ということで今回は、Daggerを使ってDIしていきたいと思います!
[Dagger Hilt](https://aakira.app/blog/2020/05/dagger-hilt/)が、最近話題になってますね。
今後、Daggerにしろ、KoinにしろDIコンテナを使うことは必須だと思うので復習していきます!

※[前回](https://qiita.com/karass/items/a62d27a16b185abf47f0)の続きです

# Gradle
gradleにDaggerを追加します。

“`build.gradle
// Dagger
def daggerVersion = ‘2.26’
implementation “com.google.dagger:dagger:$daggerVersion”
kapt “com.google.dagger:dagger-compiler:$daggerVersion”
“`
# 実装
Dagge

元記事を表示

マテリアルデザインのフローティングボタンを置く

ただフローティングボタンを設置するだけの記事です.

そもそもマテリアルデザインって何って感じだったんですが, Android開発しやすいようにGoogleから出てる公式なライブラリで, これ使えばアニメーションや画面を作るのが楽になるよっていうやつです.

Android Developerの公式よりはgithubのほうが情報をみつけやすかったです.
https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md

#### 1. マテリアルデザインのライブラリを追加

まずはマテリアルデザインのライブラリをモジュールのbuild.gradleに追加します.

“`build.gradle
dependencies {
// …
implementation ‘com.google.android.material:material:
// …
}
“`

バージョンはgithubの

元記事を表示

BottomNavigationViewの個々のアイコンサイズを変える

# 背景
一括でアイコンサイズを整える場合は、XML上にてBottomNavigationに対して
`app:itemIconSize=”XXdp”`
を指定すれば問題ないが、アイコンごとにサイズがばらばらだったりして個々にサイズを指定したい場合にどうするか

# 環境
“`gradle
implementation ‘com.google.android.material:material:1.2.0-alpha03’
“`

# 実装
“`kotlin
private fun fixAllIconSize() {
// ※1
val menuView = navView.getChildAt(0) as BottomNavigationMenuView
// ※2
0.until(menuView.childCount).forEach { index ->
// ※3
val icon = menuView.getChildAt(index).findViewById(com.googl

元記事を表示

Unity IAPは公式APIドキュメントがないので課金処理は自前ネイティブ実装がいいかも

# まとめ
– https://docs.unity3d.com/Manual/UnityIAP.html
– マニュアルはある。しかしAPIについての最新の説明は存在しないので自己責任でやるしかない。
– 自分でネイティブ連携するのが最強

# 現状
– https://forum.unity.com/threads/where-has-unity-iap-scripting-reference-gone.660454/
– Where Has Unity Iap Scripting Reference Gone?(Unity IAPのスクリプトリファレンスどこにやった?)

-https://forum.unity.com/threads/where-has-unity-iap-scripting-reference-gone.660454/#post-4543948

> Understood on the concern. As we are moving more towards Package Manager, we’ve had to adjust our doc

元記事を表示

WebViewでIntent://~をハンドリング

WebViewで外部サイトを表示するようなアプリを作成していると、ページ上の「アプリで見る」みたいなボタンを押すとintent://~というリンクが投げられてくることがある事に気づくと思います。
Chromeアプリなどでそこをタッチするとそのサイトのアプリ版がインストールされていればアプリが開き、インストールされていなければPlay Storeアプリが開いてそのアプリのページに飛ばされます。
これを自作WebViewで実現しようとしたらハマりにハマったので備忘録。

# 解決法
まずは結論から。
WebViewClientCompatクラスのshouldOverrideUrlLoadingメソッドの中で [Intent.URI_INTENT_SCHEME](https://developer.android.com/reference/android/content/Intent#URI_INTENT_SCHEME)を使用してパースしてやる。

“`kotlin
val webViewClient = object : WebViewClientCompat() {
overrid

元記事を表示

android の alfred を 使った面会システム (ポケットWiFiで距離延長)

##コロナのため 患者さんを直接 家族に会わすことはできません。 そこで 使用しなくなった古いアンドロイドタブレットのカメラを利用し、家族はノートPCの画面を使って面会します。 目玉(カメラ)さえついていればスマホでもOKです。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211097/1038d9be-dc6d-7cec-3741-a35f1c52172f.png)

|wifi電波状況がよければ 下図のポケットwifiは省略できます|
|:—|
|古物ばかり使ってるので安価です。なおandroidアプリのalfredは無料版で十分ですし、あとノートPCに無料のgoogle クロミウムをいれたら 準備完了です|
|二人 (タブレットとノートPC)は 銀河いやちがったインターネットの上で出会います、彦星と織姫のように|

![alfred.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211097/15

元記事を表示

こんなソースコードはイヤだ-分岐はギリギリまで待ってみよう

プログラムのソースコードのより良い書き方をまとめていこうと思います。

# 分岐はギリギリまで待ってみよう

“`sample.kt
val numbers = arrayOf(1, 2, 3)
val text = if (isComma) numbers.joinToString(“,”) else numbers.joinToString(“/”)
“`

[どのようにリファクタリングできるのか](https://www.sentohsharyoga.com/ja/bad_source_code/entry/use_branch_small_area)

元記事を表示

Android 電卓のデザインを作成

#はじめに
こんな感じの電卓みたいなデザインを作ります。
スクリーンショット 2020-06-03 20.59.37.jpg

**Android初心者で、XMLがそもそもわからない人向け!**

#電卓のデザインを作成
[Androidのレイアウト?初心者向けざっくり理解](https://qiita.com/mii-chang/items/ee965c1e8826d4e59414)
こちらをまずは読むと、より理解が深まるかと。

**全体的なやり方としては、`LinearLayout`の中にさらに`LinearLayout`を入れ込む感じ。**

##まずは横幅が均等なボタンを4つ

スクリーンショット 2020-06-03 13.30.52.jpgThreadを使って一定時間毎にイベントを発生

#はじめに
Threadを使って一定時間毎にイベントを発生させるアプリを作ります。
独自イベントは、別途独自イベントを紹介するページを参考にして下さい。

#アプリの仕様
ボタンを押すとカウンターが自動的にカウントアップするアプリを作ります。
100ms 1/10秒ごとに1カウントアップします。
開始ボタンでカウントアップ開始、停止ボタンがカウントアップを停止します。
※中断は未使用

#準備
スレッドを使うのですがそのまま使うと画面View(UI)にアクセス出来ないのでcoroutines(コルーチン)を使用します。コルーチンを使うにはGradleスクリプトのbuild.gradle(app)に下記を追加する必要があります。

##build.gradle(app)

“`build.gradle(app)
dependencies {
省略
implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1’
}
“`

##strings.xml

“`strings.xml

元記事を表示

独自のリスナーイベントを作成

#はじめに
Androidのソフト開発ではイベントを受け取るためにリスナーを使います。
ボタンをクリックするとonClickイベントが発生するのでそれをリスナーで受け取って処理できるので無駄がありません。
では自分で作ったクラスに独自のイベントを作成するにはどのようにすれば良いのでしょうか?
ネットや書籍を調べても書かれていません。他の人はどのようにして設計しているのか不思議です。

説明はしますが、何の資料も無いため手探りで適当に作っていたら偶然出来ただけなので詳細な説明は出来ません。むしろ何故動いているのか知りたいぐらいです。

#クラスの設計
独自のイベントを使うクラスを設計してみます。
クラス**Calc**はメソッド**execute**の引数v1とv2の商を計算するクラスとします。
計算が出来れば**onSuccess()**イベントが発生し、右式に**0**を渡されると**onDivZero()**イベントを発生させます。

##レイアウト設計

“`activity_main.xml

元記事を表示

[作業メモ]Firebase Crashlyticsの導入

## 事前準備
– Android Studio

## Firebase SDKの導入
https://firebase.google.com/docs/android/setup

## Crashlyticsの導入
https://firebase.google.com/docs/crashlytics/get-started?platform=android#kotlin+ktx

## 次のステップ

– [強制クラッシュで検証](https://firebase.google.com/docs/crashlytics/test-implementation?platform=android)

– [カスタマイズ](https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=android)

## ハマりポイント

公式の導入手順ドキュメントは多言語対応していますけど、日本語の場合にAndroid版の導入手順はまだないらしいです。なので言語を英語に切り替えてから、Andro

元記事を表示

Github Actionsを用いてFirebase Test Lab上で実機テストをする方法

# 概要
本記事ではGithub Actionsを使用して、Firebase Test Labで実機テストを行う方法を紹介します。
具体的には、プルリクエストをトリガーにGithub Actionsのworkflowが起動し、Firebase Test Lab上でRoboテストを、自動で走らせる方法を紹介します。

## きっかけ
これを試したきっかけは、仕事先でライブラリのアップデートをした際に、クラッシュ等がないかの確認のため、実機をポチポチするという作業がとても面倒に感じられ、Firebase Test Labで自動化できるのではないかと考えたことです。
さらにその調査がプルリクをトリガーに走ってくれたら素敵だと思いGithub Actionsを用いました。

# はじめに
Androidの実機を用いたテストはとても骨が折れるといわれています。
その理由の一つとして、端末の多さがあげられます。(参考: [Android端末一覧(Wikipedia)](https://ja.wikipedia.org/wiki/Android%E7%AB%AF%E6%9C%AB%E4%B8%80%

元記事を表示

Recipe: LiveData.observe with NonNull

### Problem

“`kotlin
viewModel.order.observe(viewLifecycleOwner, Observe {
it?.let { applyCurrentOrder(it) }
})
“`
toooooo many redundant code for just observe NonNull object with `LiveData`.

# Ingredients
1. `lifecycle-livedata-ktx` version 2.1.0 or higher
2. Kotlin

# Metod
#### First.
Add a dependency `lifecycle-livedata-ktx` in `app/build.gradle`.

“`gradle
dependencies {
def lifecycle_version = “2.1.0” // or higher

implementation “androidx.l

元記事を表示

【Amazon Alexa】ウチのスマートホーム環境を晒す。【全力で横着しよう!】

#全力で横着しよう!

– 忙しい時ほどリモコンが見つからない
– 寝ているときに照明を消したい
– 真夏、真冬に家に入った瞬間が不快
– ジム帰りにお風呂が沸いていて欲しい
– 朝急いでいて自動掃除機動かし忘れた
– smart home化に興味はあるが、難しそう
– ~~灯りがついていない家がさみしい~~

そんなことを考えたことがある人にオススメする「スマートホーム化」の記事です

知り合いから「音声で家電操作ってどうやってるの?」と聞かれることがあるのでご紹介。

#環境の紹介

・androidのスマホ(iOSで対応のアプリがあるか未確認です)
・tp-linkのwi-fi無線LANルーター
・amazon prime会員である
・[Echo Dot](https://www.amazon.co.jp/dp/B07PFFMQ64/ref=fs_ods_fs_aucc_cru)(べつにdotでなくともEchoでもEcho plusでもOK)
・[TECKIN スマートプラグ](https://www.amazon.co.jp/%E3%82%B9%E3%83%9E%E3%83%

元記事を表示

Spek FrameworkをアップデートしたらTestができなくなった

Spek Frameworkをアップデートしたらエラーが出て、困ったので、その対処を残します。

# エラー内容(Spek Framework 2.0.11-IJ2019.2)

バージョンを上げたら以下のようなエラーがでた(以前のバーションだと出なかった)

“`
io/mockk/proxy/MockKAgentFactory
java.lang.NoClassDefFoundError: io/mockk/proxy/MockKAgentFactory

java.lang.NoClassDefFoundError: Could not initialize class io.mockk.impl.JvmMockKGateway

“`

# 対処
根本的な問題の解決にはなっていないが、一時的な対処として以前のバージョンに戻してみた。

## Step1
事前に、Android StudioからSpek FrameworkをUninstallしてください。
まず、[Spek Framework](https://plugins.jetbrains.com/plu

元記事を表示

電子機器類がオンライン授業に対応しているか否か分類出来るかメモ

最近オンライン授業に使われているサービスを、少し書き並べてみます。

+ HTML5ブラウザを前提としたWebサービス
+ WebブラウザベースのLMS (moodleとか)
+ Web会議システム (zoom, WebExとか)
+ G Suite, MS Office365 のWebブラウザベースのもの
+ G Suite for Education Apps
+ Google Classroom
+ Hangouts Meet
+ Youtube ?
+ Microsoft Office365 Apps
+ Word, Excel, Powerpoint
+ Teams ほか
+ (サービスに紐づいた様々な)アプリ
+ zoom
+ Cisco WebEx
+ ほか

で、ご家庭でお持ちのハードウェアは何種類かに分かれ、このサービスが必ずしも満足に動作するとは限らないわけです。ちょっと分類してみます。

| PC系 | PC(Windows) | PC(macOS) | PC(Chr

元記事を表示

OTHERカテゴリの最新記事