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

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

AlarmClockクラスのリファレンスがぺらぺらすぎるので補いたい

**AlarmClockクラス**はAndroidアプリケーションでアラームをセットするための便利なクラスです。特に、アラームを解除する際に使用する`ACTION_DISMISS_ALARM`アクションについて、具体的な実装例をご紹介します。

以下は、指定されたラベルに基づいてアラームを解除するKotlinの関数です。

“`kotlin
/**
* 指定されたラベルのアラームを解除します。
*
* @param context コンテキスト
* @param label アラームのラベル
*/
fun dismissAlarmByLabel(context: Context, label: String) {
val intent = Intent(AlarmClock.ACTION_DISMISS_ALARM).apply {
setPackage(alarmPackageName) // アラームアプリのパッケージ名を指定
putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE, AlarmCl

元記事を表示

ドキュメントからadbコマンドの仕組みを読み解く

# adbコマンドってなに
まずは[公式ドキュメント](https://developer.android.com/tools/adb?hl=ja)を読んでみましょう。
次の通りに説明されています。
> Android Debug Bridge (adb) is a versatile command-line tool that lets you communicate with a device.

> Android Debug Bridge(adb)は、デバイスとの通信を可能にする多機能なコマンドラインツールです。

つまり、**adbというコマンドを通してAndroidデバイスに色々させることができるよ!** というものです。

# adbコマンドでできること!
色々させることができると言いましたが、具体的にどんなことができるのでしょうか。
具体的なシチュエーションと共にいくつか紹介します。

## アプリインストール
アプリのファイル(APK)をインストールすることができます。
サッと手元でインストールして確認したい時に便利です。
“`
adb install [apkフ

元記事を表示

【Android】起動したWorkerを停止させる方法

# はじめに
皆さん、Worker使っていますか?
Serviceへの風当たりがどんどん強くなる今日この頃ですが、公式でもできる限りWorkerへの置き換えを推奨しているご状況です。
以前にもWorkerの取り扱いについて触れましたが、仕様の変更や何らかの問題が発生した際にすでに起動中のWorkerを止めなければならないケースが発生した場合、単純に処理を消すだけではWorkerは止まりません。
明確に停止する必要がありますので、今回は備忘録的にWorkerの停止方法をまとめておこうと思います。

# Workerの停止方法
Workerの停止方法には3通りのやり方があります。

“`main.kt
val workManager = WorkManager.getInstance(context)

// by id
workManager.cancelWorkById(syncWorker.id)

// by name
workManager.cancelUniqueWork(“sync”)

// by tag
workManager.cancelAllWorkByTag(“s

元記事を表示

【Android】Jetpack ComposeでViewModelを入れてみた

## 背景
前回jetpack composeでカウントアップアプリを作成したときに、クリック回数を記憶する変数をActivityに直書きしていました。
↓前回製作したもの

https://github.com/jtakumi/jetpackComposebasic/tree/clickableImage

ただ、画面の回転やライフサイクルの働きによりactivity内の一時的に保存している情報が破棄されてしまい、リセットされる危険性があるためViewModelにカウントアップの処理を移動させました。

## 今回の変更
クリック回数計算をviewModelに託す

### Before
“`MainActivity.kt
var countTapStar by remember {
mutableStateOf(0)
}
var countTapTriangle by remember {
mutableStateOf(0)
}
“`

### After
“`MainActi

元記事を表示

Androidで画面にタップしている箇所を表示する方法

開発している人に不具合を報告する際に、再現方法が複雑な場合や、画面録画で再現方法を説明することなどがあると思います。

その際にどこをタップしているかわかると便利ですよね。

Androidの設定で表示させることができます。

# 設定方法

開発者向けオプションをまず表示させます。

ビルド番号を7回連続でタップします。(設定画面のデバイス情報にあります。)

開発者向けオプションを開きます

![Screenshot_20240316_200604.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/0a483985-e4b7-bd27-90cf-11f1ea40e63f.png)

タップを表示をONにすると表示されるようになります。

元記事を表示

[Unity] Android版だけAdMobの広告のリワードが受け取れなくてハマった話

# 起きたこと
Unity製のアプリにAdMobの広告を組み込み、Rewarded型の広告を視聴した後にゲーム内の特典を与えるような実装をしていました。実装が完了し、Unityで動かしてOK、iOS実機で動かしてOKだったのでヨシヨシと思っていたのですが、最後に確認したAndroid実機でNGでした。ググってもなかなか答えに辿りつかず困ったのでここに吐き出しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/c299ac3e-9c3f-76e7-113d-715a4dad641d.png)

ちなみに広告の実装に関しては以下の公式サイトの説明を読みながら進めていました。
https://developers.google.com/admob/unity/rewarded?hl=ja

# NGだった時の実装
以下のような形で、rewardedAd.Showの中に処理を書き、PlayerPrefsを更新することでアプリ全体からspecial_item_countの値

元記事を表示

UnityでAndroid端末の回転ベクトルを取得する

## 概要

Android端末の複数センサを用いて算出された回転ベクトルをUnityから取得する方法についてまとめます.

## やりたいこと

Android OS は複数センサの情報を複合した回転ベクトルを算出できるので,Unityからその情報を取得したい.

## 解決手法
UnityからAndroidの回転ベクトルを取得するAndroid Pluginを作成.
## 環境
– Unity 2022.3.4f1
– Windows 11
– Google Pixel 3a
– Android バージョン12

## 実装
Androidプラグインの作成にはいくつかの方法がありますが,今回はJavaファイルをUnityのプロジェクト内に配置してプラグインとして読み込ませる方法をとることにしました.

プラグインの再利用や配布を考えるなら,直接Javaファイルを配置するのではなく,[Android Libraries や Android Archives (AAR) を利用した方法](https://docs.unity3d.com/ja/2022.3/Manual/android

元記事を表示

ChatGPTや他3種の生成AIに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、結果を比較 →性能差・各特徴が見られる

# はじめに

本稿では、下記の記事で記載した、Androidアプリでタップした時にテキストを1秒表示して消す処理を行うコードの作成について、
4種の生成AI、ChatGPT・Phind・Microsoft Copilot・Google Gemini、のコード生成結果を比較します。

https://qiita.com/dl_from_scratch/items/b5d6ab05464f8e25faf5

Androidのアプリの作り方を、ほとんど知らない状態で(※1・※2)、タップした時にテキストを1秒表示して消すような、簡単なサンプルアプリを試しに作ってみようと思った時に、
Androidアプリに関わったことがない、何も分からない状態で、一から検索して読み調べてコードを作るのは(簡単なコードであっても)相当面倒くさいな…、と思ってしまいます。

そこで、4種の生成AIに聞いて、タップした時にテキストを1秒表示して消す動作を行うサンプルプログラムを作ってもらい、うまく動作するかを試してみます。

※1: ただし、Android Studioの空のサンプルプロジェクトをそのままビル

元記事を表示

Jetpack Composeのアニメーション設定(easing)の定義と効果について

## Easingとは?
Easing関数は、アニメーションの速度変化を定義するために使用されます。アニメーションが開始から終了までどのように進行するか、つまりアニメーションのテンポを制御します。
* LinearEasing
* FastOutSlowInEasing
* FastOutLinearInEasing
* LinearOutSlowInEasing

は、Jetpack Composeなどで使用される一般的なEasing関数の例です。それぞれの関数はアニメーションに異なる特性を与え、ユーザーインタフェースの動きをより自然またはダイナミックに見せることができます。

## 定義
Easing.ktからの抜粋です。
“`
/**
* Elements that begin and end at rest use this standard easing. They speed up quickly
* and slow down gradually, in order to emphasize the end of the transition.
*
* Stan

元記事を表示

[2024/3月版]ElixirDesktopでスマホアプリを作る – Phoenix1.7のアプリを起動するジェネレータが爆誕した

こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はElixirDesktopの起動が超楽になるジェネレータについて学んだことをまとめます。

# 目的
@the_haigo さんが作っていただいたジェネレータを使って、PhoenixアプリをAndroid Studioで起動してみたい!
なお、本記事は[ElixirMobile#7:ジェネレータ作ったよ+ ハンズオン会](https://fukuokaex.connpass.com/event/309962/)のレポートを兼ねています。

https://github.com/thehaigo/desktop_setup

このジェネレータを使用すればElixirDesktopのアプリ作成がコマンド一発でできてしまう…!
ものすごいものが爆誕してしまいました!!

## 実行環境
:::note warn
Elixir, Erlangのバージョンに指定があります。ご注意ください。[^0]
:::

Windows 11 + WSL2 + Ubuntu 2

元記事を表示

Androidからスマートウォッチにデータを送ってみよう!(MessageClient)

WearOS開発において、教材や実装例は2014年~2015年付近のものが多く、特にAndroidからWearOSにデータを送信するコードが載っているサイトも数多くありません。
そこで初心者の方にもわかりやすくほぼコピペでできるアプリ実装例を書きました。
WearOS開発に詰まっている方に是非チェックしていただきたいです。
https://note.com/bakugui_inago/n/nc9cd083e4918?sub_rt=share_pw

アプリご紹介
Androidで値を入力し、ボタンを押したらWearOSに値を送って表示させるシンプルなアプリ。

![スクリーンショット 2024-03-06 155048.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3510524/3654add6-d459-5667-7562-091fc73aa5ae.png)

                      ↓

![スクリーンショット 2024-03-06

元記事を表示

開発チーム発足時に最初にやったこと

# はじめに
今年度に自身のキャリアとして初めて,新規モバイルアプリケーションの開発にチームビルディングから参加しました。

開発チーム発足時に最初にやったことを備忘録も兼ねて記載していこうと思います。
# ブランチ戦略の決定
発足時は下記のようなブランチ戦略で開発を始めました。
タスク管理にはJiraを使用していたのでGitHub連携機能を使用し, 開発ブランチについてはチケット番号をそのままブランチ名にして管理していました。
![スクリーンショット 2024-03-10 23.52.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1550392/7e085709-af9b-7df1-43b1-9c754d267ff8.png)

|ブランチ名 |役割 |
|—|—|
|main |マスターブランチ このブランチは必ず動く |
|feature(CH-XXXX/CH-YYYY) |開発用ブランチ チケット名をそのままブランチ名に |
|release |リリースブランチ cod

元記事を表示

ChatGPTに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、実際に実行させてみる →そのままで正常動作

# はじめに

Androidのアプリの作り方を、ほとんど知らない状態で(※1・※2)、タップした時にテキストを1秒表示して消すような、簡単なサンプルアプリを試しに作ってみようと思った時に、

Androidアプリに関わったことがない、何も分からない状態で、一から検索して読み調べてコードを作るのは(簡単なコードであっても)相当面倒くさいな…、と思ってしまいます。

そこで、ChatGPTに聞いて、タップした時にテキストを1秒表示して消す動作を行うサンプルプログラムを作ってもらい、うまく動作するかを試してみます。

※1: ただし、Android Studioの空のサンプルプロジェクトをそのままビルドしてスマホ上で動作させる所までは(最低限)、出来た状態を想定します。
※2: ただし、C#やPythonなどプログラムについては、ある程度知っている状態を想定します。

# ChatGPTにサンプルプログラムを聞いてみる

現在最新のAndroid 13で動作するように、「Android 13、~」を付けます。
また、Javaのコードとなるように、「Java、~」を付けます。

ht

元記事を表示

Strong skipping modeの記事を読んで知らなかったことメモ

この記事を読みます。 基本記事に書いてあることを書いているだけです。何か誤りがあれば教えて下さい。

https://medium.com/androiddevelopers/jetpack-compose-strong-skipping-mode-explained-cbdb2aa4b900

stable unstableとか、Listはunstableになってしまうとかをすでに知っている人向けの記事です。

* **Unstable parameterはinstance equality (===)で見る**
* **stableは今までどおり equalsで見る**

具体的にはこういうケースで救われる。以下だと、favoriteが変わったときに、Listがunstableなので、ArticleList()がもう一度走る(recompose)されてしまっていたが、 `===` での比較が変わっていないので、スキップされるようになる。

“`kotlin
@Composable
fun ArticleList(
articles: List

, // List

元記事を表示

JetpackComposeで指定した文字列の色を変更する

## はじめに
どうもこんにちは、最近Kotlin始めました。普段はUnityを触っています。
今回はテキストフィールドの一部文字列の色を変更するという処理を書いてみたのでまとめました。

## JetpackComposeで文字列の色を変更
テキストフィールドに入力する文字列が一定文字数を超えた場合、超えている分だけ赤くするコードを書きました。

↓こんな感じ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882297/2eb72dde-68fc-bac1-976c-a0e980dc9e40.png)

## VisualTransformationを使用
VisualTransformationとは簡潔に言うと、Input TextFieldの見た目を変更するときに使用するインターフェイスです。[^1]
このインターフェイスを継承したクラスをTextField関数の引数に持たせ、InputFieldの見た目を変更することができます。

## 手順① テキストフィールドの一部配色

元記事を表示

Wear OS アプリの審査を通すために対応したこと 2024

## はじめに
Wear OS アプリの審査を通すために対応したことをまとめる

## 対応したこと
### スクリーンショットから透過色の削除

ストアに提出するスクリーンショットの背景に透過色が含まれているとリジェクトされる。Android Studio でスクリーンショットを撮影すると背景に透過色が含まれてしまうので、手動で透過色を塗り潰して再提出する必要がある

### スクロールバーの追加

`ScrollView` や `RecyclerView` な

元記事を表示

【Flutter】AndroidでImage.networkが表示されない問題を解説

# はじめに

こんにちは!
Flutter開発を始めて2年目となるエンジニアです!

ある日、後輩から「Image.networkが表示されないです。」っていうヘルプが飛んできました。
終業間近だったためとりあえずプッシュしておいてもらい、その場は終わり、デバッグしてみると確かに画像が読み込まれない赤の罰が表示されていました。

今回の記事では、これの原因と解決方法を解説します。

# こんな人に読んでほしい

* Flutterでの開発を行っている方
* Flutterでの開発を検討している方
* Flutter初学者の方

# エラーコード

“`
SocketException: Failed host lookup: ‘{project}’ (OS Error: No address associated with hostname, errno = 7)
“`

# 原因

結論、Androidエミュレータからネットワークに接続して画像を表示させようとした際に、AndroidManifest.xmlで接続許可をしないといけませんでした。

未経験のエンジニアがExcep

元記事を表示

Android「このデバイスでは、暗号化されたデータにアクセスできません」の対処

# 問題
Androidで
「このデバイスでは、暗号化されたデータにアクセスできません」
「セキュリティ上、このデバイスでは暗号化されたデータにアクセスできなくなりました。Google アカウントへのログインに最近使用したデバイスを使ってもう一度お試しください。詳しくは、g.co/OnDeviceEncryption をご覧ください。」
と表示されて認証が進まない。
他のアプリはコレに失敗してもSNS認証になるだけだったがメルカリのビットコインはこの認証が必須。

# 解決
日本語でググってもろくな情報がなかったが端末言語設定を英語にしてメッセージを再度表示させググったら一発だった。

1. https://myaccount.google.com/security でバックアップコード発行、再設定用連絡先などを設定する
1. https://takeout.google.com/settings/takeout 及び
https://passwords.google.com/options でChromeデータやパスワードをエクスポートしておく
1. https://chrome.

元記事を表示

Jetpack composeでうまいことエラーハンドリングをしたい

# はじめに
今回はJetpack composeで実装するときに複数種類のエラーをハンドリングするときのアイデアを出していこうと思います
### 本文
今主流となっている`seald class`でUIの状態を分岐させてそれによって出すCompose部品を出しわけるのが今の主流化と思いますが、そこにネスとしてエラー用の`seald class`をはやすというものです。

そうすることで読み込みのエラーや状態更新のエラーなどを分岐させることが可能になりそれにより表示を分岐させることもできます。

ただし、ここで懸念すべきところは分岐処理が増える分Compose関数内のコードが多少なりとも増えてしまうという点です
### 最後に
今回はアイデアの提案のみですが、何か改善点などがあればコメントいただけると参考になります

元記事を表示

【Android】Kotlinのテストコードを書いていてエラーになった時の話【Kotlin】

# エラー内容
“`
Exception in thread “Test worker @coroutine#1” java.lang.IllegalStateException: Module with the Main dispatcher had failed to initialize. For tests Dispatchers.setMain from kotlinx-coroutines-test module can be used
“`

# やったこと
上のエラーを翻訳をかけた感じ、ざっくりいうと
kotlinx-coroutines-test モジュールの Dispatchers.setMain が必要とのこと。

**kotlinx-coroutines-test** で検索をかけてみると

https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-test/

このライブラリが出てきたので追加してみた。

“`php:build.gradle(Module :app)
depe

元記事を表示

OTHERカテゴリの最新記事