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

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

FlutterでFirebaseエミュレーターへの接続調査、バージョン問題が解決できないよ

最初の記事、メモ書きです。 あまりキレイに書くつもりが無いので、あしからず
できねーよっていう記録なので読まないほうがいいかもです。(じゃー書くな、は無しで)

## 何を開発してるか (読み飛ばし推奨)

## 楽器練習アプリ
何気なく、楽器練習アプリを開発したいとツイートしたら欲しいという要望がたくさんたくさん(4件)寄せられたので、Flutterを調べつつ開発に挑戦中です。
楽だけど覚えることも多いですね。 言わなきゃよかったw
なので、仕事じゃなくて趣味開発です。

エンジニアって、大体こんなの欲しいと思って着手しても挫折するよね (あるあるー)
でも応援してくれる人がいるので頑張ってます。
というか、それが分かってたのでいろんな人を巻き込んで、やらざるを得ないに追い込んでます。
これに関しては、気が向いたら記事を別に書くかも、書かないかも

### 現状の学習ステータス
Flutterのレイアウトはなんとなく作れるようになったので、実装やデータ保存周りを調べてます。
学習の手順は、人それぞれだと思いますが、私の場合は、Android Projectを作りまくります。
壊れ

元記事を表示

DroidKaigi 2020 Liteで知らなかったことメモ

ちょっと見てみて知らなかったことをメモしておきます!Lite版でしたが楽しかったです!
まだ今日のナイトセッションと明日のコードラボがあるようなので楽しみにしています!! :eyes:

# MDCの内部実装から学ぶ 表現力の高いViewの作り方 / HiroYUKI Seto

## MaterialShapeDrawable
backgroundとして使うDrawable
いろんなカスタマイズができる
**Shadowのカスタマイズもできるので複雑な形のShadowが表示できる。ただAndroidのShadowより少し濃いShadowになる。**

MaterialShapeDrawableがMaterialShapeDrawableStateを持っていて、その中でShapeAppearanceModelが保持される。
ShapeAppearanceModelに形状や辺や角などの設定がある

## Drawable
**intrinsicWidth / Height**
BitmapD

元記事を表示

Androidアプリを中国市場にリリース

##中国のアプリ市場

現在GooglePlayは中国には進出しておらず、中国で販売しているスマートフォンはすべてGooglePlayが載っていない状態です。その代わりに各メーカーが独自のアプリダウンロード用のストアを立ち上げていました。

アプリ開発者がGooglePlayにリリースしているAndroidアプリは、スマホ人口が10億人弱と言われている中国に展開できない状況です。
smartphone_earphone_man_wireless.pngsmartphone_earphone_woman_wireless.pngLogin Activity 【Android Studioのテンプレートプロジェクト紹介】

#はじめに
Android開発の勉強を兼ねて記事を執筆しておりますが,素人に毛が生えた程度の知識で解説している為,説明間違いが含まれている可能性があります。
お気づきの点がありましたら,是非コメントお願いいたします。
また,テンプレートのアップデートにより,機能やコードが記事執筆時点と異なる場合があります。

#本記事の目的
Androidプロジェクトのテンプレートの一つである「Login Activity」について,機能や構成を説明します。

#テンプレートの概要([公式](https://developer.android.com/studio/projects/templates?hl=ja)より引用)

>このテンプレートでは、標準的なログイン画面を作成します。ユーザー インターフェースには、メールアドレスとパスワードの各フィールドとログインボタンがあります。一般に、アプリ モジュール テンプレートではなくアクティビティ テンプレートとして使用されます。

>このテンプレートの内容は次のとおりです。

>- ユーザー インターフェースのメインスレッドとは別にネットワーク操作

元記事を表示

AndroidのButtonのTextのスタイルを設定する方法

# 概要

AndroidのButton内のTextのスタイルを設定する方法をまとめる。

# 注意点

AndroidStudioではimport文の追加が自動で行われなかった。
以下のimport文を自分で以下を追記する必要がある。

“`
import android.graphics.Typeface;
“`

# スタイルの設定方法

“`
import android.graphics.Typeface;

Button btn = (Button) findViewById(R.id.button);

// テキストをNormalに変更
btn.setTypeface(null, Typeface.DEFAULT);

// テキストをBoldに変更
btn.setTypeface(null, Typeface.DEFAULT_BOLD);

// テキストをBold + Italicに変更
btn.setTypeface(null, Typeface.DEFAULT_BOLD_ITALIC);

// テキストをItalicに変更
btn.setTypeface

元記事を表示

Androidのリセマラを防ぐ

# 要約

MediaDrmを使ってリセマラを防ぎます

# 概要

Androidでリセマラ(リセットマラソン)を防ぐために、一意のIDを取得します。
ここでいうリセマラとは、アプリをアンインストール/インストールを繰り返して、初回限定の利益を何度も受ける行為を指します。

## 公式のドキュメント
リセマラのように何度もアプリを再インストールしてIDを作成することをシビル攻撃というらしいです。
そして、公式にも[不正行為防止: 無料コンテンツ制限を適用し、シビル攻撃を検知する](https://developer.android.com/training/articles/user-data-ids?hl=ja#anti-fraud-free-content-limits)というドキュメントがあります。

> GUID やインスタンス ID を使用すると、ユーザーがコンテンツ上限の適用を回避するにはアプリを再インストールしなければならなくなるため、ほとんどのユーザーに思いとどまらせることができます。

しかし、これで思いとどまらないのがリセマラという行為なので、もう一つある

>

元記事を表示

[導入]Kotlinをインストール

KotlinはAndroid開発で人気ですね。

以下、導入方法です。

・https://kotlinlang.org/
にアクセス!

Learn->Getting started in Kotlin->Working with the Command Line Compiler

SDKMAN!のとこの
`curl -s https://get.sdkman.io | bash`をコピーして
ターミナルで叩くとアスキーアートがでてくるのでダウンロード完了まで少し待ちましょ。

`Please open a new terminal, or run the following in the existing one:`
`source “/home/kaneko381/.sdkman/bin/sdkman-init.sh”`
とあるので
`source “/home/kaneko381/.sdkman/bin/sdkman-init.sh”`
を叩きましょ。

次に、
`sdk install kotlin`
叩きましょ。

インストールに5分くらいかかりました。結構かかりま

元記事を表示

【Android】Fragmentで安全にBindingObjectを参照する

![Last Modified-2020/08/27](https://img.shields.io/badge/Last Modified-2020/08/27-brightgreen)
※ @zizi4n5 さんの[こちら](https://qiita.com/zizi4n5/items/c5f0013236fd055c3e02)の記事を参考にラベルを付けてみました:pray:

どうもこんにちは、いつも便利なDelegateでハッピーな開発をしたい うえむーです。

親のFragmentのコンストラクタにLayoutリソースを引数としてとれるようになって、viewの生成を自前でやる必要がなくなりましたね!
しかし、onCreateViewをoverrideしなくてよくなったのは良くも悪くも何かしらの影響があるというもの。
例えばこのような課題がありました…

> 今までonCreateViewで生成してFragmentにキャッシュしていたbindingObjectを、既存のコードを極力変更せずにどうやって取得しよう…:thinking:

→ Delegateで取得でき

元記事を表示

【ゲームアプリとベジェ曲線:その②】ストローク(線)による表現

## はじめに
このシリーズで模索するのは、**iOS**/**Android** ゲームアプリ制作におけるベジェ曲線の可能性です。
第二回目は、ストローク(線)の処理結果を利用した表現について書かせていただきます。

動作サンプルが **GitHub** にありますので、興味のある方はご覧くださいませ。
[**https://github.com/hakumai-iida/BezierSample**](https://github.com/hakumai-iida/BezierSample)
[![title_2nd](https://user-images.githubusercontent.com/13220051/91370162-9434d080-e848-11ea-918e-98d25b2d63b6.png)](https://github.com/hakumai-iida/BezierSample)

前回:[【ゲームアプリとベジェ曲線:その①】環境準備とアンカーポイント(点)による表現](https://qiita.com/hakumai-iida/items/5

元記事を表示

FlutterのAndroidアプリを開発するときの備忘録

Androidアプリを開発したくて、Flutterを勉強中です。
VSCodeを使って開発しているのですが、
毎回、ビルドして、実機にインストールするときの作業手順を忘れてしまうので、
自分向けの備忘録としてまとめます。

# ビルド
“`
flutter build apk –split-per-abi
“`

# 実機インストール
“`
adb -d install -r build/app/outputs/apk/release/app-arm64-v8a-release.apk
“`

元記事を表示

iOSとAndroidのアプリ画面を比較できるサイト「consim.」が便利すぎる

# はじめに

**iOSとAndroidのアプリ画面を比較できるサイト「consim .」が便利すぎる!**と思ったので紹介します。
Apple MusicやTwitter、Slackといった有名なアプリの**iOSとAndroidのアプリ画面が大量に登録**されているので、観るだけでもUIの勉強になると思います。
(Apple Musicアプリだけで、**iOS 50枚**、**Android 48枚**のアプリ画面が登録されていました。)

また、**[iOSとAndroidの画面を左右に分けて表示](#iosとandroidの画面を左右に分けて表示)**することもできるので、**iOS/Androidどちらかの画面だけ見てみたい**、といった方にも有用なサイトだと思います。

* https://consim.design
![スクリーンショット 2020-08-27 12.31.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63892/ffd72375-80b7-dac7-048a-cb

元記事を表示

なぜKotlinでsynchronized suspendは機能しないのか

## なにが問題なのか

まずは以下のコードを見て頂きたいです。

“`kotlin
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

suspend fun doSomething(i: Int) {
println(“#$i enter critical section.”)

// do something critical
delay(1000)

println(“#$i exit critical section.”)
}

fun main() = runBlocking {
repeat(2) { i ->
launch(Dispatchers.Default) {
println(“#$i thread name: ${Thread.currentThrea

元記事を表示

Android Jetpack Compose を試す

昨日 2020/08/26 に Jetpack Compose の 1.0.0-alpha がリリースされていました。

公式のサンプルアプリをサクッと試す方法を書いていきます。

最新の情報や公式チュートリアルは以下のページを参考にしてください。英語版で見たほうが情報の更新が早いのでおすすめです。

[Recent Release Notes  \|  Android Developers](https://developer.android.com/jetpack/androidx/versions/all-channel)

[Jetpack Compose  \|  Android Developers](https://developer.android.com/jetpack/compose)

## 準備

現時点(2020/08/27時点)では Android Studio の Canary build が必要です。

1. [Android Studio Preview  \|  Android Developers](https://developer.androi

元記事を表示

Instrumented Unit Test用resouceの追加(UnitTest探求記5)

Unit Test 探求記は、unit test に関してまったりと実験しつつその過程を綴ってみるというものです。

# 今回のお題
Instrumented Unit Test 専用の resource を追加してみます。

# 方法
普通に src/androidTest/res 以下に配置してあげれば OK です。

# テスト対象
[View](https://developer.android.com/reference/kotlin/android/view/View) のコンストラクタ引数の [AttributeSet](https://developer.android.com/reference/kotlin/android/util/AttributeSet) から属性情報を取得するためのメソッドをテスト対象とします。

[source](https://github.com/beyondseeker/of-commons/blob/d63265869d582c11799b73ae9068ef9a36cd8413/android/src/main/java/com/

元記事を表示

Instrumented Unit Test内部でのActivityの起動(UnitTest探求記4)

Unit Test 探求記は、unit test に関してまったりと実験しつつその過程を綴ってみるというものです。

# 今回のお題
Instrumented Unit Test 内部にて Activity を起動してみます。

# 依存関係の追加

## ◆ build.gradle.kts

`androidx.test.core.app.launchActivity` を利用するために `androidx.test:core-ktx` への依存を追加しています。

[source](https://github.com/beyondseeker/of-commons/blob/8ced68c123625f48e4e59d801f642d130c80ed93/android/build.gradle.kts)

“`kotlin:追加差分
dependencies {
// for androidx.test.core.app.launchActivity
androidTestImplementation(“androidx.test:core-ktx:1.3.

元記事を表示

MVVM、Dagger、Coroutine、Retrofit、Roomを備えた5つの素晴らしいオープンソースAndroid Kotlinアプリ!

> 素晴らしいAndroid Kotlinアプリは、デベロッパーが特定のTech Stack / Librariesを備えたAndroidアプリを見つけるための出発点になることを目指しています。

## 1. Instant Weather ⛅

### GitHub URL:
https://github.com/mayokunthefirst/Instant-Weather

### 約:

Instant Weatherは、OpenWeatherMap APIからデータをフェッチして、リアルタイムの気象情報を提供します。

また、さまざまな場所の気象条件を検索できるAlgolia Instant Searchサービスを利用しています。

### Tech Stack:

Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, Algolia Search, LiveData, ViewModel

![Screenshot_2020-06-23-

元記事を表示

【android】【kotlin】WebViewでJavaScriptを許可する

AndroidでWebViewを使用してウェブページを表示したかったのですが
詰まったところがあったので備忘録として残しておきます。

#WebViewでウェブページを表示させてみる。

WebViewでQiitaのTOPページを表示させています。
トレンドが選択されているのに記事が全くでてこない。んん?どうしてだろう:disappointed_relieved:と悩んでました。

![screenshot-1598451884665.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329865/7b559e41-1790-51c8-9203-963465b99c7c.jpeg)

###JavaScriptが使用されているウェブページではWebViewのJavaScriptを有効にする必要がある
調べてみたところ、WebViewのデフォルトの設定だとJavaScriptが無効になっているため
JavaScriptの使用されている箇所が正常に表示できていないということでした:cold_sweat:

元記事を表示

Unity×ARcoreで空間上に絵を書く

## はじめに
「Jsut a line」的な何かを作ったので、アウトプットをなぐり書きをする。
 ARCoreが想像以上に凄かった。

## 参考にしたサイト様

– 今回実装したのは[こちら](https://www.slideshare.net/ssuserc0d7fb/arcorefacetracking-136448820)
– [こちら](https://heartbeat.fritz.ai/the-subtle-art-of-making-lines-in-augmented-reality-using-arcore-and-unity3d-e26718dffa03)は英語ですが似たことをしています

## 開発環境
– MacBookPro OS Catalina
– ※ Unity 2018
– ARCore SDK for Unity v1.18.0

※ 2019ではDIINotFoundのエラーが出ました。現在も動作しないかもしれません。

## 実装
記事がとても親切なので詰まったところだけを補足。

– ARcoreSessionについて“`Sess

元記事を表示

Roomで動的に生成したクエリ(SQL文)を扱う方法

##はじめに

Roomを用いてDBを扱う際に、動的に生成したクエリを扱う必要があったため、その時に調べたことについてまとめてみました。

方法としては以下の2つ

* `@RawQuery`アノテーションを使用
* `RoomDatabase#query`メソッドを使用

### 今回使用するデータベース

以下のようなメモを保存するテーブルを持つDBを例に説明していきます。

“`kotlin
@Entity
data class Memo(
@PrimaryKey(autoGenerate = true)
var id: Int,
val memo: String
)
“`

また、事前に以下のデータを持っているものとします。

| id | memo |
| —- | —- |
| 1 | メモ1 |
| 2 | メモ2 |
| 3 | メモ3 |

## `@RawQuery`アノテーションを使用する場合

まず、DAOインタフェース内に関数を定義しておきます。

“`kotlin
@Dao
inter

元記事を表示

【Android】定期購入の一時停止、再開がすべてのアプリで有効になるらしい

最近になって、GooglePlayConsoleに以下のような注意文言が出るようになりました。

![一時停止.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106030/ba6fb172-ade7-948e-37c7-d5b6c8952bef.png)

どうやら、現状オフになっている機能である定期購入の一時停止・再登録(再購入)が、2020/11/01からすべてのアプリでONになってしまうとのことです。
それぞれどういったものか、どんな対応が必要になりそうかを簡単にまとめてみます。
半分が自分用のメモなので、読みづらかったらすみません:cold_sweat:

##定期購入を一時停止する
ドキュメントには以下のように書いてあります。

>ユーザーが定期購入を一時停止できるようにすることで、自発的な解約を防ぐことができます。一時停止機能を有効にすると、契約期間の間隔に応じて、ユーザーは 1 週間から 3 か月の間で定期購入を一時停止することを選択できます。一時停止機能を有効にすると、定期購入センターと

元記事を表示

OTHERカテゴリの最新記事