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

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

DroidKaigi2024で気になる登壇まとめ:前半

# はじめに
今年もDroidKaigi2024が開催されますね!
毎年とても楽しみにしているイベントの一つですが、今回も大変有益な情報に溢れていそうです!
そんな中で個人的に気になる登壇をまとめたいと思います、12、13と記事を分ける形でまとめていきます!

# その1:Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜

https://2024.droidkaigi.jp/timetable/689254/

すでにフルComposeで実装しているプロジェクトなどは優先度が下がると思いますが、現状AndroidViewを採用しているプロジェクトからしたら大変有益な情報だと思います。
また、今回の登壇の内容は実際に現場で試行錯誤の末たどり着いた方法とのことで、今後移行を検討しているプロジェクトにはとても参考になる内容になっていそうです。

# その2:Kotlin 2.0が与えるAndroid開発の進化

https://2024.droidkaigi.jp/timetable/687445/

まさに現在注目の的となってい

元記事を表示

最短でJetpack ComposeにCameraXを導入する

この記事では、
最短でJetpack ComposeにCameraXを組み込むための方法について紹介します!

## CameraXとは?

CameraXとは、カメラ機能の開発が簡単にできるJetpackライブラリです。
端末依存などを気にせず、一貫性のあるAPIで開発を行うことができます。

とても便利なライブラリなのですが、
ドキュメントや、公式のサンプルをみると、Android Viewでの実装例しか載っておらず、
Jetpack Composeでの実装例がありません。

https://developer.android.com/media/camera/camerax?hl=ja

https://github.com/android/camera-samples

今回は、CameraXをJetpack Composeで動かしたい!という人のために、
Jetpack Composeでの実装例を紹介していきます。

## CameraXを動かすために必要なもの

具体的なコードの解説に入る前に、
まず、CameraXを動かすために必要なものを整理しましょう。

### P

元記事を表示

AndroidのPhoto pickerについて調べたメモ(起動確認編)

## なぜ調べたか
2024年8月31日月までにREAD_MEDIA_IMAGESとREAD_MEDIA_VIDEOを要求できるアプリの数を減らすとのことで
その対応としてAndroidの写真選択ツール(Photo picker)の利用を検討する必要があるとのことだがOSバージョンによってどのように起動するのかわからなかったので所有している実機を利用して調べてみた

※対応は2025年1月までの延長をリクエストできるらしいです

## はじめに公式情報の確認して実装方法を確認する
https://developer.android.com/training/data-storage/shared/photopicker?hl=ja

## 単一選択で実装して起動してみる

* プロジェクトを新規作成する、今回はJetpack Composeを利用して作成
* PhotoPicker用のボタンを作成

“`kotlin
@Composable
fun PhotoPickerButton() {

val pickMedia =
rememberLauncherF

元記事を表示

Android Gradle Pulugin で Junit5 を使う言語切り替えテストのための設定 ( Gradle Kotlin DSL )

通常の Gradle の設定とは少し違っていたため、記録に残します。
動作環境: Android Studio Koala

## 作ったプログラム
以前投稿した記事を執筆時に作成した観光地リストアプリの JSON ファイル情報のローカライズを行いました。

https://qiita.com/jtakumi/items/daca2ec02cca68f7262d

Android のシステム言語を変えて、アプリを再起動すると読み込む JSON ファイルを切り替えてそれぞれの言語で表示する仕組みです。
使用しているプログラムを簡単に書くと以下のようなものです。

“`getDefaultLanguage.kt
fun getLocalizeJSONFileName():String {
// ここで今デフォルトにしている言語を読み出します。
val locale = Locale.getDefault()
val language

元記事を表示

edge-to-edge が有効な画面でステータスバーとナビゲーションバーに描画する[Compose編]

edge-to-edge が有効な画面ではステータスバーとナビゲーションバーが透明になり、コンテンツがステータスバーとナビゲーションバーの下生地として表示されます。edge-to-edge が有効な画面がどのように表示されるかは以下の記事を参照してください。

https://qiita.com/seabat-dev/items/b48d56e3d5bc66d52979

上の記事で紹介したが、Scaffold を使用するとコンテンツをステータスバーとナビゲーションバーと被らないように表示できる。Scaffold 直下の Composable 関数に色を付けてみる。

“`kotlin
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge() // edge-to-edge を有効にする。(Android

元記事を表示

アプリの対象 API レベル 35 で初めて edge-to-edge に対処する[Compose編]

Android 15 の動作変更点の一つである [Edge-to-edge enforcement](https://developer.android.com/about/versions/15/behavior-changes-15#edge-to-edge) を読みましたか? アプリの対象 API レベル 35 に上げると edge-to-edge が強制適用されるようですね。これまで edge-to-edge を無視して来てしまい、既存アプリに edge-to-edge が適用されたらどうなってしまうのかわからない、そしてどう対処すれば良いのか悩んでいる人に読んでほしい。

## edge-to-edgeとは

まずは edge-to-edge が何かを知る必要がある。

edge-to-edge と

元記事を表示

cameraxとmlkitでバーコード読み取り画面実装Part4

# はじめに
今回は長らく間を空けてしまっていたバーコード読み取り機能の最終パートになります
### 本文
実際にカメラのPreviewViewとUseCaseをカメラに紐づける部分の実装になります
“`kotlin
@Composable
internal fun BarCodeCamera(
modifier: Modifier = Modifier,
useCase: UseCase,
) {
Box(modifier = modifier) {
val context: Context = LocalContext.current
val lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current
AndroidView(
modifier = Modifier
.fillMaxWidth()
.aspectRatio(PreviewRatio),

元記事を表示

Playストアの「フォアグラウンド サービスの権限」に対応する

# いきなりFGSとか言われる

すっかり毎年恒例となった Play ストアの Android 最新版への対応(※これをやらないとそのアプリの更新ができなくなる)ですが、2024年も Android 14 への対応期限が 8/31 に迫ってきたので targetSdk を 33 から 34 にしてビルド&実行してみたところ、下記のエラーが起きて全然動きませんでした。

“`
android.app.MissingForegroundServiceTypeException: Starting FGS without a type callerApp=ProcessRecord{435fc46 16794:jp.takke.cpustats.debug/u0a296} target
at android.app.MissingForegroundServiceTypeException$1.createFromParcel(MissingForegroundServiceTypeException.java:53)
at android.app.MissingForegrou

元記事を表示

Compose Multiplatformを触ってみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3796622/ad1209ef-0318-1d8e-b1d5-d3e763db2f36.png)

## 挨拶

初めまして。
bravesoft株式会社でエンジニアリングマネージャーらしき事をしているおじさんです。

以前弊社技術blogにて[KMMについての記事](https://www.bravesoft.co.jp/blog/archives/13377)を書いていたので、今回はUIも共通化出来るようになった「Compose Multiplatform」について触ってみて所感を書いていこうと思います。

## 始め方

まずは[公式](https://www.jetbrains.com/ja-jp/lp/compose-multiplatform/)の[チュートリアル](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-gett

元記事を表示

【UE5.3】MetaQuest2向けにAndroidでPackage化したい

# はじめに
この記事はUE5.3で作ったVRアプリをパッケージ化してみる記事です。

利便性の為一部公式のドキュメントから逸脱した手段を踏んでいます。また、4や5.1、5.2とは手順に互換性がありません。この手順でセットアップを行うと、5.2などでビルドできていた環境を損なう可能性があります。

参考
[公式ドキュメント:Android SDK および NDK を設定する](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/how-to-set-up-android-sdk-and-ndk-for-your-unreal-engine-development-environment?application_version=5.3)
[DeveloperForum質問:Error when install the build file of UE5.1 VR](https://forums.unrealengine.com/t/error-when-install-the-build-file-of-ue5-1-vr

元記事を表示

Jetpack Glanceではじめるウィジェット作り

# はじめに
こんにちは。
株式会社アイスタイルで`@cosme`アプリのAndroidエンジニアをしている鈴木です。
最近は、iOSアプリの案件をこなしていたり段々いろんなことを担当し始め、日々学んでいる毎日です。

今回は個人的な興味もあってJetpack Glanceを初めて触ってみたので、Glanceでのウィジェットの実装方法や気づいたことを書き残しておこうと思います。

## Jetpack Glanceとは

Jetpack Glance[^1]とは、アプリウィジェットをJetpack Compose[^2]で作成することができるフレームワークです。

## 導入方法

導入方法は至ってシンプルです。
build.gladleもしくはbuild.glagle.ktsに次のdependencyを追加するだけです。

Groovy DSLの場合
“`groovy
dependencies {
implementation “androidx.glance:glance-appwidget:1.1.0”
}
“`

Kotlin DSLの場合
“`kotlin
dep

元記事を表示

Android開発者向けのCharles導入と主な使い方

## はじめに
こんにちは。
株式会社アイスタイルで[@cosmeアプリ](https://play.google.com/store/apps/details?id=jp.co.istyle.atcosme&hl=ja)のAndroidエンジニアをしている山本と申します。

今回は、Android開発する上で、便利な通信キャプチャソフトウェアのCharlesの導入とAndroid開発する上で便利な使い方について共有いたします。
(この情報は、2024/07時点での情報となります。)

## Charlesとは
[Charles](https://www.charlesproxy.com/)は、HTTP通信をキャプチャし、リクエストやレスポンスを確認できるソフトウェアです。

![Charles.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3834173/47968c40-cb21-8127-eda9-f8ef95ad5c75.png)

## Charlesの導入方法

### ダウンロード
以下の

元記事を表示

[Flutter]Android Studioでエミュレーターを起動させようとすると”Unable to locate adb”が出る

## 初めに
 Flutterで開発したいアプリを思いついたが数年ぶりに触るので公式ドキュメントからVisual studioで作成しようとしたところつまづいたので備忘として。

## 現象
 公式ドキュメントに従ってVisual studioでエミュレータを起動しようとすると、画面が真っ暗なエミュレータが表示され、main.dartを実行するとエラーが発生してしまう、、

## 調査
 エラーログをググるといくつかヒットするが試してみてもうまくいかないため、そもそもAndroid studioで起動するか確認してみた。
→Android studioからでも起動せず、「Unable to locate adb」が表示された。

## 解消方法
 ↓の記事で解決できた!
 https://teratail.com/questions/276597

調査だけで半日ほど費やしてしまった、、基礎知識がないとエラーログをググるだけになってしまうのでそれぞれの用語も勉強しておく

元記事を表示

Jetpack Compose の @Preview を使いこなす

# 前提条件
– Jetpack Compose を使ったことがある
– Androidアプリを作ったことがある
– Hiltが分かると良い わからなければ雰囲気で読み取って


# 単体で使ってみる


## HolloWorld

NewProjectした時に出てくるやつ
“`kotlin
// 表示したい内容を記述して、
@Preview // ←これをつけるだけ
@Composable
fun GreetingPreview() {
MyApplicationTheme {
Surface(modifier = Modifier.fillMaxSize()) {
Greeting(“Android”)
}
}
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Card {
Text(
text = “Hello $name!”,

元記事を表示

RenderComのスピンダウン回避の為にAndroidを使用した話

# [Render.com](https://render.com/)とは?
[Render.com](https://render.com/)は雑に言うと[Heroku](https://jp.heroku.com/)みたいな物です。

Herokuは無料枠が消えましたがRender.comはまだできます。

(ここからは詳細な話。趣旨とは離れるので興味のない方はスキップしてください。)

Renderは5つのサービスを提供しています。
– ありふれたウェブサービス
– 静的サイト
– プライベートサービス
– バックグラウンドワーカー
– Cronジョブ

また、下記の物も使用できます。
– PostgreSQL
– Redis

## 無料枠について
一部のサービスのインスタンスは無料で作れます
– webサービス
– PostgreSQL
– Redis

が、制限として下記の物があります。
– 15分アクセスが無いと停止します(スピンダウン)。停止時にアクセスされると1分ぐらいかけて再起動されます
– つまり15分に1回はアクセスすればよい
– 毎月750時間までしか

元記事を表示

richeditor-android 使ってみた

# はじめに
https://github.com/wasabeef/richeditor-android?tab=readme-ov-file

↑こちらのライブラリを使ってみたところ、提供元に書かれていない内容で使えそうなものがあったので記事にしておこうかと思います。
# 準備

提供元の指示の通り build.grableに以下を追加します。

“`
dependencies {
implementation ‘jp.wasabeef:richeditor-android:2.0.0’
}
“`

# 実装

“`

“`
layoutにRichEditorを実装し、Fragment側で使えるようにします。

このままの状態でも普通のEditTextのように扱え

元記事を表示

Gradleでカスタムタスクを定義する

## はじめに
Androidアプリ開発をしてる時に、主にビルドやライブラリの管理の時にbuild.gradleを触るかと思います。

私自身はこれまで雰囲気で使っていたのですが、それは良くないなと思っています…
そもそもGradleってなんなんだということすらしっかり理解できてなかったので、
今回はGradleをインストール・カスタムタスクの作成・実行というところをやってみたので、まとめていきたいと思います。

## Gradleとは
JavaやKotlin等を使ったプロジェクトのビルド自動化ツールになります。
コードのコンパイルやテスト、プロジェクトで使われている依存関係の管理を担って、ビルド作業を自動で行ってくれます。

対応する言語としては、以下の言語をサポートしているようです。([Gradle ユーザーマニュアル](https://docs.gradle.org/current/userguide/userguide.html))
– Android Java
– Kotlin Multiplatform
– Groovy
– Scala
– Javascript
– C/C

元記事を表示

Android15 16KB Page size対応

# 概要

ページサイズは、OSがメモリを管理する方法を決定する単位です。小さいページサイズは、メモリ管理のオーバーヘッドを削減できますが、より多くのメモリフラグメントが発生する可能性があります。一方、大きいページサイズは、フラグメント化を削減できますが、メモリ管理のオーバーヘッドが増加します。

Androidは従来、4KBのページサイズを使用していましたが、Android 15では、デバイスが16KBページサイズをサポートする場合、オプションで16KBページサイズを使用できるようになりました。
なお、iOSはずいぶん前から16KBサイズに対応しています。

# 対応

Java/Kotlinだけでプロジェクトが構成されている場合、特にやることはないです。NDK、C/C++を用いたコードを含む場合(.soファイルがapkに含まれる)対応が必要になります。
対応の概要は、公式に詳細が記載されていますが、用いるビルド設定において、16KBを有効化するフラグを付けて再ビルドを行います。
一例ですが、NDK buildを用いて構成されている場合、以下のフラグ地を設定するだ

元記事を表示

Android 15 に備えてテキスト入力がある画面を edge-to-edge 対応する

Android 15からedge-to-edgeが強制されるようになります。

https://developer.android.com/about/versions/15/behavior-changes-15?hl=ja

現在、Android Studioで新規プロジェクトを作成するとedge to edge対応のサンプルが作られるように、ひとまず従来と同等の表示をさせるの難しくありません。
しかし、以下のように、テキスト入力がある画面で、画面下部に送信などのボタンがある画面において、ソフトウェアキーボードが表示されたときは、それに合わせてボタン部分もせり上がらないと一度キーボードを非表示にしないとボタンが押せないという状態になってしまいます。

|||
|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/714eb0b2-2783-c3ce-7ba8-54d033727c55.png)|![](https://qiita-image-store.s3.ap-northe

元記事を表示

Android Studio, Xcode でのアプリローカライズ方法

Android Studio には jetpack compose, Xcode は SwiftUI を使ったプロジェクトがある状態です。

## 作業環境
2024/7/13 現在
### Android Studio
Android Studio Koala
使用しているプロジェクト: Jetpack Compose で作成したアプリ

https://developer.android.com/studio

### Xcode
Xcode 15
使用しているプロジェクト: SwiftUI で作成したアプリ

https://apps.apple.com/us/app/xcode/id497799835

## Android Studio
1. プロジェクトファイルの中から string ディレクトリを探します
2. 選択した状態で右クリックをします
3. メニューから open translations editor をクリックします

元記事を表示

OTHERカテゴリの最新記事