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

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

Android StudioでAndroid端末の電流、電圧、ワット数を計測する

Androidのアプリによって消費電力が変わるのか確認したくて実装しようと考えたので、Android Studioで実装してみました。

# 動作環境

* Android studio 4.1.2
* Windows 10 Pro 20H2

# 実装

~~~ruby:MainActivity

class MainActivity : AppCompatActivity() {
private val sbuilder = StringBuilder()
private var batteryStatus: Intent? = null
private var bManager: BatteryManager? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val ifilter =

元記事を表示

Android: マルチモジュール構成の DataBinding で View is not a binding layout. エラーが発生する

# 環境

* OpenJDK 11
* Gradle 7.1.1
* Android Gradle Plugin 4.2 ~ (7.0.0, 7.1.0-alpha08 でも再現確認)
* Gradle Multimodule 構成

# 発生条件とエラー内容

Android Studio や CI でビルドしたアプリが、特定の画面へ遷移したときに以下のエラー(クラッシュ)が発生することがある。

* [AppCompatActivity(contentLayoutId: Int)](https://developer.android.com/reference/kotlin/androidx/appcompat/app/AppCompatActivity#appcompatactivity_2) または [Fragment(contentLayoutId: Int)](https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment#fragment_2) を使ってレイアウトを自動生成したあ

元記事を表示

【Flutter】CheckBoxListTileとTextStyleを活用してToDoリストのフロントエンドを作ってみた

# はじめに
先日からFlutterを使い始めた初心者です。
制作したいToDoアプリの完成形のイメージは自分の中であるので、それらを実現するために色々調べているので、それらをまとめていきます!
何かおかしな点などがありましたらコメントをお願いします。

# この記事で分かること
完成形はこんな感じ

![スクリーンショット 2021-08-13 222231.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/f14da810-f395-cc12-cb98-6ee9d40a81e0.png)

この記事では主に

– CheckBoxListTileについて
– 取り消し線の実装方法

をまとめています

# ToDoリストのフロントエンドを作る
## そもそものお話
今回のゴールは

– 各リストの左側にチェックボックスを入れる
– チェックしたら取り消し線が入る

ことです。
私のイメージではListTileを使ってleading: Iconみたいな感じでCheckBoxを入れるのかな

元記事を表示

ピアノアプリを作成しよう!

## レイアウト

### FrameLayoutを適用しよう!
![スクリーンショット 2021-04-03 8.00.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/11e8c628-1d48-dff6-a868-a5e0eafd41bb.png)

### FrameLayoutとは?
![スクリーンショット 2021-04-03 8.04.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/29aea5d4-8fef-61fc-c1dc-ca9884e4b89c.png)

### Designの一例
![スクリーンショット 2021-04-03 10.37.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/f1162899-ca94-3eb9-ccf6-0f8877ca6a58.

元記事を表示

FlutterでAndroidの実機を認識させられなかった話

# はじめに
大体タイトル通りです。

VSCodeを使ってFlutterでアプリ開発するぞ! Androidの仮想環境で動かすと重くなるし、使ってるスマホがAndroidだから実機でデバッグしよ。……あれ、デバイス認識されない。

みたいな感じで1時間くらい時間を無駄にしたので、Qiitaに記事を残します。
私の環境はVSCodeでしたが、Android Studioでも同じことをしなければ認識しないと思います。

# 実機側の設定の問題だった
もし、右下の画像赤丸部分に使いたいデバイス名が表示されていなくて、認識できないような問題であれば、同じ部分で詰まっているのかもしれません。
![キャプチャ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1560787/7b3fbd3e-5c5c-c1c5-d11a-2d05ad4b2fee.jpeg)

# ステップ1 開発者になる
1. Androidの設定を開く。
1. [システム] > [端末情報] > [ビルド番号]を見つける。
1. バージョ

元記事を表示

[Android] Koinの使い方

久しぶりに`Koin`を触ったので、メモメモ。

# Koinを導入

まず`Koin`を導入します。

導入については [こちら](https://insert-koin.io/docs/setup/v3) を参考にしました。

“`build.gradle
buildscript {
// 追加
ext.koin_version = ‘3.1.2’
ext.kotlin_version = ‘1.5.20’
repositories {
google()
// なければ追加する
mavenCentral()
}
dependencies {
classpath “com.android.tools.build:gradle:7.0.0”
classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version”

// NOTE: Do not place your application

元記事を表示

OkHttpのInterceptorを使って、ダミー応答を返す

アプリ開発はそのアプリで閉じるということは希で、通常バックエンドとしてのサーバーサイドの開発も必要です。開発初期段階ではテスト的にたたけるAPIが無かったりで、アプリの開発を始めにくい場合もあります。
OkHttpにはInterceptorというリクエストをフックする仕組みがあるため、ここで細工をすることで、特定のURLなどへのアクセスを止めて、代わりに埋め込みのダミー応答を返すようにすることができます。
OkHttpClientのインスタンスはプールされていると思うので、ここで細工をしておけば、他の処理は本番かダミー応答かを気にせず、実装を行うことができます。Retrofitを使う場合も、OkHttpClientのインスタンスを渡すだけでOKですね。

当たり前な機能なので、ほとんど自分用メモになってしまうかもしれませんが、説明します。

# Interceptor

OkHttpではNetworkInterceptorとInterceptorの2種類があって、これの違いがたまに話題になります。NetworkInterceptorはCacheの後の本当のネットワークへのリクエストの処

元記事を表示

簡単にスナックバーに戻るボタンの動作(アクションボタン)を記入してみる

初めに

スナックバーの戻るボタンの動作が案外簡単に実装できるようになっていたためここにメモ代わりに保存しておくことにした。
案外簡単で分かりやすくまとまっていると思ったので、ぜひ使ってみてほしい。

![IMG_20210813_121448.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1209385/d51ec3c2-fd7d-6b34-84e9-a437cb245066.jpeg)

動作の内容

“`kotlin
//MainActivity.kt

Snackbar.make(findViewById(android.R.id.content),”保存しました”, Snackbar.LENGTH_SHORT)
            //戻るボタンの動作
.setAction(“元に戻す”){

}
            //

元記事を表示

【Android】Jetpack ComposeでAdMobのバナー広告を表示する

Jetpack Composeを使ったアプリで、[AdMobのバナー広告](https://developers.google.com/admob/android/banner?hl=ja)を表示する方法です。

↓のような感じで、画面下部にバナーを表示します。

# :file: コード

現時点(2021/08/13)では、Jetpack Compose用に用意されたAdMobのバナー広告( `AdView` )はなさそうなので、 `AndroidView` を使って対応しています。
(既存のViewも使えるので `AndroidView` 便利ですね :relaxed:)

“`kotlin
@Composable
fun SampleScreen() {
Scaffold {
Column {

元記事を表示

【Android】Jetpack DataStoreのproguard設定(Proto DataStore編)

[Jetpack DataStore](https://developer.android.com/topic/libraries/architecture/datastore) の **Proto DataStore**(`androidx.datastore:datastore`)を使ったアプリで、難読化を有効にした場合にクラッシュが発生したので、proguard設定をメモがてら記載したいと思います。

※ エラーの内容は下記で、いかにも難読化の設定が不十分っぽい感じがしました。

“`
java.lang.RuntimeException: Field showCompleted_ for e1.a not found. Known fields are [public boolean e1.a.i, public int e1.a.j, public static final e1.a e1.a.k, public static volatile k2.a1 e1.a.l]
“`

# proguard設定
下記の内容を、proguardに記述すればOKでした。

“`p

元記事を表示

Influxdb-client-kotlinを使ってみた

InfluxDBを使ってみたかったので、AndroidからKotlin SDKでwrite/readを試してみた。

## 準備 Clientライブラリの追加

ライブラリを追加する

“`gradle:app/build.gradle
implementation “com.influxdb:influxdb-client-kotlin:3.1.0”
“`

ライブラリバージョンは以下で確認できる。
2021/08/12時点では 3.1.0 が最新
https://github.com/influxdata/influxdb-client-java/tree/master/client-kotlin

## 実装

Androidで実装しているので、
View → Repository → ApiClientWrapper の順になるよう実装していく。
(ViewModelは ~~面倒~~ サンプルなのでスキップした)

### View
“`kotlin:MainActivity.kt
// 本来はDIすべき
val repositor

元記事を表示

Androidアプリを作成しCI上でE2Eテスト自動化までを1からやってみた

## はじめに
1から簡単なAndroidアプリを作成し、それに対するE2EテストをAppiumで自動化しCI環境で実行できるようにする所までをやってみたのでその備忘録を残しておく。

構築したアプリ・e2e自動テストのコード・CIパイプラインのコードは以下のGitHubにある。
(ブランチで作成したアプリがそれぞれ分かれている。)

https://github.com/yuta-katayama-23/mobile-app-e2e-test

## 内容
セクションは大きく3つで、

– アプリの実装について([Androidアプリを作成する](#androidアプリを作成する))
– e2eテスト自動化のソースコードの実装について([AppiumによるE2Eテスト](#appiumによるe2eテスト))
– CI上での自動テスト実行について([CI](#ci))

に分かれている。

## Androidアプリを作成する
### アプリの実装
[Androidアプリのdeveloper向けのサイト](https://developer.android.com/)にある公式チュート

元記事を表示

プログラムでPetalマップの場所情報を検索する方法

次のソースコードを使えば、Petalマップで特定な場所の情報を検索できます。

“`kotlin
val uriString = “petalmaps://poidetail?center={検索場所}&marker={検索場所}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/MyPublicProject/tree/master/PetalMapSample

元記事を表示

プログラムでPetalマップのルート検索機能を使う方法

次のソースコードを使えば、Petalマップでルート検索ができます。

出発地:場所名または経緯度(Longitude,Latitude)
到着地:場所名または経緯度(Longitude,Latitude)
移動手段:drive、walk、bicycle、bus

“`kotlin
val uriString = “petalmaps://route?saddr={出発地}&daddr={到着地}&type={移動手段}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/M

元記事を表示

プログラムでPetalマップの場所検索機能を使う方法

次のソースコードを使えば、Petalマップで場所検索ができます。

“`kotlin
val uriString = “petalmaps://textSearch?text={場所検索のキーワード}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/MyPublicProject/tree/master/PetalMapSample

元記事を表示

プログラムでPetalマップの近辺情報を検索する方法

Nearby Place Searchはユーザーの位置に基づく場所検索機能です。
次のソースコードのように、キーワードを渡せば検索できます。

“`kotlin
val uriString = “petalmaps://nearbySearch?text={Nearby Place Searchのキーワード}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/MyPublicProject/tree/master/PetalMapSample

元記事を表示

仕事用プロファイルでアプリをデバッグする

## やりたいこと
toB向けのアプリを開発していると、Androidの仕事用プロファイルとして起動した時のみに発生するバグに遭遇したりして、仕事用プロファイルでデバッグをしたい時があります。

## 事前準備
### adbのパスを通す
前提として、adbのパスを通しておきましょう。
Qiitaのこの記事を参考にすると良いと思います。
[ターミナルにadbのパスを通す(Mac)](https://qiita.com/piyonakajima/items/32cbd82f4b3c7e30e6ae)

### デバイスに仕事用プロファイルを設定する
そもそも実機に仕事用プロファイルが設定されていないと、アプリを仕事用プロファイルとしてインストールすることができません。
まず[Googleのドキュメント](https://support.google.com/work/android/answer/6191949?hl=ja)を参考にして、お手持ちのデバイスに仕事用プロファイルを追加しましょう。

## 一旦実機で実行する
仕事用プロファイルをアプリに入れたら、実機で実行してしまいましょう

元記事を表示

Kotlin Jetpack Compose について その1

#はじめに
久しぶりにAndroidアプリの手入れをしたらJetpackComposeの仕様がかなり変わっていたので忘備録として記事にします。
まだ正式にリリースされたわけではなく、変更があるかもしれませんのでご注意ください。
公式ドキュメントを軽くまとめたものになります。

#Jetpack Composeとは
去年か一昨年くらいにAppleからSwiftUIが発表されました。それのAndroid版です。
通常、Androidアプリを作成するときは、**xmlファイル**と**kotlinファイル**の2つのファイルを使って作成するかと思いますが、
Jetpack Composeを使用すると、UIの全てをコードで作成することができます。

##開発環境
– iMac 2019
– Android studio Arctic Fox | 2020.3.1
– Kotlin Jetpack compose 1.0.0-rc02(正式リリースの可能性あり)

##基本

“`Kotlin
class MainActivity : ComponentActivity() {
ove

元記事を表示

[Android]annotationタグを使ってstrings.xmlで文字列を装飾する

Android で文字列を装飾したい場合、XML ファイルで文字列を定義する際にいくつかの HTML タグがサポートされています。
例えば以下のように設定してみます。

“`xml

この部分は太字です。\nこの部分は赤字です。\nこの部分は取り消し線です。

“`

“`xml

“`

すると、以下のように文字列が装飾されて表示されるようになります。

kaptからkspに変わるとどれくらい早くなるのか〜Room編〜

# kaptとは

“`
Annotation processors (see JSR 269) are supported in Kotlin with the kapt compiler plugin.
“`
Javaのannotation processingをkotlinで使えるようにするcompiler pluginのことです。

# kspとは
“`
Kotlin Symbol Processing (KSP) is an API that you can use to develop lightweight compiler plugins. KSP provides a simplified compiler plugin API that leverages the power of Kotlin while keeping the learning curve at a minimum. Compared to KAPT, annotation processors that use KSP can run up to 2x faster.
“`

kspは

元記事を表示

OTHERカテゴリの最新記事