- 1. AndroidStudioで実行ボタンが押せない時の対処とそのしくみ
- 2. Arduinoとスマホでお家をモニタ【IoTシステム構築紹介&Arduino+Bluetooth編】
- 3. visibilityよりもisVisibleを積極的に使った方がいい理由
- 4. Androidアプリ内で画像保存を行う方法(MediaStore)
- 5. Jetpack Navigation で Material 3 に沿った画面遷移アニメーションを設定する
- 6. DroidKaigi 2023で驚いたところメモ
- 7. 【Android】プロファイル可能なアプリにするための設定方法
- 8. 【Android】Mathクラスについてpart2【Kotlin】
- 9. 【Android】ZxingとML Kit を検証してみた
- 10. Androidアプリ「はやメモ」をリリースしました【個人開発】
- 11. PLATEAU 2023 ハッカソン by 日本Androidの会 に参加
- 12. Jetpack composeでBasicTextFieldを使う時に気をつけること
- 13. AndroidのJUnitテストは超ムズい(4)
- 14. AndroidでRtrofitの接続先をSharedPreferencesに持つ場合
- 15. DroidKaigi 2023 セッション資料&関連情報まとめ
- 16. 【Android Java】リスナーを脳みそに叩き込む
- 17. FlutterでHTTP通信をしてみた件
- 18. Android Studioのエミュレーターでカメラスキャンする
- 19. Androidアプリ開発 – プロジェクト構成のメモ
- 20. Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ‘:app:debugRuntimeClasspath’. の解決方法
AndroidStudioで実行ボタンが押せない時の対処とそのしくみ
### 概要
Qiitaのキャンペーンをきっかけに
AndroidStudioとKotlinで学生時代ぶりにスマホアプリを作っています。
その時に出たエラーとその解決策をまとめました。### 出たエラー
エラーというより、AndroidStudioの実行ボタン(▲のボタン)がグレーアウトして押せなかった。
### 解決方法
AndroidStudioのメニューの「File」→「Sync Project with Gradle Files」をクリックし、処理が終わると押せるように。
### 解決した理由
AndroidStudioのビルドは、Gradleで行われている。
プロジェクトとGradleを同期しないとプログラミングが実行できないことがある。
Arduinoとスマホでお家をモニタ【IoTシステム構築紹介&Arduino+Bluetooth編】
# はじめに
昨今、IoTといったネットと物とを繋ぐのが流行っていますね。流行したのは少し前ですが、今もその流れは衰えていません。このIoTは民生品は勿論のこと、現在では産業界(ファクトリーオートメーション(FA)、車載、物流)でも大きく広がり始めています。
今回はそんなIoTを理解するためにスマホ、Arduino、センサを使ってIoTシステムを学びながら構築していきます。# システム概要
本シリーズで構築するシステムは以下のようになっています。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1100334/0c696ba7-60d3-416f-20b6-d9f4d8aa32e4.png)
「Arduino Uno」というマイコンボードとセンサを使って、その値をBluetoothでスマホに送信します。スマホからは携帯電話通信を利用してサーバーに情報を送信します。そのデータは各種端末で利用できるようにします。パート1の本記事ではセンサからArduinoへデータを取り込み、それをBluet
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 {
AndroidのJUnitテストは超ムズい(4)
# AndroidのInstrumentTestがmockkのバージョンによっては動かない。
“`kotlin:build.gradle.kts
・・・
dependencies {
・・・
androidTestImplementation(“io.mockk:mockk-android:x.xx.x”)
androidTestImplementation(“io.mockk:mockk-agent:x.xx.x”)
“`
mockk-android
mockk-agent
のバージョンですが、今のところ
* 1.13.3 → OK
* 1.13.4 → NG
* 1.13.5 → NG
* 1.13.6 → NG
* 1.13.7 → NGとなります。
“`
java.lang.IncompatibleClassChangeError: Superclass kotlinx.coroutines.flow.StateFlow of kotlinx.coroutines.flow.StateFlow_1_Proxy is an interface (d
AndroidでRtrofitの接続先をSharedPreferencesに持つ場合
# Retrofitの接続先をSharedPreferenceに持つ場合
AndroidでHTTPで通信する場合、Retrofitを使う機会が多いと思います。
Retrofitの接続先のbaseUrlをSharedPreferenceに持つ場合があるともいます。
Androidアプリの中で設定画面を作って、SharedPreferenceのbaseUrlを更新しても、Retrofitの接続先には反映されません。
アプリを一度終了して、再度起動すると反映されます。“`kotlin
class NetworkRepository(baseUrl: String, connTimeout: Long, readTimeout: Long) {private var service: NetworkService
/**
* 初期化
*/
init {
logging.setLevel(HttpLoggingInterceptor.Level.BASIC)
val client = OkHttpClient
DroidKaigi 2023 セッション資料&関連情報まとめ
[DroidKaigi 2023](https://2023.droidkaigi.jp/) の各セッションの登壇資料と動画、関連情報を随時まとめていきます。
[Twitter](https://twitter.com/search?q=%23DroidKaigi) や [YouTube](https://www.youtube.com/c/DroidKaigi/videos) の情報をもとに更新していきますが、抜け漏れ誤りなどありましたらコメントなどでお伝えください。
昨年の資料と関連情報はこちら。
https://qiita.com/hiraike32/items/5fbbfa9d023476194a7c
# Day1
## 11:20~ Gradle Convention Plugins## 11:20~ Modifier.Node
【Android Java】リスナーを脳みそに叩き込む
## リスナーを毎回ググってた
私は、リスナーを実装するときに毎回ググっていたのですが、
リスナーくらいは空で書けるようになりたいな、と思って実装手順を叩き込みたいと思いました。初学者にとって最初につまずくポイントなんじゃないでしょうか。
リスナーの説明で、よく、`onclickListener`を例に説明がされますが、既存のlistenerを例に出されてもよくわかんないなと、思ってたので、今回は、自分で作るカスタムリスナーを例に説明していきます。## この流れさえ覚えちゃえばOK!リスナー実装手順を覚える
1 インターフェースを作成する2 リスナーを実装する
3 リスナーオブジェクトを作成し、リスナーと関連付ける
4 イベントが発生した際の処理を記述する
## リスナー実装の手順を箇条書きで詳細に
1 インターフェースを作成する
– リスナーのインターフェースを作成する
– このインターフェースには、リスナーが実装するメソッドが含まれる (今回は`onCustomEvent()`というメソッドを作ることにした)
“`java
// MyCustomListener
FlutterでHTTP通信をしてみた件
# はじめに
Flutterで簡単なHTTP通信を実装してたいと思い。作ってみました。
GETとPOSTしかしていません。# 動作環境
この記事の動作環境は以下のとおりです。Flutter:3.7.1
Dart SDK:2.19.1
IntelliJ IDEA:2022.2.2# 完成イメージ
今回の完成イメージは下図のようになります。
# サンプルコード
サンプルコードは[GitHub](https://github.com/ktaro-nakaya/bmi_sample)を確認してください。# サーバサイド
このサンプルのサーバサイドはjson-serverを利用しています。
json-serverの使い方は[公式サイト](https://www.npmjs.com/package/json-serve
Android Studioのエミュレーターでカメラスキャンする
## 初めに
Android Studioのエミュレーターでカメラスキャンする方法を記載します。
主にQRコードの読み取り機能を要するアプリなどで使用しています。## やってみる
1. まずデバイスマネージャーを開いて、設定したい端末の編集ボタンをクリックします。
![スクリーンショット 2023-09-13 16.24.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/952574/341fe03f-5ed0-833b-ede4-e9a8b182a46b.png)2. 「Show Advanced Setting」のボタンをクリックします。
![スクリーンショット 2023-09-13 16.25.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/952574/cdd2241d-f207-51b4-8200-b649d4823f2e.png)3. Cameraの欄を以下のように変更します。
![スクリ
Androidアプリ開発 – プロジェクト構成のメモ
# 概要
数年前の新卒時代に書いていた下書き記事があったので供養です。
ここしばらくAndroid触っていなかったので、思い出すにはちょうどいいかも。# Androidアプリの開発
Androidアプリ開発の備忘録を書いていく.# 環境
Android Studio 3.5(2019 年 8 月)
OS : Windows10# Android アプリ開発の概要
処理をJAVAクラスに,画面構成をXMLに記述する.
JAVAクラスをアクティビティ(Activity),xmlファイルをレイアウトファイルと呼ぶ.# プロジェクトの準備
空のアクティビティーで作成する.
![イメージ872.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245300/cecdc1ae-6059-0917-af70-1c056dbe29bc.jpeg)# プロジェクトの構成
プロジェクトを作成して,Run Buildが完了したら,以下のような構成になる.
![image.png](https://qiita
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ‘:app:debugRuntimeClasspath’. の解決方法
## 解決策
`settings.gradle` に
“`settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url ‘https://jitpack.io’ }
}
}
“`と `maven { url ‘https://jitpack.io’ }` を追加する。
この際に
`Unexpected tokens (use ‘;’ to separate expressions on the `
と出る場合は、“`settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS