Android関連のことを調べてみた2023年09月27日

Android関連のことを調べてみた2023年09月27日

2023 Android の IME (キーボード) の作成

# 作成したもの

### [Play store](https://play.google.com/store/apps/details?id=com.kazumaproject.markdownhelperkeyboard)
https://play.google.com/store/apps/details?id=com.kazumaproject.markdownhelperkeyboard

### [Github](https://github.com/KazumaProject/JapaneseKeyboard/tree/master)

https://github.com/KazumaProject/JapaneseKeyboard/tree/master

# 参考にした記事

– [InputMethodService Android Developers](https://developer.android.com/referen

元記事を表示

コンパイルエラーが出てないからって油断はしちゃだめだよ

## 経緯

こんなコードがありました。

“`kotlin
val hoge: Hoge?
if (savedInstanceState != null) {
hoge = savedInstanceState.getParcelable(“hoge”)
} else {
hoge = arguments?.getParcelable(“hoge”)
}

if (hoge == null) {
throw IllegalArgumentException()
}
“`

私は、良かれと思ってこういうコードに書き換えてコミットしました。

“`kotlin
val hoge: Hoge = if (savedInstanceState != null) {
savedInstanceState.getParcelable(“hoge”)
} else {
arguments?.getParcelable(“hoge”)
} ?: throw IllegalArgumentException()
“`

冗長な処理を短く書いただけ とい

元記事を表示

新卒入社半年でRakumonの開発でしてきたこと

# Rakumonについて
* **いつでもどこでもRakumonを使える**
Rakumonは**24時間365日**、**家** でも **外出先** でも **通学中** でも利用することができます。

* **厳選されたRakumon講師陣**
Rakumonで採用している講師陣は、**国公立などの難関大学**に在籍している学生を採用しています。


* **豊富な質問対応教科**
質問できる教科は以下の表通りになっています。

| 教科

元記事を表示

FlutterでのFirebase関連のビルドエラー(android)とその解決方法

FlutterAndroidでプロジェクトをビルドする際に、Firebase関連でいくつかのエラーが発生しました。この記事では、それらのエラーとその解決方法について詳しく説明します。特に、`android/build.gradle`と`android/app/build.gradle`の変更点に焦点を当てています。

## 1. Firebase関連のビルドエラー

### エラー内容

ビルド時に以下のエラーが発生しました。

“`
Error while evaluating property ‘extraGeneratedResDir’ of task ‘:app:mapDebugSourceSetPaths’
“`

### 解決方法

このエラーは、FirebaseのGradleプラグインのバージョンが古いために発生することがあります。解決するためには、`android/build.gradle`の`dependencies`セクションを以下のように更新する必要があります。

“`gradle
dependencies {
classpath ‘com.an

元記事を表示

DroidKaigi 2023 Day2 セッション概要&感想

# はじめに
DroidKaigi 2023に参加してきましたので、オフラインで聴講してきたセッションの概要とその感想についてまとめていきます。
Day1の紹介もしてますのでよろしければご覧ください

https://qiita.com/t_nana/items/1c6ab960a5b3db3b1dbd

# MVIに基づくStateMachineアーキテクチャ:KMMとJetpack ComposeとSwiftUIを組み合わせる

## 概要
クロスプラットフォームテクノロジーであるKotlin Multiplatform(以後KMP)と相性がいいアーキテクチャであるMVIを導入し、KMP, Jetpack Compose(Android用のUIライブラリ), SwiftUI(iOS用のUIライブラリ)の

元記事を表示

DroidKaigi 2023 Day1 セッション概要&感想

# はじめに
DroidKaigi 2023に参加してきましたので、オフラインで聴講してきたセッションの概要とその感想についてまとめていきます。
Day2のセッション紹介はこちらです

https://qiita.com/t_nana/items/8789fd8dbcc5b18ab560

# これで安心! Compose 時代のDon’t keep activities対応
## 概要
開発者向けオプションにある「アクティビティを保持しない(Don’t keep activities)」をONにすることで、メモリの少ない端末の動作を再現できるので、その状態で起こるバグ、Activity破棄時にも画面情報を引き継ぐための方法について解説したセッションでした。
セッション内では、ComposeにおいてはrememberSavableを使うことで、引き継ぎたい情報のkey設定やsave/restoreの処理を記述することなく引き継ぎ処理ができるのでおすすめとのことでした。ただし、ここで使っているのはBundleのため、このBundleの容量上限である50MBを超えないようにする必要があると

元記事を表示

Flutterってどうなん?実際に商用アプリ開発で使ってみた感想

これまで3年ほどWebエンジニアとして働いており、いろいろあって今年からFlutterでモバイルアプリを開発しています。

Flutterを使い始めて半年が経ったので実際に使ってみて感じたいいと思ったところとイマイチだと思ったところを紹介したいと思います。

# Flutter とは?

Flutter は 複数のプラットフォームに対応したオープンソースなフレームワークです。現在では、Android・iOS・Web・Windows・MacOS・Linuxに対応しており、単一のコードで複数のプラットフォーム上で動作可能なアプリケーションを作成することができます。

https://flutter.dev/

# 実際に使って感じたいいところ、イマイチなところ

## いいところ

### 学習コストは意外と高くない

Flutterでは、Dartという言語を使います。

https://dart.dev/

個人的な感想としては、Javascript, Typescript に似ているなーと思っています。
なので、Webをずっと触っていた私はすんなりと入ることができました。

型定義がで

元記事を表示

クラウドレンダリングを試してみた

GeForce NOWのようなグラウド上でパワフルなゲームやアプリを動かす方法としてUEのPixel StreamingやTencentCloudのCAR等があります。
重たい処理があるアプリをサーバー上のVMで動作させ、その映像をブラウザ等でリアルタイムに受け取ってアプリを操作するという概念です。

今回はTencentCloudのCAR(クラウドレンダリング)を試してみました。
動作確認の用に簡易に動かせるTestモードがありますので、それで動作させるところまでをこの記事のゴールとします。

## TencentCloud CARのアーキテクチャ
![PtTx648_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300377/8c20e435-9605-ac3b-853b-975a435d9c3a.jpeg)
(参照元:https://www.tencentcloud.com/jp/products/car)

## アプリケーションのアップロード
– TencentCloudのConsoleに

元記事を表示

Kotlin Multiplatform は iOS エンジニアの開発者体験が良くないのではと思っていたが、SKIE を使えば良いと思った。

# 経緯

ある日 [AndroidDagashi](https://androiddagashi.github.io/) を見ていたら [#292 2023-09-10](https://androiddagashi.github.io/issue/292-2023-09-10/) に

> Swift-friendlyなAPIをKotlin Multiplatformで利用可能にするSKIEがオープンソースで公開
> https://touchlab.co/skie-is-open-source

というものが紹介されていて、[公式サイトの Features](https://skie.touchlab.co/features/) を読んでみたら、Kotlin Multiplatform (KMP) を用いた iOS/Android アプリ開発について思うところがありましたが、それを解決できるのではと思いました。

# 概要

この記事は [いくつかある SKIE の機能](https://skie.touchlab.co/features/) の [Sealed Classes]

元記事を表示

【Android】多言語への対応【Kotlin】

# はじめに
以前 この記事の中で使用している端末の言語設定をもとに言語を指定する
と言ったようなことをしたのですが、どのくらいの数の言語に対応しているのか気になったので調べてみました。

# 国一覧表

|表記|言語|国|
|:—|:—|:–|
|CANADA|ENGLISH|カナダ|
|CANADA_FRENCH|FRENCH|フランセ・カナディアン(カナダやアメリカの一部)|
|CHINA|CHINESE|中国|
|FRANCE|FRENCH|フランス|
|GERMANY|GERMAN|ドイツ|
|ITALY|ITALIAN|イタリア|
|JAPAN|JAPANESE|日本|
|KOREA|KOREAN|韓国|
|PRC|SIMPLIFIED_CHINESE|中国|
|TAIWAN|TRADITIONAL_CHINESE|台湾|
|UK|ENGLISH|イギリス|
|US|ENGLISH|アメリカ|
|ROOT|ROOT|その他|

元記事を表示

Androidのワイヤレスデバックの接続が不安定で悩んでいる

# Androidのワイヤレスデバック
以前にAndroidのワイヤレスデバックについてQiita記事を書きました

https://qiita.com/cozyk100/items/dce05340d5922b79ada3

USBケーブルがないので、便利な反面、Wi-Fiを使うので安定性に欠けます。

現在、Android11でワイヤレスデバックを使用していますが、接続が不安定で困っています。既にペアリングはできているのですが、Android端末側でワイヤレスデバックを開始したとき、すぐに接続できる場合と、いくら待っても接続しない場合があります。

Android端末側、PC側を再起動したりしても、全く状況変わらず。そのうち、諦めた頃にあっさり接続したり。また接続しなくなったり。

今現在、その原因が何なのか全くわかりません。Wi-Fiを通じてAndroid端末とAndroidStudioがインストールされているPCとの接続は普通にできています。

全く、その日、その時の気分で接続できたり、できなかったりとしか思えません。

何か、Androidのワイヤレスデバックのデバック?(一

元記事を表示

JetpackCompose Textの1文字だけ色変える方法

JetpackComposeで途中の文字に対して違う色を設定する方法です。

# リファレンス
https://developer.android.com/jetpack/compose/text?hl=ja#multiple-styles

# コード

リファレンスの公式サンプルコードを、もう少しカラフルにしてみました。
“`.kt
@Composable
fun MultipleStylesInText() {
Text(
buildAnnotatedString {
withStyle(style = SpanStyle(color = Color.Green)) {
append(“H”)
}
withStyle(style = SpanStyle(color = Color.Cyan)) {
append(“ello”)
}

withStyle(style =

元記事を表示

【Android】状態保存はSavedStateHandle.saveableが便利

# はじめに
AndroidにはActivityが破棄されるタイミングが存在します。
例えば、端末内のメモリーが圧迫されている状態などがそれに該当しますが、開発者設定でActivityを保持しない設定にした場合も同様の状態を再現することが可能です。
Activityが破棄されるとViewの状態はことごとく初期化され、文字を多く入力する画面などで発生すればユーザビリティが大きく低下するような問題が発生します。
その場合の対策としてSaveStateHandleが存在していると思いますが、このSaveStateHandleを便利に使用可能なsaveableを今回ご紹介したいと思います。

# 使用準備
まずsaveableを使用するためには以下を追加する必要があります。

“`build.gradle
implementation “androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1”
“`
saveableは2.5.0で追加された機能になりますので、バージョンを指定する際は2.5.0以上を指定してください。

# saveable

元記事を表示

日本でもStudio Botが使えるようになっていたよ!

# 概要
なんと、CanaryでStudio Bot(Android StudioのAIチャット)が日本でも使えるようになっていました!
(Android Studio Iguana | 2023.2.1 Canary 5 で確認しました)

https://android-developers.googleblog.com/2023/09/studio-bot-expands-to-international-markets.html

# 設定方法

Settings > Appearance & Behavior > System Settings > Data Sharing の「Send usage statistics to google」をONにする
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441643/beb9432d-3440-ca1d-1630-dfb237d4620d.png)

View > Tool Windows > Studio Bot でTool Windo

元記事を表示

Android の WebView をコード上でズームイン/ズームアウトする

Android の WebView におけるズーム実装の情報が少なかったのでメモ。

# ズームインする

表示されている WebView の中心に向かって段階的にズームインする。

“`kotlin
WebView.zoomIn()
“`

# ズームアウトする

段階的にズームアウトする。

“`kotlin
WebView.zoomOut()
“`

# 可能な限りズームインする

“`kotlin
WebView.zoomBy(100f)

元記事を表示

Kotlin Serizalizationを使ってみた

業務アプリのjsonパーサーをmoshiからKotlin Serializationに置き換えました。(新規のAPIに対するものだけですが)
そのときのまとめです。
## 準備
gradle pluginを使います。
(アノテーションに必要なのかな?)
“`kotlin:root/build.gradle
plugins {
kotlin(“plugin.serialization”).version(“1.9.0”).apply(false)
}
“`
“`kotlin:module/build.gradle
plugins {
kotlin(“plugin.serialization”)
}

“`
ライブラリを入れます。
“`kotlin:module/build.gradle
dependencies {
implementation “org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0”
}
“`
サンプルではバージョンカタログを使っている。

## jsonをkotlinクラスにパ

元記事を表示

AndroidアプリからGoogle Driveにファイルをバックアップする

AndroidアプリからGoogle Driveにファイルをバックアップするは下記サイトが参考になりそう
https://zenn.dev/amegane/articles/e5d086f7ebaf8d

元記事を表示

Android でビルドエラーになった話

## はじめに

Android Studio でビルドができない問題について個人的メモとしてまとめました。

## 環境

macOS Ventura 13.1
Android Studio Dolphin | 2021.3.1 Patch 1

## エラー #1

`Could not find tools.jar.` となりビルドができない

“`
> Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.
“`

### 解決方法

メッセージにあるように `tool.jar` を所定の位置に配置すると解決します。
私の環境ですと `/Users/<ユーザー名>/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib` にありましたのでコピーしました。

“`
$

元記事を表示

単純な棒グラフをJetpackComposeでつくる

# はじめに
今回はすごくシンプルな棒グラフをJetpackComposeで作っていこうと思います
### 本文
今回は左と下部にのみ基準線がありますが、各RowやColumnのところにBoxで線を追加してあげることで囲むことも可能です
“`kotlin
@Composable
fun BarChart(
data: Map,
maxValue: Int,
isShowHalf: Boolean
) {
val gray = HogeTheme.colors.Gray
val textMeasurer = rememberTextMeasurer()
val measurerStyle =
HogeTheme.typography.fontSize12.copy(color = HogeTheme.colors.Gray)
Column(
modifier = Modifier
.fillMaxSize()
.paddi

元記事を表示

CircleShapeとRoundedCornerShape(50)、どちらが良いのか

こういう角丸にしたいときに使うやつ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53293/849b438e-fe8a-375d-358c-e615ff6db3c4.png)

## 結論

実装としては、どっちでも同じです。

“`kotlin
/**
* Circular [Shape] with all the corners sized as the 50 percent of the shape size.
*/
val CircleShape = RoundedCornerShape(50)
“`

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/RoundedCornerShape.kt;l

元記事を表示

OTHERカテゴリの最新記事