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

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

ion-searchbarでcloseボタンのアクションをユーザフレンドリーにする方法

Ionic Frameworkを使っていると、 `ion-searchbar` を利用する場面も多いでしょう。多くのリストから絞り込む用途に使われることがほとんどなのですが、実際ユーザとして使っているとひとつの問題があります。それは、closeボタンを押下しても、 `ion-searchbar` にフォーカスされたままの状態になることです。

![49f09cc0f0d654254dcda801df5f32aa.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100460/b32ff1ba-d2cf-be8c-1bac-2e22a7d9ad41.gif)

closeボタンを押下しても、カーソルが残っていることがわかるかと思います。これは外部キーボードを利用している時は問題になりませんが、モバイルデバイスでオンスクリーンキーボードを利用してる時は問題になります。

__closeボタンを押下してもオンスクリーンキーボードは立ち上がったままです。__

もちろんこれにはシナリオが2つあります。

– 入力内

元記事を表示

Jetpack Compose + MVVM + Hilt で高田健志の伝説アプリを作りたい

はじめまして。
ひっそり未来大でM1やってます。ゆめと申します([Twitter](https://twitter.com/YkOxc), [Instagram](https://www.instagram.com/yume.223/))。
本記事は、[FUN Advent Calendar 2022 part2](https://adventar.org/calendars/7426)の5日目の記事です。

アドカレに便乗して、初めての技術ブログを書きたいなと思い、参加させていただきました。最近触った技術の備忘録を書こうと思います()。

ブログを書くの初めて+Androidよわよわの人なので、不備や間違い等がありましたらご指摘いただけると喜びます。

# 1.はじめに
筆者は最近Jetpack Composeの勉強を始めました。
Composeで〜、MVVMで〜、API叩いて〜、それをRoomに保存して〜、なアプリを作ろうと手を動かしていると、「composeの場合、引数があるViewModelはどう実装するのだろう」と、悩んでしまいました。
色々なサイトを参照したのですが、**み

元記事を表示

コード上でConstraintLayoutのMATCH_CONSTRAINTを指定する

こういうやつをConstraintSetで指定したい

“`.xml

“`

`constrainWidth`と`constrainHeight`を使う↓

“`.kt
val constraintSet = ConstraintSet()
constraintSet.clone(layout)
constraintSet.constrainWidth(view.id, ConstraintSet.MATCH_CONSTRAINT)
constraintSet.constrainHeight(view.id, ConstraintSet.MATCH_CONSTRAINT)
constraintSet.applyTo(layout)
“`

元記事を表示

昨今の厳しいセキュリティ要件を満たすドキュメントキャプチャアプリを作った

[クソアプリアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/kuso-app) 6日目です。

セキュリティインシデント怖いですよね。そんな昨今のセキュリティ事情を考慮に入れたドキュメントキャプチャアプリ「[SecDocCap](https://play.google.com/store/apps/details?id=com.gonsuna.documentcapture)」を作成しました。
Androidアプリです。iPhoneユーザーの皆様すみません。デモだけでも見ていってください。

デモがこちらになります。

![Screen_Recording_20221205-120153_Sec_Doc_Cap_AdobeExpress (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259118/c2087510-1961-895b-8ce7-422abf9e2fcb.gif)

1. ドキュメントを撮影します。
1. 斜めから撮影し

元記事を表示

Androidで「ロジックとデータの一体化」を実践してみた

# 「ロジックとデータの一体化」とは
以前、私が所属するコミュニティでプリンシプルオブプログラミング輪読会を行なっていました。
プリンシプルオブプログラミングとはその名の通り、プログラミングをする上で原理原則となるような概念や知識が書かれている名著です。
その本の3.7章(p74)に「ロジックとデータの一体化」というテーマがあります。
その章の内容を要約すると以下の通りです。

– データとその操作は近くに
– ロジックとデータをコード上で近くに配置する
– データと操作は修正タイミングが同じだから

# 当時の私
この章を読みたての頃は、自分の経験に落とし込めていなかったので、あまりよく理解できていなかったです。
具体的にはこのような疑問が頭に浮かんでいました。

– この文脈でいうデータってなに?
– ロジックって例えば?
– 近くに置くってどういうこと?

# Androidで言うとこういうこと!

最近個人開発をしていて、やっと経験に落とし込めたので共有します!
結論から言うと、「ロジックとデータの一体化」はUIStateを適切に実装する上で必要な考え

元記事を表示

Androidでアプリ外のスクリーンショットを撮る

# はじめに
Androidアプリで他のアプリやホーム画面などのスクリーンショットを撮りたい事案が発生したので、やり方を記しておきます。

# 動作環境
Kotlin 1.6.21
AndroidStudio Bumblebee(2021.1.1)
CompileSdkVersion 32

# 注意点
設定アプリでは画面上にViewを出せないので、この記事の方法ではスクリーンショットを撮れません。

# サンプルアプリ
記事内では説明のため省略している箇所がたくさんありますので、実際に試す場合はぜひサンプルアプリを見てみてください。
[ScreenshotOutsideApp](https://github.com/mizu9855/ScreenshotOutsideApp)

# 実装
## Permission設定
AndroidManifestに以下のPermissionを追加しておきます。
“`AndroidManifest.xml

元記事を表示

スマホアプリのUIデザイン指示書のすゝめ

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

# はじめに

こんにちは、今年の4月にZOZOに中途入社した@inokinnです。

会社やチームといった環境によって仕事の進め方は千差万別ですが、デザイナーさんからエンジニア向けのデザイン指示のやり方も例外ではなく、手法は多数あるかと思います。
本記事では、これまでの私のスマホアプリの開発経験から、実装する側から見たデザイン指定について分かりやすく、議論や実装を進めやすいと感じたやり方について本記事にて紹介していきます。
ここで挙げる内容はデザイナーだけではなく、エンジニアや企画も含めて案件の進め方として検討すべきことだと思っています。

人によっては「そんなの当たり前じゃん」と感じるような内容も多く含まれるかもしれませんが、お付き合いいただけると幸いです!

# 1. アプリ内で利用するカラーがすべて定義され、命名されているとうれしい

私が担当したとある新規

元記事を表示

?Processing for AndroidでARお寿司爆弾を実装する

# はじめに
この記事は[クソアプリ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kuso-app) の3日目の記事です。
投稿が遅れてすみません(土下座)

今回はProcessing for AndroidのAR機能を使ってお寿司爆弾を作りました。
具体的には、**「スマホカメラから取り込んだ現実世界の映像にARでお寿司の3Dモデルを重ねて配置して、一定時間が経過するとお寿司のネタが吹っ飛ぶ」** というAndroidアプリを作成しました。
「作る目的は?」とか「どんな役に立つの?」とか、そんな問いはクソアプリ開発には無用でしょう!
考えすぎて我に返る前に完成させられるかが勝負です。では参りましょう!

# 完成品?
とりあえず完成品をご覧ください。
![osushi_single_low_2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/828745/196c6878-55ca-448c-ca4f-31325d9fa22

元記事を表示

suspend関数ってなに?

# はじめに
今回はKotlinを使っていて自然と目にしていたsuspend関数について記事にします

# suspend関数
suspend関数とは コルーチンを使用する中で非同期の処理を書き込む関数です
ですが、suspendを関数の修飾誌子としてつけられた関数内の処理が自動的に非同期になるわけではないので、非同期で実行したい場合は**明示的に**非同期処理を指定する必要があるようです。
では、suspend関数では何ができるのかというと
**別のsuspend関数を呼び出すことができる**非同期処理の仕組みをもった関数の事です。

# 参考
[Kotlin の Coroutine で suspend 関数を理解する](https://qiita.com/duke105/items/b5be074c79c6bed4d560)
[Kotlin v1.7.21](https://kotlinlang.org/docs/flow.html#suspending-functions)
[KotlinによるAndroidの非同期処理](https://codezine.jp/arti

元記事を表示

【Android】ライフサイクルのオーバーライドが非推奨になっていた話

# はじめに
長いことFragmentやActivity上でonResumeやonPauseなどのライフサイクル関数をオーバーライドするというのが習慣となっていましたが、こちらが非推奨になったようです。
こちらに関して簡単にまとめたいと思います。

# ライフサイクルのオーバーライドが非推奨になった
[公式](https://developer.android.com/topic/architecture/recommendations#lifecycle)のベストプラクティスには、以下記載があります。
![スクリーンショット 2022-12-04 17.07.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/3cd199b0-5da6-d354-43b8-c25860f6aba9.png)
上記には**強く推奨**とあり、少々圧を感じますね、、、
実装的には以下のように変わる形となります。

Before
“`
override fun onPause() {
super.o

元記事を表示

Minecraft Education Edition の個別ライセンス活用について

# Minecraft Education Edition について

Minecraft Education Edition (以降、Minecraft EE) は、教育目的に提供されているマインクラフトで、Windows、macOS, iPad OS, Androidなど複数OSでアプリが提供されています。

Minecraft EEについて、まずはどんなものか知りたい人は以下のMinecraft Learnで無料で学習できます。

https://learn.microsoft.com/ja-jp/training/paths/minecraft-teacher-academy/

https://learn.microsoft.com/ja-jp/training/paths/microsoft-esports-teacher-academy/

## Minecraft Education Edition で個別ライセンスが購入できるようになりました

Minecraft EEが通常のMinecraftと異なる点は、ライセンス体系です。アプリストアから課金するのではなくて、M

元記事を表示

AAudioの実力を測る

 Googleが開示しているAndroid開発ガイドによれば、AAudioの章で、「GitHubで入手可能なオープンソースoboeライブラリの使用」を推奨?していたので、oboeを下敷きにして音声アプリを作った。その結果、以前に使用したことのある「AudioRecord/AudioTrack」というAPIと比較して格段にレイテンシが改善されていることを確認した。下図に示す通り、マイク入力→イヤホン出力までの時間を計測すると、一桁改善していることがわかる。
 当方のアプリは、音声をトランペットの音に変換するものであり、演奏時の応答性の観点では、「まあメロディ系なら及第点はあげられるかな」という感触である。しかし、ドラムやピアノなどのリズムセクション系の楽音は、数msecオーダーに改善する必要があるだろう。
![AAudioの実力.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659855/21183a0e-bdb0-a280-a783-5a43c7653fcd.png)

元記事を表示

MutableStateFlowのupdate()とvalueの違いについて

こんにちは。
[bitFlyerのAdvent Calendar](https://qiita.com/advent-calendar/2022/bitflyer) 4日目の記事です。

当日に締め切りに気付いて大慌てでKMMについて書こうとしたのですが、iOSの環境構築(M1へのpodの導入、実機デバイスへのインストールなど)でどハマりしてしまい・・・
なんとか解決したのですが気付いた頃には現在21時、題材変更を決めました。

今回は __MutableStateFlowのupdate()とvalueの違いについて__ 書きたいと思います。

皆さんはStateFlowを使ったことはありますでしょうか。
実は私はずっとLiveDataを使っていて、初めて使ったのは一年半前だったりします。

ところで、LiveDataの値を書き換えるときは
“`kotlin
_liveData.value = “updated value”
“`
こんな風に書きますよね。
でもメインスレッド以外でこれをやると落ちるので
“`kotlin
_liveData.postValue(“updated

元記事を表示

急遽Androidエンジニアになった時にインプットすべき内容について

[ディップ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/dip-dev) 4日目の記事です。

# はじめに
筆者は現在Androidエンジニアです。
なった経緯は前職でiOSエンジニアとして採用されたが、入社4日目に
「Androidエンジニアとして働いてくれないか」
と言われ、言語含め全く未経験の状態から転向したというものになります。
当時はキャッチアップの時間やフォローの体制がない中プロダクトのソースコードと作業指示を与えられ、どう進めて行けば良いのかわからず困り果てていた記憶があります。

「今の自分なら喰らいついて生き残るには、何をどうキャッチアップするだろうか」を記事にします。

# ターゲット
– 実務独学問わず別分野の開発経験はあるが、Androidは全くの未経験の人。
会社により環境が異なりますが、ここでは
「キャッチアップの時間をほとんど与えられておらず、自分でなんとかしないといけない」
状況を想定。

– (サブターゲット)モバイルエンジニア未経験者として実務で何をインプットすれば良いか

元記事を表示

Github Actions + PythonでGoogle Playの段階リリース状態をチェックする

この記事はand factory.inc Advent Calendar 2022 4日目の記事です。
昨日は @ticktakclock さんの [【Jetpack Compose】特定の条件のときだけModifierを追加したい](https://qiita.com/ticktakclock/items/9998a94e92c7c13df70a) でした。  

# 背景
AndroidアプリのアップデートをGoogle Playへ公開する際、[段階的な公開](https://support.google.com/googleplay/android-developer/answer/6346149?hl=ja)を利用して一定の割合のユーザーにのみアップデートを提供し、その割合を徐々に上げていくリリース方法をとるプロダクトは少なくないと思います。
Google Playの段階的な公開の割合は手動で変更する必要があるため、短いサイクルで頻繁にリリースを行っていると割合の変更をつい忘れてしまうことがありました。

現在公開されているアプリの状態は[Google Play Andr

元記事を表示

アクセシビリティに配慮したモバイルアプリの作り方(開発視点)

# 初めに

**アクセシビリティは開発で無視されがち**ですが、やり方がわかれば、アクセシビリティに配慮するのはそこまで難しいことではありません。

この記事ではアクセシビリティに配慮したアプリの作り方を例を交えながら説明します。

# アクセシビリティに関して

## アクセシビリティの定義

この記事で言うアクセシビリティに配慮するというのは、**スクリーンリーダー(TalkBack / VoiceOver)による読み上げと操作**に対応することを指します。

正確に言えば、認識しやすい色の使い方や小さすぎない文字サイズなどもアクセシビリティに含まれますが、デザインに関わる部分はここでは取り上げません。

## アクセシビリティの基本原則

### 1. 説明の文字がないかつ意味を持つ要素に対しては説明ラベルを指定する

説明の文字がないですが、その要素自体は意味を持つ場合は説明ラベル

– Android: contentDescription
– iOS: label / accessibilityLabel

を指定すべきです。

注意する必要があるのは、要素自体が意味を

元記事を表示

今話題のChatGPTと一緒にAndroidアプリを作ろう!

これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー Vol.2 の 4 日目の記事です。
昨日の投稿は @ssssota さんの「[JSON SchemaのanyOfをTypeScriptの型で表現する](https://qiita.com/ssssota/items/7e05f05b57e71dfe1cf9)」でした。

[ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) をご覧のみなのもの〜!
おはこんハロチャオ~!ZOZOでAndroidアプリ開発を担当しております。 @umsys です。

お察しの通り最近はポケットモンスタースカーレット・バイオレットにハマっています。
ナンジャモさんかわいいですね。

さて、今回は今話題の[ChatGPT](https://openai.com/blog/chatgpt/)と一緒にAndroidアプリを作ってみました!
AIによる仕事の

元記事を表示

[Android][ADB] adb devices unauthorized の修正法

# 概要

Android 実機をmacに繋ぎ 実機debugしようとしたが
adb に認識されない ( 以下

“`
$ adb devices
List of devices attached
R58NC0HZ64J unauthorized
“`

# 原因

一般にAndroid実機に繋ぐと `USB接続を許可しますか` dialogが出る

(なんらかの理由で) 今回はそれが出てない

# 解決法

とりあえず以下をやってみる:

“`
rm ~/.android/adbkey
adb kill-server
adb start-server
“`

でUSB繋ぎ直してみる…

->
Android実機のSettings -> developer options

で `allow USB debug` を許可済み 確認をし
`Revoke USB debugging authorization`
でrevoke もしてみる

それでもだめなら
`Developer options` 自体をoff
にする

私(今回)の場合、
onにしたところ再度許諾のd

元記事を表示

Androidのレイアウト、バリア(barrier)の使い方

# barrierとは?
今回はAndroidのレイアウトの編集でバリア(barrier)の使い方について説明します。
例えばこんなレイアウトがあったとします。
![Screenshot_20221203_210115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933408/5f7f41d3-3a0b-9f3c-0f6d-3ea6d3523b95.png)
タイトル1に対して、なんかの値1
タイトル2に対して、なんかの値2
があって、これらを全部DBや設定ファイル、あるいはHTTPで他から取ってきて表示するとします。
今上の画面はタイトル1がタイトル2より長いので、タイトル1に合わせて、その右側のなんかの値1、なんかの値2の位置を決めています。

しかし、状況によってはタイトル1とタイトル2の長さが逆転する場合があります。こんな風に・・・
![Screenshot_20221203_210200.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

5G対応アプリをつくろうZ!

この投稿は、私が所属するKDDIテクノロジーで行っているアドベントカレンダーの3日目の記事となります。
モバイル通信の第五世代目の通信規格「5G」。対応エリアも広がり、5G端末を使っていれば、アンテナ横の「5G」のマークが点いていることも事も多くなりました。しかし、まだまだ5Gは進化中です。
私の本日のアトレベントカレンダーでは、この5Gの現在を読み物として紹介します。

# 5GアプリつくろうZ
「今のアプリを5G対応にしましょう」
「5Gのアプリを開発しましょう」
このようなコトバを発したとしたら「いやいやいや、アプリ関係ないでしょ、何もしなくても5Gで通信できているし」という声が聞こえてきそうです。That’s 正しいです。

5G通信を行うために、アプリが開発時に対応しなくてはならない開発項目はありません。スマートフォンが5G対応であり、かつ5Gの電波のエリア内にいれば、自動的に5Gの通信が開始してくれます。
普通にアプリを作れば5G通信ができる「5G対応アプリ」となっているわけで、5G対応できないアプリなんてものは無いのです。そういう意味でも「5G対応アプリ」という言葉を聞

元記事を表示

OTHERカテゴリの最新記事