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

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

【自分メモ】「Enumクラス」の「ArrayList」の初期化と「values()」と【復習メモ】

“`kotlin
var prefItems: ArrayList = arrayListOf()

for (i in PrefLatLon.values()) {
prefItems.add(i.pref)
}

enum class PrefLatLon(val pref: String, val prefLat: String, val prefLon: String){
TOKYO(“東京”,”35.01833″, “139.5986”),
OSAKA(“大阪”,”34.62278″, “135.5111”),
KYOTO(“京都”,”35.25194″, “135.4458”),
FUKUOKA(“福岡”,”33.5225″, “130.6681”),
HOKKAIDO(“北海道”,”43.46722″, “142.8278”),
OKINAWA(“沖縄”,”25.77111″, “126.64”)
}
“`
# 【以下、コードの解説】

「= arrayListOf

元記事を表示

android-sdk を ubuntu22.04 で【Flutterビルド用にCLIだけ入れる】

## 入れ方めっちゃあるやんけ

Flutter楽しいですよねー! 高パフォーマンスなアプリが iOS/Android 用にサクサク作れます。

僕らのチームの場合「開発初期は殆ど iPhone」で進めて、
「リリースが近づくと Android もテストを始める」感じです。

で、いつも問題になるのが android-sdk のインストール法…いつも忘れちゃう

出来れば Mac に重たい AndroidStudio を入れなく無いので、ビルドだけサーバに回そうと思ったのですが、「CLI のみのインストール」にとにかく罠が多いのです。
ここでは僕らのチームの最適解として、なるべく最小の手間で使えるようにしたいと思います。
CI/CD関連の方にも参考にして頂けるのかなと思います。
(flutter そのものの入れ方は割愛します。 fvm でも snap でもお好みの方法でどうぞ)

## ubuntu の apt レポは神
“`bash
sudo apt update && sudo apt install android-sdk openjdk-17-jdk
“`

いきなりで

元記事を表示

底辺高校生がKotlinをいじってhololiveのアプリを作る話 ~最初の画面~

自己紹介
=
みなさんこんあくあー⚓️
junkcomputerというものです。底辺高校一年生であくあクルー。いじれる言語はKotlinくらい

今回開発するアプリ
=
hololive推し活ノート
その名の通りhololiveの推し活するために、カレンダーやメモ機能を付けた多機能アプリを作ろうと思ってます。
今後のアップデートでFirestore使って、Cloud型にするのもありかなと思います。

環境
=
Android Studio Giraffe
OS:Windows 11 Home
CPU:Core i7-10700
RAM:32GB

コーディング
=
とりあえずそのまま載せておきます(需要あるかは知らん)
“`kotlin:MainActivity.kt
package com.akutan.osigoto

import android.content.Intent
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bun

元記事を表示

OpenGLのVBOを活用した高速化

OpenGLで描画する際にVBO(頂点の格納場所)をうまく活用することで高速化した話。

高速した後は描画のコマ落ちが解消されています。
(左:高速化前、右:高速化後)


開発アプリPR

【Android】アプリ内からGoogle Playのアプリ詳細へ飛ばす方法【Kotlin】

# はじめに
以前、[アプリ内から他アプリのSNSシェアをする](https://qiita.com/Tsubasa12/items/cec04e137ed613d53ccb) といった記事を書いたのですが、それと似たような内容になります。
短めですが、自分のメモ用と思っていただければと思います。

# 実装

val uri = Uri.parse(“market://details?id=パッケージ名”)
val intent = Intent(Intent.ACTION_VIEW, uri)
startActivity(intent)

以上になります。

アプリのレビューを書いてもらう際などに直接アプリページへ飛ばせるので、役立ちそうです。

元記事を表示

JetpackComposeでCheckboxの色を変更する方法

JetpackComposeでCheckboxの色を変更する方法です。

Checkboxを使用する機会があったので、共有しようと思います。

# サンプルコードはこちら
“`CheckboxSample.kt
@Composable
fun CheckboxSample() {
val checked = remember { mutableStateOf(true) }
Checkbox(
modifier = Modifier
.size(24.dp),
checked = checked.value,
onCheckedChange = { checked.value = it },
colors = getCheckboxColors()
)
}

/**
* チェックボックスの色指定
*/
@Composable
private fun getCheckboxColors(): CheckboxColors {
return object: Chec

元記事を表示

【Bingで解説】「window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN」って何?

#条件
以下のコードはAndroidのコードです。

以下のコードについて小学生でも理解できるくらい
丁寧に解説して頂けますか?

“`kotlin
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
“`

`window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN` は、Androidアプリのステータスバーを非表示にするためのコードです¹。

ステータスバーは、通常、時刻やバッテリー残量などの情報を表示するために使用されます。

フルスクリーンモードでアプリを実行する場合、ステータスバーを非表示にすることができます。このコードは、ステータスバーを非表示にするために使用されます。

`window.decorView`は、アプリのウィンドウを表します。

`systemUiVisibility`は、システムUIの表示設定を変更するためのフラグを設定するために使用されます。

`View.SYSTEM_UI_FLAG_

元記事を表示

【Android】AppLink対応に必要なJsonファイルの作成手順まとめ

# はじめに
いつからか不明ですが、PlayConsole上でAppLinkに対応していないDeepLinkがエラーとなるようになりましたね。
このエラーを解消しない限りAndroid12からは想定通りの動作をしないわけですが、この問題を解消するためには指定のパスへJsonファイルを配置し、検証する必要があります。
今回はこのJsonファイルの作り方を備忘録的にまとめておこうと思います。

# AppLinkとは?
そもそも事の発端であるAppLinkとは何かというのを簡単にまとめておこうと思います。

> ユーザーを Android アプリの特定のコンテンツに直接誘導する HTTP URL です。Android アプリリンクはアプリへのトラフィックを増やし、よく使用されているコンテンツを把握するのに役立ちます。ユーザーにとっては、インストールしたアプリ内のコンテンツを見つけたり、共有したりするのが簡単になります。

とのことです。
よりユーザビリティに特化した機能ということで、Android12からはほぼ対応が必須となっている重要な技術ですね。

※ちなみに必須と述べていますが、An

元記事を表示

複雑なDeepLinkをJetpackComposeで実装するPart2

# はじめに
今回は、複雑なDeepLinkが来たときやDeepLinkの内容によってホーム画面で出しわけないといけない時の実装を紹介していきます

### 本文
本パートではMainActivityで取得したDeepLinkを利用してUIを表示しているMainViewの実装を紹介していきます
MainViewではViewModelを持ってDeepLinkの遷移先を判定します。
判定方法はプロジェクトやリンクによって変わるので省略しますがよしなに実装をしてください。
“`kotlin:MainView
@Composable
fun MainView(
viewModel: MainViewModel,
navController: NavHostController = rememberNavController(),
deepLink: Uri?
) {
Scaffold() {
MainNavGraph(navController, navigateScreenType = viewModel.checkDeepLink(deep

元記事を表示

【Bingで解説】「windowSoftInputMode」って何?

「windowSoftInputMode」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「windowSoftInputMode」とは、Androidアプリの画面において、キーボードが表示された際に、画面のレイアウトをどのように変更するかを指定する属性です。この属性を指定することで、キーボードが表示された際に、画面のレイアウトが崩れることを防ぐことができます。

例えば、adjustResizeという値を指定することで、キーボードが表示された際に、画面のレイアウトを自動的に調整して、キーボードが表示された状態でも画面全体を見ることができるようになります。

# 【引用】
Androidアプリでキーボードの上までスクロールできるようにする
https://qiita.com/hishida/items/e25dfa4d75caeabda9a3

AndroidアプリのEditTextを含む画面でキーボードを非表示にする
https://qiita.com/hishida/items/8bf1aa28ef62ef22a7f9

[Android]EditTextの

元記事を表示

KMP + Koin で DI (Dependency Injection)

# はじめに

今の時代、モジュール間は疎結合、ユニットテストはスタブを注入!💉💉💉

というのが定番みたいだし、実際にも開発しやすいので、
[KMP](https://www.jetbrains.com/kotlin-multiplatform/)[^1] でも Dependency Injection(以下DI)していきたいです。

KMP は開発言語が Kotlin なわけですが、
Android 向けに [Dagger Hilt](https://developer.android.com/codelabs/android-dagger-to-hilt?hl=ja#0) という DI フレームワークがありつつも、残念ながら KMP 非対応です。

じゃあ KMP の場合は何を使えば良いのか?

ということで、自分がいちばん慣れてる [Koin](https://insert-koin.io/) を使ってDIを実現してみます[^2]。

# ライブラリ追加

まず、これがないことには始まりませんので。
[ここ](https://insert-koin.io/docs/refere

元記事を表示

【Bingで解説】「isLetter」って何?

「Jetpack Compose」に出てくる「isLetter」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。

imeActionは、テキストフィールドに表示されるソフトウェアキーボードの右下にあるボタンのことです。

このボタンをタップすると、キーボードが閉じられたり、次のテキストフィールドにフォーカスが移動したりします。例えば、ログインフォームで「パスワード」フィールドに入力が終わったら、imeActionを「Done」に設定することで、キーボードを閉じることができます¹²³。

また、isLetterは、Kotlinの標準ライブラリで提供されている関数の一つで、引数に渡された文字がアルファベットの場合にtrueを返す関数です⁴。例えば、以下のように使用することができます:

“`kotlin
val c = ‘a’
if (c.isLetter()) {
println(“$c is a letter”)
} else {
pr

元記事を表示

【Bingで解説】「imeAction」って何?

「Jetpack Compose」に出てくる「imeAction」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。

imeActionは、テキストフィールドに表示されるソフトウェアキーボードの右下にあるボタンのことです。

このボタンをタップすると、キーボードが閉じられたり、次のテキストフィールドにフォーカスが移動したりします。例えば、ログインフォームで「パスワード」フィールドに入力が終わったら、imeActionを「Done」に設定することで、キーボードを閉じることができます¹²³.

以上が、imeActionの簡単な説明です。¹²³¹: [ImeAction | Android Developers](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/input/ImeAction)
²: [JetpackCompose KeyBoard Options

元記事を表示

【Android】launch(Dispatcher.Main.immediate) の呼び出し元も launch(Dispatcher.Main.immediate) だった場合、即時実行されない

:::note info
この記事では、簡単のため、[`CoroutineScope`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/) として [`GlobalScope`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-global-scope/) を使用する。
:::

## 要約

次のコードを実行すると、

“`Kotlin
GlobalScope.launch(Dispatchers.Main.immediate) {
launch(Dispatchers.Main.immediate) {
Log.i(“”, “in launch”)
}
Log.i(“”, “after launch”)
}
“`

期待に反して、[`lau

元記事を表示

【Bingで解説】「buildAnnotatedString」って何?

「Jetpack Compose」に出てくる「buildAnnotatedString」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。 「buildAnnotatedString」は、Jetpack Composeで使用されるテキストスタイルの一種で、テキストに注釈を付けるために使用されます¹。

例えば、以下のように使用できます:

“`kotlin
buildAnnotatedString {
pushStyle(MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.primary).toSpanStyle())
append(“this is a link”)
pop()
}
“`

上記の例では、テキストの一部をリンク化しています。この場合、リンクは通常、`pushStringAnnotation`と一緒に使用されます。これは、注釈を取得するた

元記事を表示

Kotlin Parcelableの使用ケースについて

Androidのアプリケーション開発をしているとParcelableというものが出てきます。

## Parcelableとは?
Androidにおけるシリアライズ、デシリアライズするためのインターフェースです。
Parcelableを実装することで、オブジェクトの状態を保持できます。つまり、値を受け渡しを可能にします。

## どんなシナリオで使われるか?
**アクティビティやフラグメントが一時停止したり再開する場合**
onSaveInstanceStateおよびonRestoreInstanceStateメソッドでParcelableを使用してオブジェクトの状態を保存および復元します。
以下のような感じです。

“`kotlin
private val SAVE_KEY = “save_key”

//保存する
override fun onSaveInstanceState(outState: Bundle) {
outState.putParcelable(SAVE_KEY, myDataObject)
super.onSaveInstanceState(o

元記事を表示

jetpack composeのktlint導入メモ

[litintを実装する時の参考ドキュメント](https://pinterest.github.io/ktlint/latest/install/integrations/)

## 導入
まずbuild.gradle.ktsを書き換えます
“` build.gradle.kts(app)
val ktlint by configurations.creating

dependencies {
ktlint(“com.pinterest.ktlint:ktlint-cli:1.0.1”) {
attributes {
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
}
}

}

val ktlintCheck by tasks.registering(JavaExec::class) {
group = LifecycleBasePlugin.VERIFICATION_GROUP
descri

元記事を表示

Android Notification

# 基本的なNotificatationを作成する
## 基礎知識
### Verごとの動作の違いについて
・Android 8.0(API26)以下 ⇨ 通知チャンネルの作成は必要なし
・上記以上 ⇨ 通知チャンネルの作成が必要

・権限について
Android 13.0(API33)以上 ⇨ android.permission.POST_NOTIFICATIONSのパーミッションリクエストが必要

## 実装する
### 1.通知チャンネルの作成
“`kotlin
private fun createChannel(){
//通知チャンネルの名前を指定
val name = “Web notification”
//チャンネルの説明文を指定
val description = “this notification is notify when you access web site”
//通知の重要度を指定
val importance = NotificationManager

元記事を表示

.NET MAUI 環境構築に四苦八苦したときの備忘録

## 参考記事
https://learn.microsoft.com/ja-jp/dotnet/maui/get-started/installation?tabs=vswin

https://learn.microsoft.com/ja-jp/dotnet/maui/get-started/first-app?tabs=vswin&pivots=devices-android

https://learn.microsoft.com/ja-jp/xamarin/android/get-started/installation/android-emulator/device-manager?tabs=windows&pivots=windows

https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-workload-restore

https://learn.microsoft.com/ja-jp/visualstudio/install/update-visual-studio?view=vs-2022

##

元記事を表示

【Android】gradleに設定したライブラリはどこから取得されるのか

# はじめに
こんにちは。
Android開発者が何気なく使っているライブラリですがどこから取得しているかすごく調べる機会があったので備忘録として。
前提としてbuild.gradleのdependenciesブロックにimplementationを追加すれば外部ライブラリを取得するということは知っているのですが(おそらく大半のAndroidエンジニアはわかっていると思いますが。。)ただ、ビルド時にライブラリがどこのコードでどのように取得されるのかは、詳しく理解していませんでした。
なので、流石にAndroidエンジニアを名乗るのに知っておかなければということで調べたことをまとめることにしました。

# 用語のおさらい
前提として知っておくといい用語をいくつか書いておきます。
### Gradle
高度なビルドツールキットのことで本来は「Gradle Build Tool」でありそれを略してGradleとのことAndroidとして使用されているのはGroovyそして最近はKotlinですね。

https://docs.gradle.org/current/userguide/user

元記事を表示

OTHERカテゴリの最新記事