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

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

【備忘録】Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper ‘-jvm-target’ option

[解決法](https://qiita.com/kph7mgb/items/28ee37957976e80e38f2)

元記事を表示

JaCoCoの導入(UnitTest探求記6)

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

# 今回のお題
– [JaCoCo](https://www.jacoco.org/jacoco/) plugin を導入する。
– Unit test と instrumented test の各々個別のレポートを生成する。
– Unit test と instrumented test を合成したレポートを生成する。

# JaCoCo とは
– [JaCoCo](https://www.jacoco.org/jacoco/) はコードカバレッジ用のライブラリでです。
– [The JaCoCo Plugin](https://docs.gradle.org/current/userguide/jacoco_plugin.html) でサポートされています。
– [Android Gradle plugin](https://developer.android.com/studio/releases/gradle-plugin) でもサポートされています。

# 前

元記事を表示

JSSEC AndroidセキュアコーディングガイドにおけるAndroidManifest.xmlの書き方

# JSSEC AndroidセキュアコーディングガイドにおけるAndroidManifest.xmlの書き方

## 概要
一般社団法人日本スマートフォンセキュリティ協会(JSSEC)発行の[「Androidアプリのセキュア設計・セキュアコーディングガイド」](https://www.jssec.org/dl/android_securecoding/index.html)を基準に、
セキュリティ調査する機会があったため、記事にしてみました。

今回はまず見るであろう、
AndroidManifest.xmlに焦点を絞っていきたいと思います。

お題目としては、以下の様になります。
1. 各コンポーネントの公開設定
1. 使用権限の定義

## 想定している対象者
* Androidの基本コンポーネント・権限については理解したので、これからセキュリティ観点についても理解を深めていきたい方

## 本題

### 各コンポーネントの公開設定

新しくコンポーネントを増やす場合は、以下に注意。
* 追加したコンポーネントごとにexported属性が明示的に指定する
* 非公開となっている

元記事を表示

AndroidのreCAPTCHA APIを使う【私はロボットではありません】

# はじめに

機械的に大量に行われるユーザ登録やログイン試行、コメント投稿を防ぐために、機械ではなく人間がUIが操作していることを確認する方法として[CAPTCHA](https://ja.wikipedia.org/wiki/CAPTCHA)があります。Googleは[reCAPTCHA](https://developers.google.com/recaptcha)というサービスを提供していて、[Android向けにもAPIを提供している](https://developer.android.com/training/safetynet/recaptcha.html)ので使ってみました。

# 参考文献

この記事はAndroid公式サイトの「[SafetyNet reCAPTCHA API](https://developer.android.com/training/safetynet/recaptcha)」の内容に沿っています。

# Google reCAPTCHAのサイトで登録する

## 必要事項を送信する

[Google reCAPTCHA](https://w

元記事を表示

【Android】Retrofitについて

# 【Android】Retrofitについて

## Retrofitとは
Retrofitとは、Http通信をする際に使われるライブラリ。
webApiを叩くとかで、けっこう使うのでは

今回は、構成とかは考えず、とりあえず最低限の動くという状態でやってます。
叩くAPIは、[QiitaのWebApi](https://qiita.com/api/v2/docs)です。

## 目次
1. build.gradleとManifestへの記述
2. Interfaceの作成
3. レスポンスのmodel作成
4. 実行

## 1. build.gradleとManifestへの記述
– 依存関係の記述

“` build.gradle
// retrofit
implementation “com.squareup.retrofit2:retrofit:2.5.0”
// 以下は、gsonというjsonをjavaで扱えるように変換してくれるライブラリ
implementation ‘com.squareup.retrofit2:converter

元記事を表示

Jetpack Composeで頻出する”ambient”とは

普通にアプリの中でも使われる概念で、Jetpack Composeのサンプルアプリのコードや、内部のコードを少しでも読むとすぐに出てくる概念で、知らないと混乱すると思うので、理解しておいたほうが良さそうです。

以下の動画でも登場しました。以下の動画を見てもらってもいいですし、このQiitaでサラッと確認したい人は以下をどうぞ。

アプリの中で共有したい**色などを渡していきたいときはどうすればよいでしょうか?** (この場合通常はMaterialThemeを使うことで解決できますが、このように共有したいものはアプリを作る中で出てきます。 参考: https://github.com/android/compose-samples/search?q=ambient&unscoped_q=ambient )
通常Composeのデータフローは上から下に流れていくので、一応、以下のように関数で渡していくことができます。

“`kotlin
class NewsAppPalette(
val primary = .

元記事を表示

Repositoryから取得したLiveDataをViewModelでキャッシュしておくには?

# こうだ

![cached_live_data.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82681/a4ce2b7e-ebc6-33d7-7e1b-1d97fdb32834.gif)

※Developer options の Don’t keep activities を有効にしています

# SavedStateHandle

AndroidのライフサイクルではActivityインスタンスやFragmentインスタンスはいつ破棄されるかわかりません。
これらが持つViewModelインスタンスも同様です。

破棄され、再生成されるとそれまでのメモリー上のデータは破棄されます。これはよろしくありません。

これを避けるためにデータの保存/復元を行う必要があり、そのヘルパークラスであるSavedStateHandleを使うと楽に実装できるというのは以前書かせていただきました。

[ViewModelのデータを保存/復元するにはSavedStateHandleを使う
](https://qiit

元記事を表示

最小構成で作るARCore(kotlin)

先日Pixel 4aを買ったのでARCoreを試してみました。
公式のサンプルはJavaで書かれているのですが、サンプルの実装を確認しながら、これをkotlinに直しつつ最小構成でARCoreを動かせないか試してみました。

実装したコードはGithubに上げています。
https://github.com/r-asada-ab/SimpleARCore

# 公式サンプル

まず、公式のQuick Startに従ってビルドすれば簡単にARCoreの動作を確認することが出来ます。

https://developers.google.com/ar/develop/java/quickstart

ただ、中で何をしているのかとかどういうクラスが使われているのかとかいろいろ気になりますよね。

ということで、ソースコードを追いながら、それをkotlinで書いてみます。

# プロジェクトの作成

新しくAndroid Projectを作ります。
Activityは何でもよいですが、ここではEmpty Activityを選択しておきます。

これをビルドすると、普通のAndroidアプリが起

元記事を表示

ViewPagerにある異なるFragment上のListViewのスクロールを同期させる

#実現すること
タイトルの通り、`ViewPager`のページをめくったときに遷移先のページと元のページの`ListView`のスクロール量が同期するようにします。
時刻表を作るときなどに活用できます。

#前提
以下のような環境をもとに、実装を進めていきます。

####表示するリスト
~~~kotlin:Data.kt
object Data {
val list = (1..100).toList()
}
~~~
####`Avtivity`の実装
~~~kotlin:MainActivity.kt
class MainActivity : AppCompatActivity() {

lateinit var viewPager: ViewPager

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

v

元記事を表示

ESP-WROOM-02(ESP8266)の基本回路

毎回、ブレッドボードを組むときに構成を調べないで済むようにするための忘備録です。

#接続
####説明
| PIN | 説明 |
|:—:|:—|
| 3V3 | 電源のプラスライン(+)に接続 |
| GND | 電源のマイナスライン(-)に接続 |
| EN | プルアップ抵抗(10KΩ)を通してプラスライン(+)に接続 |
| IO0 | プルアップ抵抗(10KΩ)を通してプラスライン(+)に接続
併せてFLASHスイッチを経由してマイナスラインにも接続 |
| IO2 | プルアップ抵抗(10KΩ)を通してプラスライン(+)に接続 |
| IO15| プルダウン抵抗(10KΩ)を通してマイナスライン(-)に接続 |
| RST | RESETスイッチを経由してマイナスライン(-)に接続 |
| TXD | UARTコントローラのRXDと接続 |
| RXD | UARTコントローラのTXDと接続 |

####回路図

![ESP8266基本回路.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

【Android 9.0 Pie Java】RecyclerView 長押しで要素毎に内容の変わるコンテキストメニューを表示する

RecyclerViewで要素を長押しして、要素毎に内容の変わるコンテキストメニューを表示する方法の記事が見当たらなかったのでメモしてみます!

↓完成イメージ↓
![7c30d4aa9804094e0e83ddb1b9247cb8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285286/85bfd135-43e4-7a80-315c-c2ee6e4e2fd7.gif)

## 実装方法
### コンテキストメニューの表示
Activity or Fragmentに

“`
View.OnCreateContextMenuListener
“`
をimplementsします。

“`java:SampleFragment.java
public class SampleFragment extends Fragment
implements View.OnCreateContextMenuListener {
“`
他にもViewHolderにimplementsするパターン

元記事を表示

adb connectでmissing port in specificationとなる場合

### はじめに
adbのバージョンによるのか、adb connnectで接続できない場合があったため備忘録

### コマンド

“`bat
C:\Users\hoge>adb tcpip 5555
restarting in TCP mode port: 5555

rem 接続に失敗する
C:\Users\hoge>adb connect 192.168.XXX.XXX
missing port in specification: tcp:192.168.XXX.XXX

rem ポート番号を末尾に追加すると接続できる
C:\Users\hoge>adb connect 192.168.XXX.XXX:5555
connected to 192.168.XXX.XXX:5555

C:\Users\hoge>adb devices
List of devices attached
192.168.XXX.XXX:5555 device

“`

### 確認したバージョン
“`bat
C:\Users\hoge>adb version
Android Debug

元記事を表示

ViewModelのデータを保存/復元するにはSavedStateHandleを使う

# こうだ

![saved_state_handle.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82681/2c5f33fb-2395-a7e4-8c46-c69dda5b15e6.gif)

※`Developer options` の `Don’t keep activities` を有効にしています

# Androidとメモリー上のデータ

Androidはすぐメモリー上のデータが飛びます。
画面を回転したら飛ぶ、システムがアクティビティを破棄したら飛ぶ、システムがプロセスをキルったら飛ぶ。

これらはAndroidのライフサイクルのせいで、上記のタイミングでActivityやFragmentのインスタンスが都度作り直しになるためです。
そのために開発者はActivityやFragmentの `onSaveInstanceState`関数で飛ばしたくないデータを保存し、 `onCreate` 関数などで `savedInstanceState` からデータを復元する処理を書かなくてはいけま

元記事を表示

ImageViewを角丸にする方法

## 概要
Androidには、画像リソースを表示するためにImageViewクラスが存在します。これを使用することで、UIに画像を表示することが可能になります。しかしながら、下の画像のように**丸いアイコンのような画像を表示させる属性は、存在しません**。(2020/08/29現在)

なので今回は、**ImageViewを角丸にする方法を紹介します**。サードパーティのライブラリも複数存在しますが、今回はそのよなライブラリに頼らずAndroid標準のライブラリのみ使用して実装する方法を紹介します。

![hojge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199988/e7af4b25-d910-448f-76b0-673655218283.png)

## 実装方法
実装のコードは下記のようになります。
ポイントはCardViewを使用することです。

“`xml

元記事を表示

Androidエンジニアが慣れている技術で作る維持費0円のサーバサイドアプリケーション

# 今回紹介する技術スタックの紹介

普段Androidアプリを作っていますが、たまに認証周りなどでサーバサイドの技術検証をすることがあります。そのときよく使う技術スタックがこちらです。

## Google App Engine スタンダード環境(Java8)

– Javaサーブレッドをデプロイできます。
– アクセスがなければ0円で維持できます。
– 久しぶりのアクセスだとコールドスタートになり、レンスポンスに5秒くらいかかります。
– アクセスがあっても1インスタンスで収まる少ないアクセス数ならば0円で維持できます。

[無料の割り当てについての公式情報はこちら](https://cloud.google.com/appengine/quotas?hl=ja#Instances)

ちなみにスタンダード環境の他にフレキシブル環境というものもありますが、そちらは0円で維持できません。

[スタンダード環境とフレキシブル環境の違いについての公式情報はこちら](https://cloud.google.com/appengine/docs/java?hl=ja)

## Kt

元記事を表示

スクロール可能な画面でViewを下に配置する

# はじめに

スクロール可能な画面で下に配置されているViewを、画面に余裕があれば、画面いっぱいに使ってViewを配置するようなレイアウトの実装方法。

# 実装方法

“`xml

【Flutter】【Android】Splash Screen(起動画面)を直感的に作る方法

#はじめに
 FlutterでiOS / AndroidのSplash Screenを作ろうとしたところ、Android側でかなり手こずったので(僕がAndroidアプリ開発未経験なのが大きい)ここに記します。
 僕と同じ状況の方の役に立てたら幸いです。

 Androidでも画面中央に静止画のロゴを一つ表示するだけの場合や、両OSでデザインが全く同じ場合はとても簡単にSplash Screenを作ることができます。

 [flutter_native_splash](https://pub.dev/packages/flutter_native_splash)という便利なPluginがありますし、それを使わなくてもXcodeとAndroid Studioの初期設定をいじるだけでできます。

 ですが、僕の場合は両OSでデザインが違う && 画像を複数表示しなければならなかったので上記の方法では解決できませんでした。

 また、この問題に関する技術記事がほとんど見当たらず実装は難航しました。

 iOSでSplash Screen(Launch Screen)を作る方法やAndroid

元記事を表示

【Kotlin1.4】kotlinx.serializationとMoshiを比較してみた

# 背景

先日
[Kotlin1.4で使いたい新機能を一部紹介する](https://qiita.com/sudo5in5k/items/e9207d39fbbfdfe827b2)
という記事を書かせていただいて、その中で`kotlinx.serializaton`が気になっていました。

JSONパーサのライブラリは色々ありますが、[「Gson is deprecated.」](https://www.reddit.com/r/androiddev/comments/ejjroe/kotlinx_json_vs_gson_a_short_article_about_kotlin/fcz3v0d/?utm_source=share&utm_medium=web2x)から[Moshi](https://github.com/square/moshi)を使っている方が多いのではないでしょうか。

ですがこの度、Kotlin1.4になってからStableなJSON serializationとして[kotlinx.serialization](https://github.com/Kot

元記事を表示

UnityでAPI Levelあげようとしたけど、選択できずに困った時の話

# 前置き
– aa,,もうAPI levelをあげないといけない季節になったのか……
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87713/2a6d45f9-bb6f-ae05-fcac-a6a313f12af7.png)
– Unity上でAPIレベルを28から29に上げようとした時、ちょっとつまづいた時の話

# 環境
– Unity 2018.4.19f1

# 解決方法
## 結論
1. AndroidSDKをinstall
1. Unity上で`Target API Level`をAutomaticにする

## 手順
1. AndroidStudio起動
2. SDK Manager起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87713/c013ff2c-6101-43e1-8c72-a49112288a4a.png)

![image.png](https

元記事を表示

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

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

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

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

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

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

元記事を表示

OTHERカテゴリの最新記事