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

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

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カテゴリの最新記事