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

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

AndroidでJsonを扱う

## AndroidでJsonを扱うための設定など

* プロジェクト
“`build.gradle.kt
plugins {
id(“org.jetbrains.kotlin.plugin.serialization”) version(“2.0.20”)
}
“`

* モジュール
“`build.gradle.kt
plugins {
id(“org.jetbrains.kotlin.plugin.serialization”)
}

dependencies {
implementation(“org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2”)
}
“`

* JSONに対応したデータクラス
“`JsonData.kt
import kotlinx.serialization.Serializable

//Serializableアノテーション必要
@Serializable
data class JsonData(
val id:String = “”,
val

元記事を表示

AndroidのWebViewでAngularからアプリへデータを渡す

## AndroidのWebViewでAngularで作成したWebページからアプリへデータを渡す

* Angular側のソース

以下を宣言する
“`top.component.ts
declare global {
interface Window {
android: any;
}
}
“`

アプリへデータを渡す箇所(抜粋)
“`top.component.ts
let model : TicketModel = new TicketModel();
model.id = “00001”;
model.name = “テスト”;
let jsonStr : string = JSON.stringify(model);
window.android.showMessage(jsonStr);
“`

TicketModelクラスは以下の通り
“`ticket.model.ts
export class TicketModel {
id? : string;
name? : string;
}
“`

* Android側のソース
 (act

元記事を表示

Kotlinのfactoryってなに?

# factoryとは
– Kotlinにおけるインスタンス生成方法の1つ
– インスタンスの生成で、“`single“`または“`factory“`を使う
参考サイト:

# “`single“`と“`factory“`の使い分け
– “`single“`と“`factory“`をどうやって使い分けるかはアプリの設計に関係してくる
– 一般的なAndroidアプリでは、以下の観点で使い分けられるケースが多い(あくまで一例)
– Repositoryクラスのように**決まった対象のDBへアクセスする必要があり、かつ、アクセスする際に、一貫性を保つ必要があるケース**
single(Singleton)
– HttpClientクラスのような**決まった設定値を全てのアプリで使い回すケース**
single(Singleton

【Azure/Firebase】Azure PipelinesでCLIツールのインストールに失敗するのを解決する方法

## はじめに

Azure Pipelineでアプリを`Firebase App Distribute`に配布しています。
このパイプラインで本日(2024/09/12)突然エラーが発生したため、解決方法を記録しておきます。

## 環境

– Firebase CLI 13.17.0
– Azure Pipeline
– ubuntu-latest (Ubuntu 22.04)
– macos-13

## 起きたこと

以下の公式サイトにある、「Standalone Binary」の手順でインストールしていました。

https://github.com/firebase/firebase-tools

具体的には以下のコマンドを使用しインストールする方法を使用していました。

“`sh
$ curl -sL https://firebase.tools | bash
“`

ですのでパイプラインの定義は以下のようになります。(前後省略)

“`yml
– script: curl -sL https://firebase.tools | bash
d

Kotlinのinvoke()ってなに?

# ざっくり言うと
– invoke()が付いていた場合はメソッド名は無く、クラス名を使って呼び出している
→Android Studioで呼び出し元を知りたければ、クラス名をctlキーを押しながらクリックする

# もう少し詳しく
– invoke()は、メソッド名を省略できると言う意味の方が近いカモ
(メソッド名が無くても呼び出せるし、「invoke()」とインスタンス名に続けて書くこともできる)
– 例外として、インスタンスがnullableな場合は、省略ができなかったりする

“`kotlin:省略ができない例
hogeHogeClass?invoke()
“`

はじめてのKotlin + Android(画面遷移)

# はじめに
今までは試合に出る際はGoogleCalendarの説明欄に試合の振り返りをメモっていた。
![screen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3883681/8577c9bb-6f13-eea7-c5e2-7e388a5fed11.png)

が、後で見返すのが辛くメモるだけ。
勉強がてらアプリでも作ってみようかな、と思ったのがきっかけです。

メモがてらハマったところとか感動したところを(赤裸々に)残していきたいと思います。
多分有識者から見たら、「なんでそんな意味わかんないことしてるの?ちゃんとリファレンスをしっかり読み込みなよ」とツッコミを頂くんだろうなぁ

# アプリで実現したいこと

最低限以下は実現したいと考えました。
– 出た試合の結果や振り返りを残せる
– 試合の時に意識すべきことをチェックリストで表示(体が覚えたと思ったことも後で見返してニンマリしたい)

今まではGoogleCalendarにスケジュール登録していたのをこのアプリで管理できるようにする・・

AndroidアプリにUnity as a Libraryを導入する

## きっかけ
弊社で運用中のアバターを介してビデオ通話ができるSNSアプリがすべてUnityで実装されており、UI/UXのカスタムが非常に難しい状況でした。
そこでUaalを導入し、ビデオ通話中のアバターの表示やプロフィールアバターの表示等はUnity、それ以外のSNS機能やサーバーとの通信はネイティブで行うことで役割分担を進めようと方針が決まりました。

## Unity as a Libraryとは
>Unity as a Libraryとは、ゲームエンジンUnityで開発した機能をAndroidやiOSのNativeアプリにモジュールとして組み込む技術です

利用用途として、例えば3D描画のあるSNSアプリを作りたいとなったとします。Unityは3D描画部分の開発に強いですが、SNS部分は弱いです。逆にNativeはSNS部分の開発に強いですが、3D部分はそこまで強くありません。そのようなときに、Unity as a Libraryを使うと、3D部分は3Dに強いUnityで作り、SNS部分はNativeで作ることが可能になります。

このように、Unityが強い部分はUnity

(Android / Kotlin) ホーム画面に設定する方法 (メモ)

**最終変更日:** `2024/09/11`
**最終検証日:** `2024/09/11`

### 設定方法

1. パーミッションの設定 (app/src/main/**AndroidManifest.xml**)
2. 確認画面の表示 (app/src/main/java/**{スラッシュ区切りのID}**/**MainActivity.kt**)

## パーミッションの設定

`app/src/main/AndroidManifest.xml`に次の内容を追加
(`activity/intent-filter`内に追加)

“`xml



Android開発でAPIkeyを隠してGithubに上げる方法

# はじめに
今回は、APIキーなどの機密情報を安全に管理するために、Secrets Gradleプラグインを使用する方法について説明します。この方法を用いることで、機密情報を秘匿しつつ、プロジェクトをGitHubにアップロードする手順を解説していきます。
# 手順
詳しい導入方法はこちらに書かれています。

https://github.com/google/secrets-gradle-plugin

### その1
プロジェクトレベルのbuild.gradle.ktsに下記をコピーして貼り付けてください。

:::note warn
こちらより最新バージョンがある場合はそちらを記入して使ってください。
:::

“`kotlin:build.gradle.kts(Project)
buildscript {
dependencies {
classpath(“com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1”)
}

implementation ‘io.realm:android-adapters:4.0.0’ を削除

最近、MacBook を買い換えたので Git から新しい端末へ Android アプリのプロジェクトをクローンしてビルドしています。その時に古い Android アプリのビルドが失敗してしまいました。エラーを見ると ‘io.realm:android-adapters:4.0.0’ がダウンロードできないようでした。
>Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find io.realm:android-adapters:4.0.0.

io.realm:android-adapters のために jcenter() を残していましたが、検索すると GitHub から Java ファイルをプロジェクトへ追加すればいいよ的なコメントを見つけました。

+++Webサイト抜粋+++
The Realm Adapters dependency is not moved to Maven yet. You can directly copy the RealmRecycle

【 Jetpack Compose 】お気に入りの項目だけ表示させる

## 今回実装したもの

お気に入りに登録した観光地のみを表示させる機能を実装しました。

トグルスイッチをオンにするとお気に入りだけが表示されて、オフにすると全ての観光地が表示されます。

| 実装した機能 |
|—|
||

今回は、その実装方法をかねてより作成している、観光地リストアプリをベースにして紹介します。

https://github.com/jtakumi/jetpackList/tree/toggle

## 使用するもの
お気に入り機能を実装するために使用したものは以下のものです。

– LandmarkViewModel.kt
– 観光地情報を保持する viewModel ですが、今回お気に入りかどうかの情報も保持するようにします
– FavoriteData.kt
– お気に入り情報

【Android】ImegeViewで設定したアイコンの色を変える

# はじめに
今回記事にする内容はタイトルにある通りですが、記事を書くきっかけになったのは
Jetpack Composeで色々触っていて、Iconのカラーを変えるのは簡単にできたけど、それ以外だとどうやってやるんだろ?と思ったのがきっかけです。

# 実践
“`
準備段階としてImageViewを3つおきます。当然このままではImageがそのまま表示されているだけです。

AndroidStudioで実は便利なショートカット

# はじめに
今回は、普段あまり登場する場面はないけど覚えておくといざというときに便利すぎるショートカットを紹介していきます
### 本文

cmd shift F8

このコマンドではブレイクポイントを検索することができます
デバッグ中に以前置いておいたブレイクポイントで止まってしまったりブレイクポイントを設置しすぎるとデバッグモードがうまく作用しなかったりするので便利です

cmd shift u 大文字小文字切替

enumや定数宣言時などに便利です

option enter

赤線などでの警告箇所やエラー箇所でこのショートカットをすることで自動的にインポートしてくれたり簡易的に直してくれたりなど意外と便利です

cmd r

対象の文言を置換することができます
renameではうまくいかない部分などを置換するのに便利です

### 最後に
今回は最近いろいろと気になって調べていたショートカットを備忘録程度の記事にしてみました
どなたかのお役に立てれば幸いです

【Jetpack Compose】android初学者がModifierでできることをまとめました

# 初めに
Jetpack Composeを用いたandroid開発について学ぶ中でUIの微調整のためにModifierを使うことが多かったため、主な使われ方(主観)について調べ、まとめました。
なお、当方、この記事が初投稿となります。拙い点もあるかと思いますが、どうか温かい目で見ていただければ幸いです。
## 目次
1. Modifierについて
2. Modifierの活用法(コードと実際の画面)
1. サイズ・レイアウト
2. 背景・ボーダー
3. オブジェクトの配置
4. スタイル調整
5. 視覚への効果
3. まとめ
### 対象読者
– android開発初学者の方
## Modifierとは何か
まず、Modifierとは、UIコンポーネント(UIのレンダリングを行う関数)に対して、**外観、レイアウト、動作**などを定義し、文字通り**UIコンポーネントに対しての修飾子**としての役割を果たしています。このModifierを有効に活用することで、UI要素のレイアウトや装飾、動作を柔軟に決定することができるため、複雑なUIを構成するためにはM

Jetpack Composeで影(Shadow)を付ける方法と課題

Jetpack Composeでコンポーネントに影を付ける方法とその中で発見した問題点をメモしてます
一番簡単なMaterial Design3のCardコンポーネントを使用する方法とModifierで設定する方法を取り扱っています

::: note info
Cardを使用する方がおすすめです
:::
# 影のつけ方 – Cardコンポーネント
Cardには、Filled Card(塗りつぶしありカード)とOutlined Card(塗りつぶしなしカード)の2種類あります
以下では両方のUI紹介とパラメーターについてまとめています
## Filled Card(塗りつぶしありカード)のUI
“`
Card(
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceVariant,
),
modifier = Modifier
.size(width = 240.dp, height = 100.dp)
) {

[Android その4] Androidのアプリケーションの基本開発

# Intentの実装
Intentは、Androidアプリケーション内で操作やデータを他のアプリケーションやアクティビティに送信するためのメカニズムです。Intentを使うことで、異なるコンポーネント(アクティビティ、サービス、ブロードキャストレシーバーなど)の間で情報をやり取りしたり、特定のアクションを開始したりすることができます。

__Intentには大きく2種類あります__ :
1\. 明示的Intent:
* 特定のアクティビティやコンポーネントを直接呼び出すために使用します。
* 例:現在のアクティビティから別のアクティビティを開始する。

2\. 暗黙的Intent:
* アクションの内容を指定し、それを実行できるコンポーネントをAndroidシステムが選択します。
* 例:写真を撮るアプリや、電話をかけるアプリを起動する。

# メモリアプリへのIntent追加
## 明示的Intent
例えば、メモアプリで新しいメモを追加する際に別のアクティビティを開く場合に、Intentを使用できます。これにより、メインアクティビティから新しいアクティビティへデータを渡すことがで

MaterialShapes一覧

Compose Material3 1.4.0 で追加される `MaterialShapes` デフォルトで用意されているものの一覧です。

|Name|Image|
|:–|:–:|
|Circle|![Circle](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126298/8346dda2-4d41-1430-9bf4-8d3b58c81937.png)|
|Square|![Square](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126298/90e30a5e-7f1e-3466-e4d0-8bd8ce2c995d.png)|
|Slanted|![Slanted](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126298/2b931703-154c-24d6-c685-de5b47e5bf6c.png)|
|Arch|![Arch](http

Compose Material3 1.4.0に追加予定のコンポーネントのメモ

Jetpack Compose の Material 3 のライブラリ 1.4.0 に追加されそうなコンポーネントのメモです。
これを書いている時点 (2024/9/7) では 1.4.0 は [Snapshot](https://androidx.dev/) でのみ使用可能で、実際に Stable のタイミングでは変更されている可能性があるので、使用前には公式のドキュメントを参照してください。(気が向いたら更新しておきますが)

## Button Group

Segmented Button に近しい、ボタンをグループ化するコンポーネントです。
Segmented Button との使い分けは不明ですが、Segmented Button と同様に Single select or Multi select の実装が可能です。

ScaffoldでないComposeでSnackBarを出す

掲題の通りです。
Compose化の初期段階で、まだFragmentは残しつつ、中身だけフルComposeにしているという状況で、SnackBarをどう出したら良いかと一晩悩みました。

レイアウトxmlファイルを残して、そこにComposeViewを入れて出す方法も最悪有りかなと考えましたが、結論、以下のコードを元にいじって作成できました。

https://medium.com/@213maheta/snackbar-without-scaffold-in-jetpack-compose-c6868f908100

import文は長いのですが候補を選ぶの間違えるとビルド通らずに困ると思うので以下を展開して見てください。

import

“`kotlin
import androidx.annotation.StringRes
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement

モバイルアプリのクラッシュ原因を効率的に分析しよう

モバイルアプリがクラッシュに至るまでの経路を俯瞰して把握し、より効率的に原因分析することを可能にするNew Relic Mobile User Journeyをご紹介します。

# New Relic Mobileとは
すでにNew Relic Mobileをご存知の方は次のセクションに飛んでいただいて大丈夫です。

オブザーバビリティプラットフォームであるNew Relicの一機能であるモバイル監視機能(New Relic Mobile)は、モバイルアプリに組み込まれたSDKがモバイルアプリのパフォーマンスやエラー、ユーザー操作などを記録することで、モバイルアプリにおけるユーザー操作、パフォーマンスやアプリのエラー、クラッシュなどの問題を分析できる機能です。

SwiftやObjective-C、Javaなどで開発されたiOS/Androidのネイティブアプリはもちろん、FultterやReact Native、Xamarinなどのクロスプラットフォームフレームワーク、ゲームでよく利用されるUnity、Unreal Engineにも対応しています。

また、モバイルアプリと通信し