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

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

クソデブだった僕のプラトー現象を救う為にAndroidアプリを作った話

[クソアプリアドベントカレンダー2022 13日目](https://qiita.com/advent-calendar/2022/kuso-app)を担当させていただきます[たかぎとねこ](https://twitter.com/takagimeow)です。

このアドベントカレンダーのテーマはご存知の通りクソアプリです。

なので、**クソ**デブだった僕がダイエットの停滞期を迎えた時に、モチベーションを落とさない為に作り続けた**アプリ**(略してクソアプリ)の開発からリリースまでの経緯を紹介をしようと思います。

## TL;DR

今回リリースしたのは「トレメモ」というアプリです。Google Play Storeでのみ配信中ですので、Androidユーザーの皆様には、ぜひご利用いただけると嬉しいです。

https://play.google.com/store/apps/details?id=com.takagimeow.trainingnoteapplication

## ダイエットを決意したきっかけ

振り返れば今年の1月、夜中に松屋の牛めしを1杯とセコマのおにぎり

元記事を表示

Issue Tracker で Google へ問い合わせてみた

# 目的
– Androidアプリ開発において開発環境で不具合動作があったため、[Google Issue Tracker][link0] へ投稿しGoogleの中の人とやり取りしたので、投稿方法やその後の対応につきまとめる。

# 環境
– OS:Windows10 Professional 22H2
– Android Studio Dolphin 2021.3.1 Patch 1

# 概要
– [Google Issue Tracker][link1] はGoogle のバグトラッキングシステムであり、対象となるシステムは今回説明するAndroid開発に限らず、Google が Issue Tracker をツールとして使用することを認めた製品である。
– Issue Tracker は、Google製品一般のフィードバック収集用の汎用ツールではないため、Google製品であれば何でも問題点を投稿できるものではない。詳細は[こちら][link0]。
– 今回見つけた問題点は、Android Studio 内の AVD Manager からエミュレータ起動した際の不具合動作で

元記事を表示

Proto DataStoreを使ってみる

# Proto DataStoreとは
ProtoDataStoreは、SharedPreferencesに変わるデータストレージであるDataStoreの一種であり、**Protocol Buffersを用いてプリミティブ型以外も保存できる**という特徴があります。

# SharedPreferences, PreferencesDataStore, Roomとの比較
[DataStoreに関する公式ドキュメント](https://developer.android.com/topic/libraries/architecture/datastore?hl=ja)では、
>現在 SharedPreferences を使用してデータを保存している場合は、DataStore に移行することを検討してください。
>
と説明されており、DataStoreは、**小規模な永続的なデータを保存する際** に用いられていたSharedPreferencesの代わりとして使うことが推奨されています。

## SharedPreferencesの代わりにDataStoreを使用すべき理由
なぜSha

元記事を表示

【Jetpack Compose】可愛いBottomNavigation

# はじめに
この記事は[AdventCalender2022 Android](https://qiita.com/advent-calendar/2022/android)の12日目となります。

何を書くか悩みましたが、Jetpack Composeの勉強の一環として、既存アプリを模倣してみたいと思います。今回模倣するアプリは、[東京都水道局アプリ](https://play.google.com/store/apps/details?id=jp.lg.tokyo.metro.waterworks.suidoapp&hl=ja&gl=US)のBottomNavigationBarです。
BottomNavigationBarがとても可愛いので、`Layout`や`Animation`の練習がてら、Composeで作ってみたくなりました。
成果物は下記です。
https://github.com/goutarouh/WaterworksBureauClone

なお私は当該アプリの開発などとは一切関係ありません。
(引っ越しを機に当該アプリを使い始めた利用者の一人です。)

#

元記事を表示

RecyclerViewのスクロールを減速させてふわっと着地させる方法

RecyclerViewのスクロールをふわっと着地させる方法の紹介です。
サンプルコードも掲載しますが、完全なコードはこちらにあります。list表示にGroupieを使っていますが、本記事では解説しません。
https://github.com/takarabe-hamuyatti/EasingTest
### 最終イメージ
![ezgif.com-gif-maker (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1816697/1d5b2491-161d-7f8f-1dc2-8ecdc152a6e6.gif)

### 減速させるためには
![dt_decel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1816697/e4df5c4c-542e-a4e2-760e-a5e34171fdbe.png)
目的地に到達する辺りで望んだ通りに減速させるということは、時間あたりに進ませる距離を事前に指示するということ

元記事を表示

Jetpack Composeで汎用的なAlertDialogを実装してみた

:::note info
これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー Vol.5 の 12日目の記事です
:::

Java, Kotlin, Jetpack Composeのそれぞれで作られた画面で同じデザインのAlertDialogを使用したいケースがあったので、Jetpack ComposeのAlertDialogを使って汎用的に使いまわせるDialogFragmentを作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484337/d033df27-63b1-f098-c640-d8bad1073470.png)

## 概要
– AndroidViewsとComposeで使用するAlretDialogを共通化する
– 呼び出し元からテキストやボタンタップ時の処理を設定できるようにする

## Jetpack Compose内でのダイアログ
C

元記事を表示

Android機械学習入門

# Androidアプリにおける機械学習概要
アプリ開発における機械学習(ML)は、アプリがアプリ内の体験や経験に基づいて、学習と改善を自動的に実行できるようにします。
Androidでは、機械学習用のさまざまなツールと手法がサポートされています。
Android用MLアプリの開発でやることは主に以下の4つです。
1. 機械学習対応の設計: 製品の目標を明確にして、MLのデザインパターンを活用し、設計を行う
2. モデルの構築とトレーニング: MLモデルを作成するか、既存の学習済みモデルを追加する
3. 推論: Android端末またはクラウド上で動作する学習済みモデルを使用してデータを分析する
4. デプロイ: アプリのMLモデルのインストールと更新をする
## 機械学習対応の設計
製品の目標を明確にして、それを達成するためにMLのデザインパターンを活用し、設計を行います。これを繰り返し行う必要があります。
詳細を知りたい方は、Googleでは機械学習に関する2つのガイドがあるので、そちらを参照ください。
– [人間と AI に関するガイドブック](https://design.go

元記事を表示

JetpackComposeでテキストサイズを固定(dp指定)して端末の設定でテキストの大きさを変更しても依存しないようにする方法

今回はJetpackComposeで端末の設定でテキストの大きさを変更してもテキストのサイズを変えたくない場合があったので、この方法を忘れないように残しておこうと思います。

# リファレンス

https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density

# 実装方法
dpをspに変換して設定してあげれば良いのではないかと考えたので、変換方法を調べたところ上記リファレンスにリンクのある`Density`が見つかりました。
ではdpをspに変換して設定してみようと思います。

“`TextSizeDemo.kt
@Composable
fun TextSizeDemo() {
val density = LocalDensity.current
Column {
Text(
text = “文字サイズ変わらない”, fontSize = with(density) { 14.dp.toSp()},
)

元記事を表示

【Android】 RxJavaでsubscribeOnとobserveOnの違い

# はじめに
一度調べて使った後に、もう一度使おうとして全然覚えてなかったので
自分の中で整理しながら記事にしてみようと思いました

# subscribeOn
subscribeされたときのスレッドを先頭から指定する
subscribeOnを複数設定したときには最初に設定されたものが使われる

# observeOn
observeOnされたときからそれ以降の処理をどのスレッドで行うかを指定する
同じスレッド内で複数回使われることがある

# 参考
https://www.kimullaa.com/posts/201806231026/#observeon

https://chiiia12.hatenablog.jp/entry/2018/11/11/134612

https://qiita.com/hatt0519/items/c8875f822b752a188956

# おわりに
使い分けとしては通信などの時間のかかる非同期処理を行う場合はsubscribeOn
UI関係などの処理を行う際はobserveOn(UI関係での非同期処理はクラッシュの原因になることもあるので

元記事を表示

ZOZOTOWN Androidアプリホームバナーの実装をざっくり紹介

この記事は[ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo)その4の11日目の投稿です。本稿では、ZOZOTOWN Androidアプリホームバナーの実装を紹介しようと思います。

# 概要

ZOZOTOWNは2021年の3月にリニューアルしました。Impressさんの記事はこちら。

https://www.watch.impress.co.jp/docs/news/1312917.html

リニューアルにあたり、ホーム画面を新規で開発しています。本投稿では、このホーム画面に表示されるバナーの実装について紹介します。

image.png

# ホーム画面の実装

まずホーム画面全体の実装について紹介します。ZOZO

元記事を表示

qiita始めてみた!(始めて数週間の初学者)

javaとawsとandroid studioを学習中!
覚えることは山ほどあるけどがんばります!
ところで「amazon web services 基礎からのネットワーク&サーバー構築」
という本は初学者にはハードルが高いのかな?完璧に読む必要がないだけ?
「エンジニアはめんどくさがりで効率を求める」とかよく聞くけど、基礎を勉強するうえでめんどくさいことは
避けては通れそうにないのかもね…
環境:windows10
基礎学習済:html,css,js,react,git,github,コンソール操作,SQL
(コンピューターはmacに変えたほうがいい?)

元記事を表示

【Android】画像読み込み時にヘッダー情報を付与する方法 by Picasso

# はじめに
画像を非同期で読み込むライブラリは複数ありますよね。
最近はコルーチンを利用したcoilがよく使われている認識ですが、Picassoやglideもまだまだ現役かと思います。
そんな中でも今回はPicassoに関して、OkHttpライブラリと組み合わせて画像取得時に認証情報などのヘッダー情報を付与する方法を簡単にまとめたいと思います。

# ヘッダー情報を付与する方法
実装としては以下になります。

“`
override fun onViewCreated(
view: View,
savedInstanceState: Bundle?
) {
val builder = OkHttpClient.Builder()
.authenticator { route, response ->
response.request.newBuilder()
                         // 任意のヘッダー情報を設定してください
.addHeader(
“AU

元記事を表示

【Android】Module Graph Assert プラグインでマルチモジュールを健全に保つ

# はじめに
モジュール分割することで、各機能の依存関係をクリーンに保つことができます。

ただ、**モジュール分割されたものを正しく使わなければ、簡単に依存関係をゴチャついたものにできたりもします。**
例えば `:module1` と `:module2` があり、本来の設計思想として両者が依存しないようにしたいのに、下記の1行を追加することで簡単に `:module1` から `:module2` への依存関係を作り出すことが出来てしまいます。

“`gradle:module1/build.gradle
implementation project(“:module2”)
“`

それを防ぐためには、設計思想を開発者全体に行き渡らせ、意識することが大切になってきますが、そもそも間違った依存関係を作り出せないようにできたらそれに越したことはありません。

# Module Graph Assert

モジュールの依存関係にルールを作ることができるプラグインです。

https://github.com/jraska/modules-graph-assert

ざっくり説明する

元記事を表示

ImageLoaderとCompose

bitFlyerでAndroidプロダクトを担当しています藤原です。
最近はガンダムエボリューションばかりやってます、メイン機体はザクⅡ(射撃)を使っています。いやー面白いです。

さてさて、突然ですがみなさんCompose書いてますか?
弊社Androidプロダクトでは少しずつですが移行を進めています。

Compose化を検討しだした辺りで弊社ではImageLoaderをGlideからCoilに移行しました。
ComposeでのImageLoaderですが、Coilを使うのが一般的と思われます。公式ドキュメントでも画像読み込みにはCoilの例が挙げられています。CoilはもともとAccompanitに含まれていたので当然かもしれませんが。
今更ですが、CoilをComposeで使うとこんな感じです。

“`kotlin
@Composable
fun CoilImage() {
val painter = rememberImagePainter(
data = “https://picsum.photos/300/300”,
builde

元記事を表示

Android Jetpack Composeを試してみた

# はじめに
[CYBIRD Advent Calendar 2022](https://qiita.com/advent-calendar/2022/cybird “CYBIRD Advent Calendar 2022”)の11日目担当の@chikako_ikedaです。
スマホアプリを専門に担当するチームにてAndroid側の担当をしています。
10日目は@kyukkyu81さんの「[クリスマスの夜に向けて密かに歌を練習するアレクサ](https://qiita.com/kyukkyu81/private/569c6b84be6e7687b068 “クリスマスの夜に向けて密かに歌を練習するアレクサ”)」でした。
まさか、アレクサに歌を歌わせることができるとは…昨年よりもパワーアップしてますね!

# 概要
最近のAndroidアプリ開発の動向を追っている方であればご存知かもしれませんが、Googleから「JetPack Compose」というコンポーネントが正式リリースされました。
このコンポーネントは、**素早くデザイン込みの開発**ができることが売りとなっています。
とても良

元記事を表示

5分で出来るCompose風画像編集機能

Androidで、できるだけ簡単に画像編集機能を作成したい。
できればUIは自分で弄りたい。
更にできればUIはXMLではなく、Composeで作成したい。

という方法をこれから説明致します。

まず、画像編集機能はこちらのライブラリを利用します。
https://github.com/burhanrashid52/PhotoEditor

PhotoEditorでは画像編集機能を持ったViewを提供してくれて、
描く、文字表示、消しゴム、フィルターといった機能が実現できます。
PhotoEditorの良いところは機能のみを提供してくれてそれを実現するUIは利用側が好きに作ることができるところです。

PhotoEditorを使用する方法をざっくり説明すると、
PhotoEditorViewという専用のViewをXMLレイアウトにセットして
PhotoEditorViewとContextからPhotoEditorを作成します。
そのPhotoEditorに対して設定を行うことで描く、文字表示、消しゴム、フィルターといった機能を利用できます。

Jetpack Composeにはご

元記事を表示

【Jetpack Compose】List型のMutableLiveDataがViewに発火しない原因はこれだった

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77444/59e03f96-cf52-3f7e-352f-79ecf8a5fef3.png)

しばしハマってしまったのですが、原因がわかったらそらそうだ!となったメモです。

# List型の要素が追加されたらViewを更新したい
MutableLiveDataにList型を入れて、要素が追加されたらViewを更新しようとするサンプルです。

“`kotlin:kotlin
class SampleViewModel : ViewModel() {
val items = MutableLiveData>(ArrayList())
var counter = 0

init {
add()
}

fun add() {
counter++
items.value?.add(counter.toString())

元記事を表示

【Android】Jetpack DataStoreの単体テストをサクッと行ってみた

# はじめに
皆さん、ごきげんよう!れぶです!

今回の記事では、SharedPreferencesの代替策である`Jetpack DataStore`に関して、基本的な単体テストの手順を整理します。

**Preference DataStore(以降、DataStore)を用いた値の読み書きを単体テストレベルで検証したい方**に特に参考になればと思います。それでは、参りましょう!!

# 開発環境
* MacBook Air
* Android Studio Dolphin | 2021.3.1
* Kotlin
* compileSdkVersion 33
* targetSdkVersion 33
* minSdkVersion 21
* Jetpack DataStore 1.1.0-alpha01

# 前提
Boolean値を読み書きするDataStoreを対象とします。“saveLaunch()“の呼び出し前後で、保存された値が正しく変更できているかをテストします。

“`LaunchDataStore.kt
val Context.dataStore: Data

元記事を表示

iPad/Androidから仮想デスクトップを使いたい【Azure Virtual Desktop活用】

# Azure Virtual Desktopを活用しよう

こんにちは。Minecraft Education Edition の記事の続きになります。

https://qiita.com/mana_cat/items/b62b4fb5c11086ff3ed6

## AVDのメリット

### BYOD端末接続時のセキュリティ確保にも

様々な端末でWindowsを楽しみたい。または、Windowsに固定して、セキュリティポリシーを統一化したいなどの観点から、Windowsを標準OSとして使うパターンがあります。構成管理も一元化できますし、端末のセキュリティ設計について十分な対策ができるメリットがあります。

接続元が macOSでも、iPadでも、Androidでも、接続先の仮想デスクトップにWindowsを入れて活用できるサービスがあるんです。
そう、その名も「Azure Virtual Desktop」(以降、AVD)

様々な用途で楽しむことができると思います。楽しみ方は無限大なので、ぜひご活用下さい。

– macOS/iPad/Android から W

元記事を表示

Flutter・webViewで、Webサービスをモバイルアプリ上に実装し、個別通知機能を追加した話

# ? はじめに ?
アドベントカレンダー参加したいなということで・・・
今日は、「Flutter × webView で開発したサービスに個別通知機能を追加」した話をします。
同じような境遇の方がいたら、ぜひ実装方針参考にしてみてください。
また、他の方法がある方はアドバイスお願いします。

# ? 背景 ?
現在、会員制ECサービス Pantrii のバックエンド兼クライアントエンジニアをやっています。
こちらのサービスは「オンライン版コストコ」というキャッチフレーズで活動しています。

https://prtimes.jp/main/html/rd/p/000000005.000084659.html

こちらのECは主にアプリ利用をメインターゲットにしており、開発に Flutter を用いています。
是非、記事を読む際に、下記からアプリをダウンロードして触りながら読んでみてください。
– [iOS](https://apps.apple.com/jp/app/pantrii-%E3%83%91%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC-%E3%82

元記事を表示

OTHERカテゴリの最新記事