Android関連のことを調べてみた

Android関連のことを調べてみた
目次

Android 正規表現 カタカナ判定方法

正規表現の文字判定です。
カタカナを判定する方法のサンプルです。

“`Validation.kt
fun isKatakana(inputText: String): Boolean {
val regex = Regex(“^[\u30A0-\u30FF ]++\$”)
return inputText.matches(regex)
}
“`

個人的に正規表現があまり得意ではなく、すぐ忘れ使う時にまた調べ直したりするので、理解していきたいです。

元記事を表示

Hiltの実行時エラーを防ぐKSPプラグインを作ってみた

Android Advent Calendar 2023の24日目の記事です。

みなさん、Hiltは使ってますか?

Hiltとは、公式が出しているDIライブラリで、
私はHiltがないと、もうアプリ開発できないぐらいにお世話になっています。

https://developer.android.com/training/dependency-injection/hilt-android?hl=ja

今回は、Hiltをもっと使いやすくするKSPプラグインを作ってみました!

## Hiltってどんなの?

まずは、Hiltの説明から。

例えば、
こんな感じで自前のクラスを作ったとして、

“`kotlin
class InjectTarget {
fun doSomething() {
println(“doSomething”)
}
}
“`

こちらのクラスをHiltを使って、ViewModelにInjectしたいとなったら、
まず、コンストラクタに`@Inject`アノテーションを付与したのちに、

“`kotlin
class Inj

元記事を表示

【Android】WorkManager でファイルをダウンロードの進捗を監視する

MIXI DEVELOPERS Advent Calendar 2023 24日目の記事です

https://qiita.com/advent-calendar/2023/mixi

WorkManager の [Long-running worker](https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/long-running) を使用すると、時間のかかるタスクをバックグラウンドで実行できます。

数年前までは[フォアグラウンドサービス](https://developer.android.com/develop/background-work/services/foreground-services?hl=en)を自力で実装する方法が一般的でしたが、現在では WorkManager を使って[進捗状況の監視](https://developer.android.com/topic/libraries/architecture/workmanager/ho

元記事を表示

[2023年12月版]ElixirDesktopでスマホアプリを作る – Phoenix1.7のアプリを起動(モバイルアプリ化する)

こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はElixirDesktop Phoenix1.7のアプリをWindows11 + WSL2で動かす手順をまとめなおします。

# 目的
Phonenix+LiveViewでCRUD機能のあるアプリを実装してエミュレータやスマホ実機で動かしたい。

## 実行環境
Windows 11 + WSL2 + Ubuntu 22.04
Elixir v1.15.7-otp-26
Erlang v26.1.2
Phoenix v1.7.3

# 今回やりたいこと
Phoenix1.7をElixirDesktopの環境で動かしたい。
前回、デスクトップ(PC)での動作確認ができたので、android-studioのプロジェクトを作ってモバイル(SP)での動作確認をしたい。

# android-studioプロジェクトの作成
## android-example-appのリポジトリをクローン
プロジェクトのルートディレクトリまで戻って、android側の設定をしていきま

元記事を表示

特定のタイミングでバックボタンを無効化する

## はじめに
この記事はand factory.inc Advent Calendar 2023 24日目の記事です。

特定のタイミングでバックボタンの操作を無効にする方法について記載します

## やりたいこと
– ViewPagerのような親Fragmentと子Fragmentを使っていて、親Fragmentで既に、OnBackPressedDispatcher を使ってバックボタンの操作をカスタマイズしている
– 子Fragmentでアニメーションなどを再生中はバックボタンの操作を無効にしたい
– アニメーション再生中以外は親Fragmentでバックボタンのイベントを受け取リたい

## 実装

“` 子Fragment.kt

private val backPressedCallback by lazy {
// OnBackPressedCallback(true)にすると
// 親Fragmentでバックボタンのイベントが受け取れなくなるため false を指定する
object : OnBackPressed

元記事を表示

LINEログインの実装を検討してみた

## やりたかったこと
– webアプリ
– スマホアプリ
LINEログインをどちらも実装したい。

## 実際にどうやるのか
細かい事は公式マニュアルに細かく記載してあるのではしょりますが、
簡単な図を使ってざっくりと説明して行こうと思います。

### 必要な設定・情報
実装するにあたり必要な前設定ですが。
– 公式アカウントを作成
– LINE Developersにビジネスアカウントでログイン
`サービスを利用するにはLINEアカウントと連携してください。`と表示されるので、連携する。
(公式アカウントで始めていれば問題ないと思いますが個人のLINEアカウントが必要ケースもあります)
– プロバイダーとチャンネルを作成

#### チャンネルを作成と以下の情報の取得が必須

:::note info
Channel ID: チャンネル登録時に発行されるID
Chennel secret: チャンネル登録時に発行される秘密鍵
Callback URL: 認証後の遷移先 URL 登録(複数可)
:::

### ユーザーに認証と認可を要求する
LINEプラットフォームとユーザーの

元記事を表示

GitHub Copilotを調教してAndroid開発してみた

今回はイヤイヤ期に入ってしまって意地でもコードを書きたくなくなった僕がGitHub Copilotを調教して代わりにAndroid開発をさせてみた結果を共有したいと思います。

## GitHub Copilotって何?
AIがコードの補完をしてくれる機能です。
ZOZOでは[GitHub Copilotが全社導入](https://techblog.zozo.com/entry/introducing_github_copilot)されているので僕も試しに使ってみる事にしました。Android StudioにてPluginsを入れてGitHubにログインする事ですぐに使えるようになりました。

![スクリーンショット 2023-12-22 20.31.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617906/5037d2c4-ec7d-b259-0c8c-6fe7f2f109a8.png)

![スクリーンショット 2023-12-23 18.46.41.png](https://qiita

元記事を表示

runCatchingの代替関数を作って警告&Quick Fixを提供するCustom Lintを作る

runCatchingつかっていますか?

kotlinではJavaの検査例外もcatchしなくてもエラーにならなくなったこともあり、よく分からないけど念のためcatchしておくかー、などと使ってしまいがちです

“`kotlin
runCatching {
someMethod()
}.getOrNull()
“`

としておけば、仮にsomeMethodが何らかのExceptionを投げたとしてもすべてcatchした上で結果をResultにラップしてくれます。getOrNull()をコールすれば、Exceptionが投げられた場合はnullと置換することもできます。

ただ、このrunCatchingの実装は以下のようになっていて、Throwableすべてをcatchしています。

“`kotlin
public inline fun runCatching(block: () -> R): Result {
return try {
Result.success(block())
} catch (e: Throwabl

元記事を表示

Androidの権限自動削除でプッシュ通知はどうなるか調べてみました

Androidアプリの開発を行っているsinoです。
アプリが長期間利用されなかった場合にアプリの権限が自動削除されますが、プッシュ通知についてどういった動作をするか調べたので結果を残しておきます。
結論を先に記載しておくと、何もしなくてもアプリを起動したらプッシュ通知を受信するようになります。

Googleのアナウンスは [こちら](https://developer.android.com/topic/performance/app-hibernation?hl=ja) です。

Android 12以上でプッシュ通知に関する内容を抜粋すると

`アプリの実行時の権限はリセットされます。`
`アプリはプッシュ通知(Firebase Cloud Messaging を介して送信される優先度の高いメッセージなど)を受信できません。`

と記載されているので、プッシュ通知は届かなくなります。そして

`ユーザーが次にアプリを操作すると、アプリは休止状態を終了し、再びジョブ、アラート、通知を作成できるようになります。`

とありますが

`ただし、以下の処理がアプリに対して行われることは

元記事を表示

SnapFlingBehaviorを使ってLazyListのスクロールで要素を常に真ん中に表示する

## SnapFlingBehaviorの紹介

https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/snapping/SnapFlingBehavior

LazyRowやLazyColumnにてスクロール後,中心に近い要素がセンターにSnapされるようになります.

![画面収録 2023-12-23 22.37.28.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691046/93c13ae7-04bd-265c-5654-1fba61b3cf91.gif)

## 基本的な形
“`kotlin
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun SnapX(){
val state = rememberLazyListState()
val flingBehavior = rememberSnapFl

元記事を表示

【Android】Paging 3で実装するEndless Grid Design

:::note info
この記事は、[ラクスアドベントカレンダー 2023](https://qiita.com/advent-calendar/2023/rakus) の 24 日目の記事です 🎄
:::

## はじめに

最近チームの育成で使用するサンプルアプリを作成してますが、育成カリキュラムの中でページングの実装を取り入れようと検討しています。モバイル開発では、API からデータを取得し、リスト表示するようなユースケースも多いと思いますので、今回はAndroid の Paging 3 ライブラリの基本的な使い方を紹介したいと思います。

## ページングライブラリの概要

ページングライブラリは、[Android Jetpack](https://developer.android.com/jetpack) で提供されるライブラリの 1 つです。現在のバージョンは3系なので、Paging 3 と呼ばれたりします。

さて、このページングライブラリですが、使用することで大規模なデータセットからローカルストレージやネットワーク経由でデータのページを読み込んで表示させることがで

元記事を表示

[2023年12月版]ElixirDesktopでスマホアプリを作る – Phoenix1.7のアプリを起動(iex -S mixまで)

こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はElixirDesktop Phoenix1.7のアプリをWindows11 + WSL2で動かす手順をまとめなおします。

# 目的
Phonenix+LiveViewでCRUD機能のあるアプリを実装してエミュレータやスマホ実機で動かしたい。

## 実行環境
:::note warn
[android-example-appを動かす環境](https://qiita.com/Alicesky2127/items/ad463d50cfe81b2f9400)とElixir, Erlangのバージョンが違います。ご注意ください。[^0]
:::

Windows 11 + WSL2 + Ubuntu 22.04
Elixir v1.15.7-otp-26
Erlang v26.1.2
Phoenix v1.7.3

# 今回やりたいこと
Phoenix1.7をElixirDesktopの環境で動かしたい。
まずはデスクトップ(PC)での動作確認をしたい。

元記事を表示

Jetpack Composeで画像使用時に気をつけたいこと

# はじめに
今回はJetpackComposeでの実装直近で直面した画像使用時に気をつけたいことを紹介します
### 本文
今回時分が直面したのはIconとImageの違いです
Imageはpainterリソースに設定したものそのまま反映されますが、Iconを使ってしまうモノクロになってしまいます。
使う画像が単色のの場合はtintを設定すれば色を変えれるのでIconでも問題ないですが、単色じゃない場合はImageじゃないとダメです
何気なく使ってると不意直面してしまうので注意が必要です
### 最後に
今回は直近で自分直面した小さな気付きを記事にしました
どなたかのお役に立てれば幸いです

元記事を表示

[Jetpack Compose] アニメーション付いいねボタンを作る

# 概要
いいねボタンやブックマークボタン等、さまざまなアプリでアイコンボタンが利用されていると思います。その中でも有名なアプリの中で利用されているアイコンボタンには押下時のアニメーションが実装されており、よりリッチな表現を実現しています。

今回はJetpack Composeを用いてそのようなアニメーション付きのアイコンボタンを作成します。例としてInstagramのいいねボタンを再現してみます。

## Instagramのいいねボタン
|                                           |
|:-:|
||

## 今回作ったいいねボタン
まあまあ本物に寄せられたかな、、?

TaskerとAutoToolsで仮想キーボード切り替え

# TaskerとAutoToolsで仮想キーボード切り替え

## 0. 前書き
[0. 前書き](#0-前書き)

前記事の[Android版のGNU Emacsについて](https://qiita.com/ayatakesi/items/54e5bcd5f76d96163040)で少し触れた、Androidでアプリケーション毎に仮想キーボードを切り替える方法について説明します。参考にしたのは[How to Automatically Change your Keyboard on a Per-App Basis](https://www.xda-developers.com/how-to-automatically-change-your-keyboard-on-a-per-app-basis/)という記事です。

## 1. 事前準備
キーボード切り替えにはTaskerとAutoToolsというアプリケーションを使うことにします。それらをインストールしたり切り替えに必要な権限を付与したりします。

### 1.1 Androidデバイス
まずは実際に切り替えを行いたい実機であ

元記事を表示

React Native + Node.js+Expo+Xcode+Aodoroid Studio 環境構築

スマホ開発のはじめの一歩
環境構築について執筆しました。
よろしくお願いします。

https://zenn.dev/nori1234/books/fb9bdb5315843d?fbclid=IwAR3Ni4VPMuUu-39FPwXIpYv9Kd_k-Xe7aU9jlWPzdv0Ceajcj9eifkxwKj0_aem_AaxBq3Urj_BEN0BmtT-OSsqJnOhA0XhaZWK1bbGijqA-eVZLaMrdJOSMz1EhZu20pJU

元記事を表示

Jetpack Composeでスイカゲームは再現できる?

この記事は [レコチョク Advent Calendar 2023](https://qiita.com/advent-calendar/2023/recochoku) の23日目の記事となります。

https://qiita.com/advent-calendar/2023/recochoku

株式会社レコチョクでAndroidアプリ開発グループに所属している木村です。
今年、レコチョクは[Maker Faire Tokyo 2023](https://makezine.jp/event/mft2023/)に出展しました。

Maker Faire Tokyo 2023

様々な分野で「ものづくり」をしているメイカーの方々とお話しさせていただき、とても刺激を受けました。この機会に何か音楽に関するものづくりをやってみたいと思い、最近自作エフェクターについて勉強し始めています。

# はじめに

2023年に流行ったゲームといえば、スイカゲームを思い浮かべる方も多いのではないでしょうか。シンプルなルールにも関わらず、高得点を出すのが難しいことと、ゲームオーバー

元記事を表示

ComposeのCornerSizeの指定

# 初めに

[ポート株式会社 サービス開発部 Advent Calendar 2023](https://adventar.org/calendars/9156) 22日目の記事です。

![スクリーンショット 2023-12-22 10.34.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179470/535aefcf-0008-7ed2-d946-16c92c5e4cf0.png)

今回は、細かいところではありますが、[`CornerSize`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/CornerSize)の指定方法の違いと注意することについて、解説していきます。

公式ドキュメントの`androidx.compose.foundation.shape`に書かれている内容がほとんどなので、こちらを参考にしてください。

https://developer.androi

元記事を表示

【Android】Jetpack Compose でスクラッチビューを作成する

はじめに

はじめまして、Hridoy Chandra Das(リド)(@ihridoydas)です。

#### Jetpack Compose で、Google Pay 特典のスクラッチ カードのようなスクラッチ カードを作成します。

スクラッチカードは競技用に設計されたカードで、多くの場合、PIN を隠すために薄いカードストックまたはプラスチックで作られており、1 つまたは複数の領域に隠された情報が含まれており、不透明なカバーを剥がすことで明らかになります。

ユーザーはデバイスの画面上でカードを仮想的に「スクラッチ」「指で擦る」し、その下に隠されたコンテンツを明らかにすることができます。 このコンテンツは、クーポン コード、割引、その他の特典を紹介するためによく使用されます。

s1.jpgWear OSでExerciseClientを使用して自転車の走行情報を取得する

# はじめに
なんとなく思い立ったのでWear OSのアプリを作った。誰かの参考になれば良いので公開します。

### 環境
– Wear OS 3 (Wear OS by Google)
– SKAGEN Falster Gen6

### 要件
– ユーザーはある自転車のライドにおける総走行距離、総消費カロリー、最高速度を取得できる

### 完成品

# ExerciseClientの初期設定
### ExerciseTypeを初期化
“`kotlin
val

元記事を表示

OTHERカテゴリの最新記事