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

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

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

元記事を表示

【2023年】初心者がやってみた!Android アプリの公開

# はじめに

こんにちは、mamimeです:relaxed:
この記事は初心者がなるべく難しいことをせずにAndroidアプリを公開する手順を書きました。
私もアプリ開発自体未熟なので、もし訂正箇所がありましたらぜひとも教えてください。

# 初めてのアプリ公開

アプリ開発初心者の私が、紆余曲折もありつつAndroidアプリを公開することができました:muscle:
嬉しいです!
その過程でいろいろ躓く部分があったので、初めての方に参考になればと思い、この記事を書きました。

https://play.google.com/store/apps/details?id=com.differentiate19.quiz

:pencil2: アプリ名:超高速!微分チャレンジ:pencil2:
ちなみに私が公開したアプリは微分の問題を30秒以内にどれだけ解けるか競うという内容のアプリです。
高校数学を学んだ高校生や、学び直しを始めた社会人の方の助けになりたいと思い、作らせていただきました。
ぜひインストールして遊んでみてください!
レビュー等もお待ちしています。

Stable Diffusion APIを使って簡単に画像生成アプリを作ってみた

# はじめに
以前に比べると盛り上がりは感じないかもしれないが、それでもAndroidやiOSストアのランキング上位には画像生成AI系のアプリがいくつも並んでいて、生成系AIにも興味があったので同じようなものが作れないかなと思った。

しかし、全部自前で用意するとなると時間もお金もかかりそうなのでまずはAPIとしてそのまま利用できるサービスを探してお試ししてみることに。

# 利用したサービス

Stable Diffusion本家のStability AIでも利用できるAPIは用意されていたが
https://platform.stability.ai/

APIや料金体系がわかりやすそうだったりしたので今回はこちらのサービスを利用してみました。
https://stablediffusionapi.com/

![price.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245797/a80f644b-ab4c-e887-807a-18a8e26acea5.png)

APIを利用できるのはSta

元記事を表示

Android開発「startActivityとstartActivityForResultが共存してることってあるのか…」

## はじめに
Android開発でアプリケーションの異なる画面(アクティビティ)間での遷移は非常に一般的な操作です。
この記事では、開発時「えっ、なんでこのコード`startActivity()`と`startActivityForResult()`が両方あるの?」と思ったため、その違いについて調査しました。
(開発時に見ていたコードはJavaでしたが、今回はGoogle社がAndroidアプリの開発言語として公式認定したKotlinでサンプルコードを作成しています。)

## startActivity()
### 基本的な使い方
はじめに`startAcitivty()`についての説明も記載しておきます。
`startActivity()`これはアクティビティを単純に起動する基本的なメソッドです。
通常、このメソッドは`Intent`オブジェクトを引数として受け取ります。

“`kotlin
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
“`
このコードは、`Second

元記事を表示

androidのイベント通知

Androidアプリケーションにおけるイベント通知の方法は、アプリケーションのアーキテクチャや要件に合わせて選択する必要があります。この記事では、主要なイベント通知方法であるLiveData、StateFlow、EventBus、BehaviorProcessorを比較し、それぞれの特徴や使用ケースについて説明します。

# LiveData
LiveDataはAndroid Architecture Componentsの一部であり、データの変更を監視し、UIコンポーネントに通知するために使用されます。以下はLiveDataの特徴です。

### 特徴:

ライフサイクル感知型:LiveDataはライフサイクルオーナー(通常はActivityやFragment)にバインドされ、ライフサイクルに合わせてデータの更新と通知を行います。
データ変更通知:データが変更された場合、自動的にUIに通知され、UIの更新が行われます。
非同期サポート:非同期操作を行うためにCoroutineやRxJavaと組み合わせて使用できます。
### 使用ケース:

UIコンポーネント(例:TextView、

元記事を表示

Jetpack ComposeでLottieのanimationを無限にする方法

### 今のやりかた
“`Kotlin
LottieAnimation(
composition,
iterations = LottieConstants.IterateForever,
)
“`

### 昔のやりかた
“`Kotlin
val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.search_animation))
val progress by animateLottieCompositionAsState(composition = composition, iterations = LottieConstants.IterateForever)
LottieAnimation(
composition = composition,
progress = { progress },
)
“`

### 参考
https://stackoverflow.com/a/73371580

元記事を表示

AndroidStudioで実行ボタンが押せない時の対処とそのしくみ

### 概要

Qiitaのキャンペーンをきっかけに
AndroidStudioとKotlinで学生時代ぶりにスマホアプリを作っています。
その時に出たエラーとその解決策をまとめました。

### 出たエラー

エラーというより、AndroidStudioの実行ボタン(▲のボタン)がグレーアウトして押せなかった。

### 解決方法

AndroidStudioのメニューの「File」→「Sync Project with Gradle Files」をクリックし、処理が終わると押せるように。

### 解決した理由

AndroidStudioのビルドは、Gradleで行われている。
プロジェクトとGradleを同期しないとプログラミングが実行できないことがある。

元記事を表示

visibilityよりもisVisibleを積極的に使った方がいい理由

# こいつらは一体何
`visibility`も`isVisible`もAndroidにおいて**Viewの表示・非表示を制御するプロパティ**です。

たとえばidが`hoge_button`というボタン要素があったとしてこれを**表示状態**にしたい時、次のように書けます。

“`kotlin
binding.hogeButton.visibility = View.VISIBLE
“`

しかし、以下のようにも書けます。 :eyes:

“`kotlin
binding.hogeButton.isVisible = true
“`

**「え、じゃあどっちのほうがいいの?!」**

ってなりませんか。(私はなりました。)

# 結論
**`isVisible`を積極的に使おう!** です

## Booleanなので関係のない値が入ってしまう可能性が低い

たとえば`visibility`を使う場合、値はIntが入ります。

“`kotlin
binding.hogeButton.visibility = View.VISIBLE
“`

この`View.VISIBL

元記事を表示

Androidアプリ内で画像保存を行う方法(MediaStore)

## はじめに
この記事では、アンドロイドアプリ内で画像保存をするためのストレージの権限の確認を行い、MediaStoreを使って画像保存機能を実装する方法について説明します。
使用した言語はKotlinです。開発環境はWindows10,仕様したアプリケーションはAndroid Studio Flamingoです。

## 手順
### 1.外部ストレージの書き込み権限の確認
Androidでのメディアファイルは、通常「共有ストレージ」と呼ばれる場所に保存されます。共有ストレージに保存されているデータはアプリ間で共有できます。しかし、共有ストレージに保存されたデータはセキュリティ上の懸念があるため、アクセスには制限が設けられています。

共有ストレージに保存されているデータは、AndroidのMediaStore APIによってデータベースとして管理されています。MediaStore APIを使用することで、アプリは共有ストレージ上のメディアファイルにアクセスできます。ただし、このアクセスにはユーザーの許可が必要です。これは、悪意を持つアプリが端末内のメディアファイルに不正にアクセ

元記事を表示

Jetpack Navigation で Material 3 に沿った画面遷移アニメーションを設定する

# はじめに

Android アプリにおける画面遷移は主に

– [Activity による画面遷移](https://developer.android.com/training/basics/firstapp/starting-activity?hl=ja#BuildIntent)
– [Jetpack Navigation](https://developer.android.com/guide/navigation) を用いた Fragment による画面遷移
– [Compose を使用したナビゲーション](https://developer.android.com/jetpack/compose/navigation)

がありますが、この記事では Jetpack Navigation による画面遷移のアニメーションについて述べます。Jetpack Naviation は Compose 登場前から開発しているアプリでは、現在でも使われているケースが多いと思います。

## Jetpack Navigation による画面遷移は設定しなければアニメーションなし

[Jet

元記事を表示

DroidKaigi 2023で驚いたところメモ

Androidの技術が好きなので、技術よりというかのやつばっかり聞きました。太字で個人的に驚いたところを書いています。何か間違えや聞き間違いなどがあれば教えてください。

# Modifier.Node を使いましょう

これを見なければということで来ました。

https://github.com/DroidKaigi/conference-app-2023/pull/996

Composable関数は返り値があるとスキップされない(これは知っていた)

* Modifier.composed{}
**composed{}はModifireの返り値があるので、スキップされない。**
**状態を保持するために結構Compositionツリーが大きくなる。**

* Modifier.Nodeはチェーンが2つ。
**Elementは毎回Compositionごとに比較用に使われる。**
Nodeはレイアウ

元記事を表示

【Android】プロファイル可能なアプリにするための設定方法

# はじめに
日常的に自身が作成しているアプリのパフォーマンスが適正な状態かどうか確認する必要があるかと思います。
その確認方法の一つとして、Androdi Qからアプリをプロファイル可能にするために設定が提供されています。
今回は上記に関しての設定方法を備忘録的にまとめておこうと思います。

# 設定方法
設定方法は非常に簡単です。
以下をManifestのApplication直下に記載するだけでプロファイル可能なアプリとなります。

“`
“`

以上です、注意点としては当然ではありますが、プロファイル可能になるということは色々見えてしまうことになるので、本番環境で設定はしないよう気をつけましょう。

# さいごに
Droid会議お疲れ様でした!
今回も非常に刺激的な登壇ばかりでした、忘れないためにも暫くはDroid会議の内容を記事にまとめるようにしたいと思います。

元記事を表示

【Android】Mathクラスについてpart2【Kotlin】

# はじめに
前回に引き続き、Mathクラス内で使えそうなものを記事に残します!
前回よりは使わなそうだけど、もしかしたら使うなって感じ(自分基準)

https://qiita.com/Tsubasa12/items/709cbd01b1abbfe8e209

# max()
“`
max(10,-8) // 10
“`
2つの数字の最大値

# min()
“`
min(10,-8) // -8
“`
2つの数字の最小値

# pow()
“`
5.pow(3) // 125
“`

累乗
# PI
“`
PI // 3.141592653589793
“`
円周率

# random()
“`
random() // 0.6071951836875007
“`
0以上1未満の double 型の値をランダムに生成する

“`
val range = (10..20)
range.random() // 13
“`
範囲を指定することで、その範囲内でランダムに値を生成する

# 参考

https://www.choge-blog.

元記事を表示

【Android】ZxingとML Kit を検証してみた

# はじめに
こんにちは。
今回はQrコード読み取りでライブラリの比較(個人的主観)をしたのでそのことについてです。
実装の解説などはないので興味がなければ、ブラウザバックでお願いします!
まず、Android開発で考えなければならないのがライブラリ選定です。それはQRコードを読み取りに関わらずです。セキュリティ、性能面、サポート期限などなど。。。色々あると思います。
今回注目したのが性能面です。実際に実装を行い、動かしてみてもし新しく導入するなら自分なら。。と言うことを記事にしてみました。
# 注意事項
注意事項です。
比較は今回実装したもので判定しています。
なので、実装方法を変えることにより性能が上がることも十分あります。また先ほどもお伝えしましたが、完全に個人的な意見になりますので 、間違っている可能性もあります。確認したOSはAndroid11です。また、どちらのライブラリも素晴らしかったと言うことはお知らせしておきます。
# 比較結果
比較することは以下になります。
* 読み取り
* 読み取りの距離
* 距離が近い場合しっかり読み取れているか
*

元記事を表示

Androidアプリ「はやメモ」をリリースしました【個人開発】

## はじめに

個人開発したAndroidアプリ「はやメモ」をリリースしました!

Androidアプリのリリースは今回で2回目です!

この記事では、アプリの紹介やアプリを開発している中で感じたこと、今後の課題だと思うことをまとめていきます。

## 目次
1. リリースしたアプリ「はやメモ」について
2. 制作した経緯
3. 使用した言語・データベース
4. 制作していて感じたこと
5. 今後の課題
6. おわりに

## リリースしたアプリ「はやメモ」について
#### リリースしたアプリ

* はやメモ:シンプルなメモ帳、ノート、メモアプリ

#### アプリの概要

シンプルなメモ帳アプリです。アプリを起動してすぐに新規メモが開くので、ささっとメモしたいときに便利です。すぐにメモしてすぐに保存できるように保存ボタンを画面右上に配置するなど、使いやすさも考えて制作しました。

PLATEAU 2023 ハッカソン by 日本Androidの会 に参加

# はじめに

日本Androidの会 浜松支部と香川支部の共同開催の[PLATEAUのハッカソン](https://japan-android-group.connpass.com/event/293648/)
香川は[デジタルハリウッド高松STUDIO](https://www.cast.ne.jp/lp/)、浜松は[SOU](https://sou-hamamatsu.jp/)で行われました。
PLATEAUの詳細は[公式サイト](https://www.mlit.go.jp/plateau/)を見てもらうのがわかりやすいです。
公式サイトの言葉を借りると「国土交通省が主導する、日本全国の3D都市モデルの整備・活用・オープンデータ化プロジェクト」になります。
PLATEAUで提供されるデータはUnityやThree.jp、AR.jsなどで扱うことが可能です。

# ツールとか

## PLATEAU VIEW
PLATEAUのデータをWebで確認できる

https://plateauview.mlit.go.jp/

## PLATEAU GitHub

UnityやUNREA

元記事を表示

Jetpack composeでBasicTextFieldを使う時に気をつけること

# はじめに
今回は`Jetpack compose`で`BasicTextField`を使っていて自分がハマってしまった問題を紹介していこうと思います
### 本文
まず、今回自分がハマってしまった問題というのは`BasicTextField`を使っているときに入力した後に入力内容をBSで削除していき再度入力した際に下記のエラーによりクラッシュしてしまうというものでした。
“`
java.lang.IllegalStateException: LayoutCoordinate operations are only valid when isAttached is true
“`
原因の部分は下記になります
“`kotlin
decorationBox = { innerTextField ->
if (text.isEmpty()) {
Text(text = placeholderText, color = ChocozapTheme.colors.gray500)
} else {

元記事を表示

OTHERカテゴリの最新記事