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

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

非SDKインターフェースが使われているライブラリの探し方

最近のAndroidSDKのアップデートで、[非SDKインターフェース](https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces?hl=ja)が制限されるようになりました。

非SDKインターフェースと聞くとピンと来ませんが、つまるところ `非公開SDKインターフェース` です。
リフレクションや古いバージョンのライブラリでこれを使うと、targetSDKのバージョンによってはブロックされてシステムがエラーを吐きます。

ここでは、 `AndroidStudio` をつかった非SDKインターフェースが使われているライブラリの探し方を記します。
ベストプラクティスではないと思うので、より良い方法あればご教授ください :bow: :bow:

# 1. アプリで使われている非SDKインターフェースを見つける

Logcatで `Accessing hidden` でフィルターをかけます。
`Accessing hidden method` や、 `Acce

元記事を表示

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 か月の間で定期購入を一時停止することを選択できます。一時停止機能を有効にすると、定期購入センターと

元記事を表示

ToolKitを使って10分以内にGMSアプリをG+H対応に変換できました

#概要
この前の記事では、既存のAndroidアプリをHMS対応に変換する方法の概要を紹介しました。
この記事ではHuaweiが提供しているコード自動変換ツール(ToolKit)を使ってGMSアプリをGMS、HMS両方の端末で動作できるアプリに変換するやり方を紹介したいと思います。

#ToolKitの紹介
まず、ToolKitの概要、原理を簡単に紹介したいと思います。
##ToolKitとは
ToolKitはAndroid Studioのプラグインツールであり、HMS開発の際のコーディングアシスタント、クラウドデバッグ、クラウドテスティングや自動コード変換などの機能があります。

[ToolKitの自動コード変換ツール(GitHubリンク)](https://github.com/HMS-Core/hms-toolkit-convertor
)は、元のアプリの中で使用されたGMSのAPIを検出してG+H対応に自動変換するツールで、KotlinとJava両方に対応しています。今回は自動コード変換ツール(Convertor)を使用して、既存のGMSアプリをG+H対応に変換してみましたので

元記事を表示

HUAWEI ML Kitを使用して、ID用写真のDIYアプレットを作成する方法

## 概要
以前の投稿で、HUAWEI ML Kitを使用したSmile-Cameraの作成方法を検討しました。今回は、HUAWEI ML Kitの新機能をご紹介します。

学校や会社からIDカード用に特定の背景色で撮影された1インチか2インチのポートレート写真を用意するよう頼まれたことはないでしょうか?多くの場合、そのような用途に適した写真は手元にないでしょう。以前、私が通っていた学校が個人用入室カードを学生のために申請する必要がありました。ところが、フォトスタジオは閉店していました。そこで私は、ベッドのシーツを背景にして、自分のスマートフォンを使い写真を撮りました。その結果、担任の先生から叱られる羽目になりました。しかし、HUAWEI ML Kitを使用すれば、画像分割SDKをアプリに統合して、ID用写真のDIYアプレットを開発し、このような問題を解決することができます。

さらに良いことに、このSDKは完全に無償であり、Android端末で動作します。
## ID用写真のDIYアプレットの開発
### 1.準備
#### 1.1 Huawei Mavenリポジトリをプロジェクト

元記事を表示

【Android , Firebase】Firestoreでリアルタイムなメッセージの送受信を実装してみた

#実装内容
Androidアプリにて,Firebaseを用いてリアルタイムなメッセージの送受信を実装
(Kotlinで実装しています。とりあえずの機能テストとして作っているので,細かい部分は適当です。)
イメージとしては,簡易なメールアプリと言ったような感じになります
Androidアプリ制作における基本的な説明は省略していますので,ご了承下さい

アプリ開発に関して素人なので,動作は確認しておりますが,適切でない記述が多々あるかと思います。
気づいた場合にはコメントでのご指摘お願いいたします。

#実装の流れ
1. UIを作る
2. ログイン機能を実装 (端末ID識別のため,Firebase Authenticationを使用)
3. メッセージ送信を実装(送信メッセージをFirestoreに格納)
4. メッセージ受信を実装(受信メッセージが更新されたタイミングでFirestoreから取得)

#UIを作る

まずUIを作っていきます
特にデザインには拘らず必要最低限のパーツを配置していきます

ログイン画面と

メッセージ送受信画面の2つを作成します

画面1:ログイン画面

元記事を表示

Main Thread の Unit Test(UnitTest探求記3)

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

# 今回のお題
MainThread(Ui Thread)の unit test を行ってみます。

# テスト対象
今回は、current thread が main thread かどうかを判断する val を作成して、それをテスト対象とします。

[source tree](https://github.com/beyondseeker/of-commons/tree/c23ccd94c73ab67f923c0b53abf42b740ba41a71)

## ◆ isMainThread

[soruce](https://github.com/beyondseeker/of-commons/blob/c23ccd94c73ab67f923c0b53abf42b740ba41a71/android/src/main/java/com/objectfanatics/commons/android/os/package.kt)

“`kotlin
val isMai

元記事を表示

HUAWEI ML Kitを使用してわずか30分でSmile-Cameraを作成する方法

Huawei HMS Core 4.0発表イベントで最も注目を集めたサービスの1つに、Machine Learning (ML) Kitがあります。
では、ML Kitとはどのようなサービスでしょうか?このキットは、開発工程でどのような問題を解決できるのでしょうか?
今日は、ML Kitの最も強力な機能の1つ、顔検出をご紹介します。
## 顔検出の概要
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696852/7e3a21fb-c898-1217-b303-839662b33be6.gif)

このサービスは、顔の向き、表情(幸せ、嫌悪、驚き、悲しみ、または怒り)、属性(性別、年齢、服飾品や装身具)、眼を開いているか閉じているかを検出できます。鼻、眼、唇、眉毛の座標をマッピングすることもでき、複数の顔のグループ全体を一度に検出することさえできます。
特に、顔検出サービスは完全に無償であり、Android端末で動作します。
##複数の顔に対応するSmile-Cameraの開発
上記の機能をどのよ

元記事を表示

[Java & Kotlin] 複数選択可能なRecyclerViewを作る

##RecyclerViewって機能なにもないよね
僕自身、Android開発をはじめてから1年ほどはListView信者でした。「だって**RecyclerViewって機能なにもないし**、**ListViewの劣化版でしょ?**なんか難しそうで使いづらいし、**生理的に無理**」と思っていたんです。ListViewにはDividerやFastScroll、ChoiceModeだってある。それなのに後継の**RecyclerViewには何も備わっていない**じゃないか!皆さんもそう思っていた時期があったのではないでしょうか。

しかし実際はRecyclerViewのほうが扱いやすいんですよね。これが栄えている理由です。僕自身、ListViewのほうが簡単に実装できるとしてもRecyclerViewで実装してしまいます。昔、**徹夜で必死に**RecyclerAdapterを作る練習をした成果かもしれませんが、後の拡張性を考慮するとRecyclerViewで実装したほうがいいんです。今ではListViewを裏切ってRecyclerView信者になっています。

RecyclerView

元記事を表示

【初心者向け】Googleが開発したFlutterとは?効率的に学習する方法もご紹介

皆様、こんにちは!マイスター・ギルドのフクロウと申します。
今回はGoogleが開発した、フリーでかつオープンソースのフレームワークであるFlutterについて、簡単にご紹介します。

#Flutter(フラッター)とは
使用言語:Dart
開発環境:Linux、Windows、macOS
開発ツール:Android Studio またはVisual Studio Code

Googleが開発したAndroid、iOS、WEBアプリの開発を行うことができるマルチプラットフォームに対応したフレームワークの名称
2018年12月4日に初の正式版「Flutter 1.0」のリリースが発表されたので、比較的新しいフレームワークと言えます。
WindowsとMacの両環境でAndroid/iOSの開発は可能だが、WindowsではAndroidしか実機テストやリリースはできないです。iOSの実機テストやリリースには、別途 Xcodeが必要になります。

### 開発においてのメリット
・WEB開発や、スマホアプリ開発では、複数の言語を学ぶ必要があるが、FlutterではDartを学ぶだけで開発

元記事を表示

【Android】uses-featureってなに

## 背景
– [CameraX](https://developer.android.com/training/camerax?hl=ja)の[codelabs](https://codelabs.developers.google.com/codelabs/camerax-getting-started/#0)で、AndroidManifestにuses-featureを記述していたのですが、何者ってなったので調べました。
– 公式を見てもらえたら…笑 [公式のリンク] (https://developer.android.com/guide/topics/manifest/uses-feature-element?hl=ja#features-reference)

## なにをするものか

> Google Play は、アプリのマニフェストで宣言された 要素を使用して、ハードウェアおよびソフトウェアの機能要件を満たさない端末からアプリをフィルタします。

– 要は、ここで宣言しておくと要件を満たしていない端末ではGoogle Playに表示さ

元記事を表示

色々なandroidx86派生OSの紹介

#目次
1.はじめに
2.androidx86
3.Phoenix OS
4.Prime OS
5.Bliss OS
6.OpenThos
7.要するに何が言いたいか
#1.はじめに
androidx86派生の紹介記事です。
androidx86とは、androidをPCでも使えるようにという考えによって作られたもの。
プロキシサーバーで規制されている中でYOUTUBEを見たいという邪念から生まれた奮闘記です。(アンドロイドアプリからなら開ける)たぶん海外のサイトとかもくまなくみたんで、見落としはないと思う。
では実際に紹介していきましょう。
#2.androidx86
たぶんandroidをPCで使えるOSの基礎になってるOS。
バージョンはいろいろあってアンドロイド9が最大
###利点
簡素。それだけ
###欠点
・ウィンドウを最大化しようとしても、まわりが黒くなるだけで最大化できない(ことが多い)。
・多分一番致命的な欠点。開けないアプリが多すぎる。
理由的には、アプリはだいたいARMベースでx86ベースではないからということらしい。そこらへんはエアプなので詳しくはよくわからん。

元記事を表示

PieChartまとめ(MPAndroidChart)

# はじめに
円フラフを作成する機会がありましたので、PieChartの使い方を自分ようにまとめます。

# Gradle
“`build.gradle
// Project
allprojects {
repositories {
google()
jcenter()
repositories {
maven { url ‘https://jitpack.io’ }
}
}
}

// Module
dependencies {
implementation ‘com.github.PhilJay:MPAndroidChart:3.1.0’
}
“`

# 使い方
`activity_main.xml`にmy_piechartというIDでPieChartを定義。

“`activity_main.xml

元記事を表示

アプリ内広告について軽くまとめた

([Google AdMob](https://admob.google.com/intl/ja/home/)を基本参考資料としてます)

#アプリ内広告とは
個人でアプリ開発してる人がお金を儲けるためのマネタイズ方法の一つ。
スマホでゲームをしてたりするとちょいちょい全画面表示されたり、突然30秒くらい動画が流れ出して操作を阻害してくる若干うざったいアレ。

#スマホアプリで稼ぐ方法って?
アプリ広告以外にもいろんなパターンがある

**有料アプリモデル**

アプリに価格をつけてリリースし、購入してもらいます。
あるいは、特定の機能を制限した無料版のアプリと全機能を解放した有料版アプリの両方をリリースするパターンもあります。無料版アプリでユーザに使用感を試してもらい、その後有料版へのアップデートを促します。

**アプリ内購入モデル**

IAP(In App Purchase)と呼ばれる方法。アプリ自体は無料で提供し、ユーザが追加機能を獲得したい場合

元記事を表示

OTHERカテゴリの最新記事