Android関連のことを調べてみた2022年04月04日

Android関連のことを調べてみた2022年04月04日

Android Studioでテストコードを書いてみた

## はじめに
アプリを実装するにあたってテストコードといった方法があると知ったのですが、
今まで試したことがなかったので、簡単なコードですが書いてみました。
[テストコード](https://qiita.com/ie_Blue/items/332e9a4b0976e769b429)について簡単にまとめたものを以前記事にして書いております。

## 実際に書いてみよう
今回は四則演算のコードに対して、テストコードを書いてみました。
言語はKotlinで試しております。

コードを書く場所はExampleUnitTestに書いております。
ファイルの位置はこちらになります。
![ExampleUnitTest.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472891/7e71fe9a-e2ea-8da1-7b71-1a94fbbd07f2.png)

超簡単に四則演算を行うコードを作成しテストいたしました。
“`
@Test
fun calculationTestCode(){

元記事を表示

findViewById vs viewBinding

# findViewById vs viewBinding

Kotlin での Android アプリ開発勉強中のみやジックです。
現在は Google の提供している Android Basics in Kotlin を進めています。
[Unit 2:Layouts の Pathway1](https://developer.android.com/codelabs/basic-android-kotlin-training-tip-calculator?hl=ja&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-kotlin-unit-2-pathway-1%3Fhl%3Dja%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-training-tip-calculator#2)で viewBinding が出てきて、「ん?」ってなったので頭の中を整理する

元記事を表示

Vue.jsで「AndroidかつWebViewで閲覧されている」場合の表示の出し分け

# やりたいこと
* AndroidかつWebViewで閲覧されている時、特別な表示を出したい
* この条件だとFacebookログインができないので、ログインボタンを押せないようにしたり注意書きを出したりしたい
* 参考 : [Android埋め込みブラウザーにおけるFBログイン認証のサポート終了](https://developers.facebook.com/blog/post/2021/06/28/deprecating-support-fb-login-authentication-android-embedded-browsers/?locale=ja_JP)
* 開発はVue.jsを利用
* 実機で動作検証もしておきたい

# 実装方法
## UserAgentの判定
UserAgentに `Android` と `wv` がどちらも含まれる場合を以下のように判定する。
参考 : [AndroidのWebViewを完璧に切り分けたい \| 曖昧/旬](http://imys.la/shun/archives/4810)

“`js
methods: {

元記事を表示

【Kotlin】SharedPreferenceの基本【書き込み / 読み出し / 修正 / 削除】

# はじめに
SharedPreferenceは今までちゃんと使ったことがなく、調べてもすぐに忘れるの繰り返しでした。
そこで、今回はsharedPreferenceの**CRUD**(Create,Read,Update,Delete)のやり方を見ながら基本を整理していこうと思います。
あくまで自分の備忘録として記していますが、もしも
* 基本的なsharedPreferenceの書き方が知りたい方
* どれがファイル名でどれがキーでどれがバリューなのかを整理したい方

のお力になれることがあれば大変幸いです。

## 実行環境
| 項目 | 情報 |
| —— | —————————- |
| PC | MacBook Pro (14-inch,2021) |
| CPU | Apple M1 Pro 10-core |
| GPU | Apple M1 Pro 16-core

元記事を表示

九州大学の非公式アプリを一カ月で作ってみた。

# はじめに

皆さんは、少し前に話題になった[九州大学アプリ](https://qu.kaedeee.com “download-link”)をご存知でしょうか?
本アプリはTwitterなどのSNSで拡散されるなどして、AppStoreにて94位を記録いたしました。[^1]
また、現在のインストール数は、九大生人口の20%を超えております。[^2]

[^1]: 日本国内の教育カテゴリーにて、2022/02/03 現在
[^2]: 九大人口を18,000人とした時に、AppStore,GooglePlay両者の総インストール数が3600を超えるため。2022/03/31 現在

![kyushu app thumbnail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1900756/f7c40c7d-81e7-0e03-99d1-6c6ca4d3eeba.png)

今回は、制作時に得た知見を共有することで、皆さんのお力になれたらと思います。
また、皆さんからいろんなアドバイスをいただきたいとも思

元記事を表示

KindleとESP32を使って高機能ディスプレイオーディオを作ろうとした

私の車は今まで中華Android搭載カーナビを入れて使っていたのですが、最近タッチパネルが全く反応しなくなり(操作するときはグローブボックスに入れているマウスでやってます)、新しくしたくなりました。
といっても最近はBluetoothオーディオ再生機としてしか使っていなかったので、適当なBluetooth対応オーディオデッキを入れても良かったのですが、それだとちょっと寂しいなと。
個人的に、Tesla Model 3みたいに、大きめディスプレイにいろいろな情報を(かっこよく)表示させて近未来的な感じにしたいと思っていました。
![](https://tesla-cdn.thron.com/delivery/public/image/tesla/d4f29128-35ad-4912-9282-32701225c77b/bvlatuR/std/1920×1080/lhd-interior-hero-desktop)

で、いろいろ考えた結果、余っているAndroid端末、ESP32、温度センサなどを使ってディスプレイオーディオ的なものを作ることにしました!!
## 構成
こんな感じです。

元記事を表示

Android12の振動のさせ方

前回API level 26以上 API level 31未満のやり方を書きました。

今回は、API level 31の振動のさせ方を書こうと思います。

# Manifestの設定

AndroidManifest.xmlでVIBRATEの許可します。

“`AndroidManifest.xml

“`

# Activity
“` MainActivity.kt
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val vibratorManager = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
val vibrationEffect = VibrationEffect.createWaveform(longArrayOf(500L, 1000L),intArrayOf(200

元記事を表示

【Android/Kotlin】モーションセンサーを検知する

# モーションセンサーとは
ほとんどAndoridには加速度計やジャイロスコープが搭載されていて、そこで検知した内容のことを総称してモーションセンサーと言います。
端末の傾き、振動、回転、地磁気センサーなど端末周りで検知している情報をとっています。
今回はこれを検知する方法を書きます。

# SensorEvent
すべてのモーションデータは多次元配列でそれぞれ取得できます。
すべてSensorEventパラメータとfloat型の値をセットで送ってくれますので、同時に全部取得して使うものだけ取り出すということが可能です。

# サポートされているモーションセンサー

## TYPE_ACCELEROMETER
x, y, z軸の加速力

## TYPE_ACCELEROMETER_UNCALIBRATED
x, y, z軸の測定加速度

## TYPE_GRAVITY
x, y, z軸の重力

## TYPE_GYROSCOPE
x, y, z軸の回転速度

## TYPE_GYROSCOPE_UNCALIBRATED
x, y, z軸の回転速度(ドリフト補償なし)とドリフト

##

元記事を表示

[android]TextViewの中のURLを動的にリンク化する方法

textViewの属性に
android:autoLink = “web” を追加するだけ。
このautolink属性は便利で
= の値を ”address” ”email” だったりにも設定できます

ですがどんな場合にも使えるわけではなく、例えばurlの後ろにスペースが空いてなければその後の文字列も全部リンク化されてしまいます。
その場合にはこちらの記事が参考になります
https://android.gcreate.jp/482/

autoLink公式ドキュメント
https://developer.android.com/reference/android/widget/TextView#attr_android:autoLink

元記事を表示

【第四回】PickUpDagashi【毎週公開!】

# この記事は
私が[Android Dagashi](https://androiddagashi.github.io/)から一つだけ記事をピックアップして読み、理解し、そして私のような初心者のAndroiderもしくはモバイルアプリ開発者が読むと仮定して、「誰でも理解できること」を目的として内容をまとめます!

今回は第三回です!

よろしくお願いします!!

# 今週のピックアップ記事
今週は、2022-03-27の記事の中からピックアップして読むことにします。

そして今回のピックアップ記事は。。。
[Exploring User Choice Billing With First Innovation Partner Spotify](https://android-developers.googleblog.com/2022/03/user-choice-billing.html)

です。よろしくお願いします!!

# Exploring User Choice Billing With First Innovation Partner Spotify
和訳:ファーストイ

元記事を表示

Flutter Hiveの使い方のメモ

# Flutterで日記アプリを作りHiveを使ったので使い方をメモする。

### 本題 日記アプリを作ったのでhiveの使い方をメモします。記事の内容について私は責任を取りません。
作ったアプリ

https://play.google.com/store/apps/details?id=jp.nuohka.itigyo.itigyo.itigyonikki

https://zenn.dev/adjaper/articles/7bc1934c938518

を参考にしました。

まず
“`yaml pubspec.yaml
hive: ^2.0.6
hive_flutter: ^1.1.0
“`

pubspecに追加。

hiveの初期化
“`dart main.dart
Future main() async {
await Hive.initFlutter();
Box? box = await Hive.openBox(‘box’);
}
“`

使い方
“`dart
box.put(“key”,content);
box.putAt(i

元記事を表示

CognitoのユーザIDを取得(Amplify, Android)

# Amplifyで認証完了後に実行
“`kotlin:
Amplify.Auth.currentUser.userId
“`

# 実装例
“`kotlin:
// session確認
Amplify.Auth.fetchAuthSession(
{
// Sessionがある場合
var userId = Amplify.Auth.currentUser.userId
binding.userId = userId
},
{
error -> Log.e(“AmplifyQuickstart”, “Failed to fetch auth session”, error)
}
)
“`

元記事を表示

BottomSheetDialogFragment + GoogleMapで表示が崩れる問題を解決する方法

# はじめに
今回はBottomSheetDialogFragmentの中にGoogleMapを実装した際に発生した問題の解決方法を紹介します。

# 発生した問題
下記の動画のように、BottomSheetDialogFragmentをバックキーで閉じる際に、GoogleMapの表示が崩れるという問題が発生しました。

# 実装概要
実装していたコードの概要は下記の通りです。
GoogleMapには[googlemaps/android-maps-compose](https://github.com/googlemaps/android-maps-compose) を使用していました。

“`BottomSheetFragment.kt

override fun onCreateView(

元記事を表示

EditTextとTextViewを組み合わせて金額入力風なUIを実装してみる

### はじめに
このようなUIを表現しようと思い、実装を試みたところ以外と面倒臭かったのでログとして残しておこうと思います。
2022-03-31 19.28.38.png
まず、EditTextで単純に実現ができるかなと思ったところ、先頭にある通貨表記や3桁ごとに入る`,`の対応を考えたところ`edittext.addTextChangedListener`を使って入力された値を監視して実装をしようと思ったのですが、結構苦戦しました。まず金額なのでInputTypeが数値になるのですが、通過表記や`,`を入れるため入力をパースして1つ目を入力されたら通過表記をいれ、3桁目には`,`をいれれば良さそうですが削除が入ったりするとどうもうまくイメージ通りに動作しませんでした。

### どうしたか
`edittext

元記事を表示

AWS Amplifyを用いたAndroidでのGoogle認証

# Google認証プロバイダーの作成
以下のAmplifyのドキュメントを参考に実施してみました。
https://docs.amplify.aws/lib/auth/social_signin_web_ui/q/platform/android/
## 同意画面の作成
1. Googleデベロッパーコンソールを開く
https://console.cloud.google.com/apis/dashboard

1. [▼](プルダウン)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162829/50758d14-79e3-cbd7-b28f-1d3a3c9aa52b.png)

1. [新しいプロジェクト]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162829/ae5a4ef3-4afb-a2bd-97f8-ab4579224b50.png)

1. [プロジェ

元記事を表示

【ユーザーインタラクション編】 2022年だしそろそろAndroidアプリ開発を始めてみる (4/4)

この記事はPart4です。Part3(API通信編)は[こちら](https://qiita.com/tkhskt/items/e491f389ff9ba0563fda)をご覧ください。
Part4では、ユーザーが入力した値を使って記事を検索する機能を実装します。

## レイアウトの編集

`MainActivity`のレイアウト(`activity_main.xml`)に入力フォームと検索ボタンを追加します。

“`xml

【API通信編】 2022年だしそろそろAndroidアプリ開発を始めてみる (3/4)

この記事はPart3です。Part2(UI実装編)は[こちら](https://qiita.com/tkhskt/items/f354a7da6c6270107f62)をご覧ください。
Part3では、Web APIからデータを取得してアプリに反映させます。楽しくなってきた。

## Web API通信実装の準備

Web APIからデータを取得するため、いくつかのライブラリを導入します。
`app/build.gradle`にライブラリの設定を追加します。

“`gradle

dependencies {
….

// REST APIを使うためのライブラリ
implementation ‘com.squareup.retrofit2:retrofit:2.9.0’

// JSONをKotlinのオブジェクトに変換するためのライブラリ
implementation “com.squareup.retrofit2:converter-moshi:2.9.0”
implementation “com.squ

元記事を表示

【UI実装編】 2022年だしそろそろAndroidアプリ開発を始めてみる (2/4)

この記事はPart2です。Part1(環境構築編)は[こちら](https://qiita.com/tkhskt/items/084e451c9ba5c9c1cf21)をご覧ください。
Part2では、実際にアプリを作り始めます。
データをごにょごにょするよりも、先に見た目がいい感じになる方がテンションが上がると思うので、UIの実装から始めます。

## UI実装の準備

### AndroidManifest.xml

そういえばUI実装の前にやっておかなきゃいけないことがありました。
今回作成するアプリでは、インターネット上にある画像を表示します。
インターネット通信を使用するAndroidアプリでは、`AndroidManifest.xml`に設定を追加する必要があります。(インターネット通信を使用しないアプリでは設定不要です)

`AndroidManifest.xml`は`app/src/main`にあります。

![スクリーンショット 2022-03-29 2.11.41.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

【環境構築編】 2022年だしそろそろAndroidアプリ開発を始めてみる (1/4)

この記事は、Android開発の難しい部分を端折ったゆる〜いチュートリアル記事です。
この記事でAndroid開発に興味を持ってもらえたら泣いて喜びます。
この記事はPart1です。Part1では、Androidアプリを開発するための環境構築をします。

## 対象者

この記事は「Androidアプリ作りたいけど難しそうだな〜」と感じている人向けです。
多少のプログラミング経験と、JavaやKotlinをある程度理解していると進めやすいと思います。

## ゴール

この記事では、MediaWiki APIを使用して、Wikipediaの記事一覧を表示するアプリを作成します。

この記事で作成するアプリのコードはGitHubで公開しています。
https://github.com/tkhskt/WikiClient

> 記事内で登場するコードではimport文などは記載していないので、各ファイルのimport文はGitHubに公開しているサンプルを参考にしてください。

実装する機能はざっくりこんな感じです。シンプルですね。

– 記事のリスト表示
– 記事の検索

技術的なポイン

元記事を表示

ComposeViewとAbstractComposeViewの使い分け

ここ最近採用されることが多くなってきたJetpackCompose(以下Composeと呼びます。)ですが、xmlで作成していたり、Javaで記述されているような既存UIを一括で移行していくことは難しい場面が多いです。

そこで、[GoogleDevelopersの記事](https://developer.android.com/jetpack/compose/interop/compose-in-existing-ui?hl=ja)でも紹介しているような、部分的にCompose移行していく方法が挙がってくるかと思います。

方法としてはComposeViewを使う方法と、AbstractComposeViewを使う方法と2パターンあります。
いざコーディングしてみると、両者ともやっていることは「Composeを既存UIに当て込むための橋渡し」であり、使い分けの判断がよくわかりませんでした。

色々記事を読んだり、色々実装を試してみた上で、「こういうことかな?」という使い分けの判断を持つことができたので、メモ書きしておきます。

# 結論(個人的見解)
### AbstractC

元記事を表示

OTHERカテゴリの最新記事