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

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

こんなソースコードはイヤだ-汎用性のある関数以外に使いやすい関数を

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

# 汎用性のある関数以外に使いやすい関数を

“`sample.kt
import kotlin.math.*
//エレベータ
class Elevator {
var floor = 1

fun move(diff: Int) {
//1階から10階
floor = min(max(floor + diff, 1), 10)
}
}
“`

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

元記事を表示

FlutterアプリでonResume的なタイミングの処理をする/複数ウィジェットで監視編

Flutterアプリで、Androidでいう`onResume`のタイミング(アプリがホームボタンなどでバックグラウンドに行ってまた前面に戻ったとき)で処理をしたいと思い、以下の記事を書きました。

FlutterアプリでonResume的なタイミングの処理をする
https://qiita.com/kasa_le/items/1fdbe07112ab4aed250a

しかし、複数のウィジェットで同時多発的に監視したいときに、この方法では問題がありました。
関数名を見て貰えれば分かりますが、`set***`なので、**最後にセットしたコールバックしか呼ばれません。**

ということで、対処法を調べたのでそのまとめです。

# 環境など

|ツールなど|バージョンなど|
|:–|:–|
| MacBook Air Early2015|macOS Mojave 10.14.6|
|Android Studio |3.6.1|
|Java |1.8.0_131|
|Flutter|1.12.13+hotfix.9|
|Dart |2.7.2|
|Xcode |11.3.1|

# 解決

元記事を表示

Dagger-Hilt で AppComponent にアクセスする方法

# 背景

今まで Kotlin + Dagger2 で AppComponent にアクセスするコードがあった。

“`kotlin
@Component(modules=[ … ])
interface AppComponent {
val myModule: MyModule

// …
}
“`

## dagger2 拡張関数

“`kotlin
val Activity.appComponent: AppComponent
get() = (applicationContext as MainApplication).appComponent

fun Activity.dagger2(block: (AppComponent) -> T) = lazy {
block(appComponent)
}
“`

この dagger2 拡張関数があれば Dagger-Android を使わなくても手軽にインスタンスにアクセスできた。

“`kotlin
class MainActivity : Activit

元記事を表示

昔ながらのプログラマが躓いた Android アプリ開発のポイント

# これって何の話?

私は元々 C/C++ や Java で PC のデスクトップまたはコマンドラインで動作するアプリケーションを主に書いていたのですが、いまは Android アプリを書くことが多いです。
昔ながらのデスクトップアプリやコマンドラインアプリの開発から入ったプログラマから見ると、Android アプリの開発には大きなカルチャーギャップがあります。それが原因で Android 開発が思うように行かなかったり挫折しちゃってる人もいるんじゃないかなと思ったりします。
そこで、そんな昔ながらのプログラマのために、押さえておきたい Android 開発のポイントを書いてみたいと思います。

# エントリポイントはどこだ?

昔ながらのプログラマにとってコンピュータプログラムは「始まりと終わりが明確にあるもの」です。
たとえば以下のような C のプログラムを見てみましょう。

“`c
#include

int main(int argc, char* argv[]){
printf(“Hello, world!”);
return 0;
}

元記事を表示

Tinc VPNで作る簡易的なVirtual Private Network 5/5 (構築編(4) 子ノードの構築 – Android編)

# 概要
『Tinc VPNで作る簡易的なVirtual Private Network』の分割記事
5/5 構築編(4) 子ノードの構築 Android編

## 各記事
* [Tinc VPNで作る簡易的なVirtual Private Network 1/5 (概要編)](https://qiita.com/libraplanet/items/c94e91ae9360a4893e73)
* [Tinc VPNで作る簡易的なVirtual Private Network 2/5 (構築編(1) ルートノードの構築 – Linux編)](https://qiita.com/libraplanet/items/98b392f52785af4c04fa)
* [Tinc VPNで作る簡易的なVirtual Private Network 3/5 (構築編(2) 子ノードの構築 – Windows編)](https://qiita.com/libraplanet/items/1c0e1678844154c8de45)
* [Tinc VPNで作る簡易的なVirtual Private

元記事を表示

Android 設定 – 通知 – バッテリーセーバー が ON になっていると通知でバイブしない

設定 – 通知 – バッテリーセーバー が ON になっていると通知でバイブしない

* × 電話の着信 (留守電になる。)
* × LINE通知

(Android 5 から搭載された様子)

以下ページが詳しい
https://techblog.yahoo.co.jp/android/battery-saver/

元記事を表示

GroupieのVIewHolderを使ってみた

自分のブログから引っ張ってきました.

GroupieのViewHolderを試してみました.
[https://github.com/lisawray/groupie/releases:embed:cite]

GroupieはAndroidのrecycler-viewを楽に使えるようにするライブラリですが, groupie-databindingがdeprecatedされました.

今回は推奨されてる(ぽい)groupie-viewbindingを使ってみたいと思います.

#### 1. Groupieを追加
基本的にはgithubの[Gradle Setup](https://github.com/lisawray/groupie#gradle-setup)を見れば大丈夫で, モジュールレベルのbuild.gradleに以下を追加すればOKです.

“`
android {
….
androidExtensions {
ex

元記事を表示

1タップでライトをON/OFFする

# はじめに

所謂Androidの懐中電灯化なんですが、アプリにライトをON/OFFするスイッチをつければできますよね。
でもそれだと、ライトを点けるために

1. アプリを起動する
2. ONボタンをタップする

と、2アクション必要になってしまいます。
これを1アクションにしたかった。というわけです。

# 開発環境

Android Studio 3.6.3
Windows 10 Pro 1909
ASUS X00RD
Android 8.0.0

# プログラム

点けたライトを消すために、画面上にもON/OFFスイッチを付けてあります。

“`kotlin
package com.websarva.sings.android.lightswitch
import android.content.Context
import android.hardware.camera2.CameraAccessException
import android.hardware.camera2.CameraManager
import androidx.appcompat.app.App

元記事を表示

adb よく使うコマンド一覧

**以下のコマンドを実行するには、USBデバッグとフィンガープリントの許可をあらかじめ済ませておく必要がある。**

##接続中のデバイスを確認する
“`bash
$ adb devices
“`

##アプリのパッケージ名一覧を取得
“`bash
$ adb shell pm list package
“`

##アプリのパッケージ詳細情報を取得
“`bash

$ adb shell pm dump <パッケージ名>
“`

## TCPモードで起動
USBを使わずTCP/IPでアクセスすることが出来る。
設定できるポートは5555〜5585までだと言われている。

“`bash
$ adb tcpip 5555
“`
切断する場合

“`bash
$ adb disconnect
“`

## シェルを使う
“`bash
$ adb shell
“`
コマンドの一覧は **adb shell help** で表示する。
因みにDCIMやDownloadフォルダがあるディレクトリは **/mnt/sdcard**

## アプリインストール
“`bash

元記事を表示

Androidアプリをコマンドラインで起動、終了する

## Activityを起動する
### Syntax
am start -a android.intent.action.MAIN -n ***PackageName***/.***ActivityName***

e.g.
`am start -a android.intent.action.MAIN -n com.xxx.xxxApp/.MainActivity`

## Activityを終了する
### Syntax
am force-stop ***PackageName***

e.g.
`am force-stop com.xxx.xxxApp`

元記事を表示

Androidアプリを作っていてエラーなどで詰まった所とその解決法

https://www.udemy.com/share/101xtQB0ASdFdaRHg=/
Udemyで上記のコースをやっていてエラーなどで詰まった所とその解決法を記録。

■AndroidStudioの最新バージョンと動画で使用しているバージョンが違って動画通りに進まなくて詰まった。

→このページから動画で使用されているバージョンをダウンロードして解決。
https://developer.android.com/studio/archive.html#android-studio-2-3-3

※他に詰まった所が発生したら追記していきます。

元記事を表示

[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.

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事