- 1. はじめに
- 2. 概要
- 2.1. ラムダ式書き方まとめ(Kotlin)
- 2.2. エラーに直面した:android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY[787])
- 2.3. MVVMを採用して分かったこと
- 2.4. Firebase Cloud Messaging API(V1)でのPushテストの方法
- 2.5. Android端末はインターネットアクセスの夢をみるか?
- 2.6. Flutterでadmobをandroidに追加するための備忘録
- 2.7. Jetpack composeでonBackPressedを制御する
- 2.8. 【Android】ドラッグしたViewを回転させる【Kotlin】
- 2.9. AndroidStudioで通信の内容を簡単に確認する方法
- 2.10. Jetpack Compose + HiltでViewModel生成時にパラメータを渡す
- 2.11. 【AndroidStudio】SDKバージョンのアップデートにはAndroid SDK Upgrade Assistantが便利
- 2.12. (たぶん)かなり簡単なリストのセクションインデックスとスティッキーヘッダーの実装
- 2.13. Parse Server Java SDKの使い方(Kotlinでのデータストアクエリー操作)
- 2.14. [JetpackCompose] 何かを開始する前にカウントダウンするアニメーション
- 2.15. ComposeのDragAndDrop系のModifier
【忘備録】startActivity(intent)で画面遷移できずアプリが落ちる(なんで?)
### startActivity(intent)で画面遷移できず沼りまくったのでメモ
:::note info
AndroidStudio 超初心者が画面遷移で沼ったので忘備録
:::#### MainActivity.kt のコードはちゃんと書いていた
“`kotlin:MainActivity.kt
// ボタンクリックで画面遷移
val mBtn = findViewById
Java経験者がKotlinで実装したアプリをGoogle Playでリリースするまでに得た気づき
# 概要
日頃、Javaに触れている筆者が、KotlinでAndroidアプリを作成し、Google Playに公開した一連の中で得た気づきを共有できたらと考えています…# 前提・背景
Java:ある程度読み書きできます…Androidアプリは過去に個人レベルでJavaにて実装経験がありました。
Kotlin:興味をよせていましたが、KotlinでのAndroidアプリ実装経験はありませんでした。# デバッグに使うAndroid仮想マシンのアイコンランチャに、開発中アプリのアイコンが2つ存在する…
開発中、デバッグ環境としてAndroid Studioに標準搭載のAndroid仮想マシンを使っていました。デバッグや実行をすると、当該アプリがインストールされランチャーに開発アプリのアイコンが追加されます。ところが、まったく同じアイコン・名前のアプリがランチャーに2つ表示されていました…## 原因・解決
AndroidManifest.xmlにて、以下の2つの記述が、複数のActivityの各``内に
【備忘録】ChatGPTとAndroidアプリ開発 その0 (環境準備)
# 1.やること
組込みソフト開発者がキャリアチェンジのためにChatGPTを教師としてAndoroidアプリ開発に挑戦してみる。
備忘録として初心者がアプリ開発するまでの流れを投稿する。# 2.開発環境準備
https://developer.android.com/studioから「Android Studio」をインストールする。# 3.プロジェクトの生成
1.Andoroid Studioを起動し、「New Project」をクリック
![Main.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687592/9e27cc4f-961b-7991-de0a-0a5d55e06efd.png)
2.「Phone and Tablet」の「Empty Activity」を選択してNext
![Template.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687592/ddc54f50-e53f-21e9-
ZoomIn (Out) できるLazyColumnを作ってみる
– ピンチインアウト
– ダブルタップで、ZoomIn (Out) する部品を考える
### コード
“`kotlin
@Composable
fun ZoomableContent(
modifier: Modifier = Modifier,
content: @Composable () -> Unit
) {
val scale = remember { Animatable(1f) }
val offset = remember { Animatable(Offset.Zero, Offset.VectorConverter) }
val constraintSize = remember { mutableStateOf(Size.Zero) }
val scope = rememberCoroutineScope()val transformableState = rememberTransformableState { zoomChange, offsetChange, _ ->
/
BaseTemplateAndroidAppで強力なAndroidアプリを作成する
はじめに
はじめまして、Hridoy Chandra Das(リド)(@ihridoydas)です。
#### BaseTemplateAndroidApp: Androidアプリ開発の新しいスタート
テンプレート:[BaseTemplateAndroidApp](https://github.com/ihridoydas/BaseTemplateAndroidApp)
概要
BaseTemplateAndroidAppは、Androidアプリの開発プロセスを合理化し、堅牢で洗練されたアプリケーションを迅速に作成するためのオープンソースのAndroidテンプレートです。このテンプレートは、ベストプラクティス、ライブラリ、アーキテクチャのパターンを組み合わせ、開発者が毎回同じコードを書かなくても済むようサポートします。
このテンプレートは、[Hridoy Chandra Das](https://www.linkedin.com/in/ihridoydas/) によって設計され、コードの構築において意見を押し付けず、開発者が自由に選択
ラムダ式書き方まとめ(Kotlin)
ラムダ式にいろいろな書き方があるようなのでまとめてみました。
## 基本の形
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach({n:Int -> println(n)})
“`## 引数の型が推論できる場合は省略して以下のようにも書けます。
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach({ n -> println(n) })
“`## 高階関数の最後の引数がラムダ式なら、ラムダ式を高階関数のカッコの外に出せる
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach() { n -> println(n) }
“`
普通に関数宣言してるみたいで少し違和感…## 高階関数の唯一の引数がラムダ式なら、高階関数のカッコを省略可能
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach{ n -> println(n) }
“`
これはAndroidアプ
エラーに直面した:android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY[787])
表題のエラーに直面して解決まで辿り着いたので共有します。
# 環境
Android Studio Hedgehog | 2023.1.1 Patch 2# 経緯
Androidアプリの開発の中で、Roomを実装中にこのエラーに直面しました。
## クラッシュした箇所
“`Kotlin
suspend fun operate() {
getCityCodeJsonDataSource.fetchResponseAsFlow().collect { list ->
list.forEachIndexed { i, data ->val prefecture = Prefecture(
i,
data.prefectureCode!!,
data.prefectureName!!
)//logをはくメソッド
MVVMを採用して分かったこと
仕事で開発中のプロジェクト内で、MVC?->MVVMへの移行を少しづつ進めています。まだ、絶賛移行中ですが、MVVMの実装にも慣れてきたところなのでここで一度分かったことを整理してみようと思います。サンプルで作ったコードも載せているので見てもらえるとうれしいです。
# MVVMとは?
この記事ではModel-View-ViewModelという3つの概念とレイヤード(layered)アーキテクチャを組み合わせたアプリ設計とします。## Model
データの構造体(もしくはデータ構造)のことです。Kotlinであれば data class で実装することが多い印象です。データをモデル化することでデータのまとまりやデータそのものに意味を持たせることができて理解しやすいです。永続モデルを構築するためにRoomというSQLiteを扱うためのライブラリを使うこともあります。
“`Kotlin
//こんなやつ
data class User(
val name: String,
val age: Int
)“`
## View
ここではユーザーに見えるもの、ユー
Firebase Cloud Messaging API(V1)でのPushテストの方法
# 概要
以前から利用していたFirebaseのCloud MessagingAPI(レガシー)の期限が迫ってきました。
![fcm-expire.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10494/6b0dbc15-f7c8-5936-ede9-29e97d99de74.png)
で、Firebase Cloud Messaging API(V1)に移行が必要なのですが、これをすると困ることがあります。
それは、いままでDebug用のアプリメニューから、Push通知テストを試すコマンドをSlackに送る仕組みを作っていたのですが、その仕組みがそのままでは使えなくなりますし、面倒になります。
ので、その対応の記事です。
# 何が面倒になる?
レガシーの場合は、Pushのテストをするときに、Httpヘッダーの`Authorization` に固定のキーを入れておけばよかったのですが、これからは、アクセストークンに変わります。(セキュリティが強化されました)
アクセストークンは、秘密鍵
Android端末はインターネットアクセスの夢をみるか?
# はじめに
Android端末をインターネット接続のないWi-Fiアクセスポイントに接続しようとして、接続・切断を繰り返して安定しないという現象に遭遇し、ワークアラウンドを見つけたので紹介します。
# 環境
ある試験のため、SIMなしAndroid端末をインターネット接続のないクローズドなLAN環境にWi-Fi接続しようとしました。アクセスポイントのSSIDを選択してパスワードを入れると、一旦接続されるのですが数秒後に切断され、その後接続・切断を繰り返して接続が完了しません。環境を簡単に書くと、
Buffalo Wi-Fiルータ 192.168.1.1(ブリッジモードでDHCPサーバ兼用)
+-Windows10 PC(Wi-Fi接続 or 有線接続どちらでも)
+-Android端末(SIMなし、Android 12 or 13どちらでも)複数機種で再現Android端末をインターネットにアクセスできない環境で使うというのは特殊な状況と思いますが、電波暗室で測定したいとか、工場内でクローズド環境で工具として使いたいとか、そんな場面があると思います。
ちなみに、同じ環境で
Flutterでadmobをandroidに追加するための備忘録
# google_mobile_adsのインストール
pubspec.yamlに以下の行を追加する
“`
dependencies:
google_mobile_ads: ^4.0.0
“`# google_mobile_adsの初期化
“`dart:main.dart
import ‘dart:async’;
import ‘package:google_mobile_ads/google_mobile_ads.dart’;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
unawaited(MobileAds.instance.initialize());//これを追加
runApp(const MyApp());
}
“`# 広告の読み込み等
下のサイトのexampleを参考にすれば、すぐに実装できる。
https://pub.dev/packages/google_mobile_ads/example# なんかビルドで失敗する
多分、google_mobile_
Jetpack composeでonBackPressedを制御する
# はじめに
今回はJetpack composeでのonBackPressedを制御する方法を紹介していきます
### 本文
早速ですが、下記のようにすることで制御することができます
“`kotlin
@Compose
fun Hoge() {
BackHandler {
//処理を書く
}
}
“`
引数としてBooleanを渡すことができますが、これをfalseにすると一つ上の階層に記述しているBackHandlerの処理が呼び出されるようになります
### 最後に
備忘録としての役割が強いですが、どなたかのお役に立てれば幸いです
【Android】ドラッグしたViewを回転させる【Kotlin】
# はじめに
前回の [【Android】Viewをドラッグして移動させる【Kotlin】
](https://qiita.com/Tsubasa12/items/c0287069b5e8666c2de7)こちらの記事に引き続き Viewを動かしながらそこに回転を加えていきます。
前回の記事の続きものになるので、まだみていない方は先に前回のものも見ていただけると分かりやくなると思います。# 実践
Viewをドラッグし**縦方向に**動かしている間は回転(横方向は水平移動)、指を離したら元の元の位置、元の角度に戻るようにします。“` diff
MotionEvent.ACTION_MOVE -> {
省略・・・+ // 回転
+ val distanceX = firstPositionX – newPositionX
+ val distanceY = firstPositionY – newPositionY
+ val absX = abs(distanceX)
+ val absY = abs(distanceY)
+ val
AndroidStudioで通信の内容を簡単に確認する方法
Network Inspectorご存知でしょうか?
AndroidStudioの機能でネットワーク通信の中身の確認が出来ることを最近知りました。
今まではログなどで確認していて、ログが流れてしまったりとちょっと不便でした。
こちらはの方法では簡単に確認する事ができます。
AndroidStudioにある機能でNetwork Inspectorを使用すると簡単です。
公式サイトはこちら
https://developer.android.com/studio/debug/network-profiler?hl=ja
AndroidStudioの下にあるApp Inspection に Network Inspectorがあります。
リクエストやレスポンスのJsonを確認できたり、ステータスなども確認できます。
ログで流されてしまう可能性とかも無いので、是非確認してみてください!
まだまだ、便利な機能がありそうなので、もう少し調査して見ようと思います。
Jetpack Compose + HiltでViewModel生成時にパラメータを渡す
# 概要
HiltはAndroidで公式に推奨されているDIライブラリです。[Dagger 2.49](https://github.com/google/dagger/releases/tag/dagger-2.49)で可能になった、ViewModel生成時に引数を動的に渡す方法(Assisted Injection)と、Jetpack Composeでの使用方法をまとめます。
# Hiltの基本的な使い方
Hiltを使うと、依存関係はHiltが解決して生成してくれるので、ViewModelを生成する時に引数を渡す必要がありません。
“`kotlin
@HiltViewModel
class MyViewModel @Inject constructor(
private val repository: MyRepository// 依存オブジェクト
): ViewModel() {
…
}@Composable
fun MyView(
viewModel: MyViewModel = hiltViewModel()//引数を指定しなくていい
【AndroidStudio】SDKバージョンのアップデートにはAndroid SDK Upgrade Assistantが便利
# はじめに
Androidバージョンは大体1年に一度上がる形で更新がなされているかと思いますが、内容によってはエンジニアが非常に苦労するような内容の濃いアップデートもあるかと思います。
その都度影響範囲や対応すべき内容を調べたりすると思いますが、実はAndroidStudioには SDKバージョンを上げる際にサポートしてくれる便利なAssistant機能が存在します。
今回はそんな便利なAndroid SDK Upgrade Assistantをご紹介したいと思います。# Android SDK Upgrade Assistant
Android SDK Upgrade Assistantは数あるAssistant機能の中で対応SDKバージョンを上げる際に便利な機能です。
表示の仕方としてはいくつかあります。① Tools > Android SDK Upgrade Assistantを選択して表示する。
![スクリーンショット 2024-02-03 15.04.33.png](https://qiita-image-store.s3.ap-northeast-1.amaz
(たぶん)かなり簡単なリストのセクションインデックスとスティッキーヘッダーの実装
個人的にかなり簡単な方法でセクションインデックス・スティッキーヘッダー付きのリストビューを作れたので共有します。
# 前提条件・環境
Android Studio Hedgehog | 2023.1.1 Patch 1
Kotlin 1.9.22# 完成イメージ
(Gifに変換した際に画像が粗くなりました・・。)
![index_section_and_sticky_header (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579384/a1cfdd5b-22b7-ab31-17bb-99578e671755.gif)# 具体的な実装(UI)
注意点・ポイントはコメントアウトで
“`xml
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた