- 1. Kotlin の Coroutine で suspend 関数を理解する
- 2. KotlinでRoomデータベース
- 3. [Jetpack Compose] 1.0.0-alpha09から変わったこと。
- 4. 【Dart】Mapのvalueを使ってソートする
- 5. 【Android】MVVMをなんとなく理解した時の備忘録
- 6. AndroidAppLinksでアプリを開く
- 7. 【Flutter】遭遇したエラー&&解決策まとめ②
- 8. 【Android】ラジオボタンを追加する方法
- 9. セグメンテーション(Deeplab)を使用し撮影写真の背景を変えられるアプリを作ってみた
- 10. LiveDataとListAdapterとRecyclerViewでFirestoreから取得してきたデータを縦にズラズラと表示する方法
- 11. THETA関連APIのまとめ(2020年版)
- 12. Android アプリを GitHubActions でビルド、単体テストして FirebaseTestLab で UI テストを実行する
- 13. 2020年のAndroid開発を振り返ろう
- 14. 【Android】Androidアプリ開発のLayoutの種類
- 15. Flutter – AppBarのTitleを左寄せ、中央寄せにする
- 16. Unity使ってAndroidのAR Foundation 環境構築
- 17. 【Android】jpgから透過性のあるpngに保存する際に躓いたこと
- 18. 4. Android学習 メモ帳アプリ開発
- 19. GoogleFormをチョット理解してガワだけオリジナルフォームにする
- 20. Android開発でよく利用するリファレンスを整理してみた
Kotlin の Coroutine で suspend 関数を理解する
先日、[ドリーム・アーツ](https://recruit.dreamarts.co.jp)では、[売場ノート](https://shoprun.jp)というアプリを Android に対応させた。
全面的に Coroutine を使って非同期処理を書いたので、そのとき理解のために実験した内容について備忘がてら書いておく。
## 前提
Kotlin 1.4.21
Android Studio 4.1.1“`gradle
dependencies {
implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9’
}
“`## Coroutine の動作をおさらいする
launch とか async/await がどういう順番で呼び出されるかといったことはここでは話題とはせず、Coroutine の利用シーンに絞って、Android アプリ内でどのようにコードが動くのかといったことを記述する。
Coroutine の典型的な利用シーンとして、何らかのユーザーの操作をトリガーとして
KotlinでRoomデータベース
KotlinでRoomデータベースを使用してみたので、覚書。
全コード
https://github.com/CoffCookie/memoRoomとkaptが必要だったため、2つを指定。
最新版は下記
Room
https://developer.android.com/training/data-storage/room?hl=jakapt
https://kotlinlang.org/docs/reference/kapt.html私の場合、kaptはversion指定すると上手く行かなかったため、version指定なしで作成している。
“`app/build.gradle
plugins {
…
id ‘org.jetbrains.kotlin.kapt’
}dependencies {
…
def room_version = “2.2.5”
implementation “androidx.room:room-runtime:$room_version”
kapt “androidx.room:room-c
[Jetpack Compose] 1.0.0-alpha09から変わったこと。
## おすすめ
– Android Studio Arctic Fox Canary 2
– https://developer.android.com/studio/preview前はBetaバージョンを使ってましたが、
最近のバージョンにはCanary Buildに変わって使いましょう。
ComposeのPreviewはAndroud studio Beta Buildバージョンでは使わなくなりました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/b08ca87a-108d-106a-d699-93edd743d9d0.png)
## Lib Version
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/a3d3c76a-51fc-f6f3-42ce-5e77b85eb3d2.png)
https://mvnrepository.co
【Dart】Mapのvalueを使ってソートする
Mapのvalueでソートしたい事があったので調査しました。
[SplayTreeMap
class](
https://api.dart.dev/stable/2.10.0/dart-collection/SplayTreeMap-class.html)
SplayTreeMapのfromにソートしたいmapとcompareを渡せばソートできるみたいです。下記のようなオブジェクトを作成しました。属性idでソートする予定。
“`Dart:Object
class Employee{
int id;
String name;
Employee(this.id,this.name);
}
“`
最初の並び順は下記の様な感じです。“`Dart:unSort
Mapmap = Map ();
map[‘hoge’] = new Employee(1, “sato”);
map[‘huga’] = new Employee(3, “tanaka”);
map[‘piy
【Android】MVVMをなんとなく理解した時の備忘録
MVVMをなんとなく理解したときの備忘録です。
MVCとかMVPを知っているとこんなもんかって感じです。
プロジェクトによって、使い勝手を良くしてカスタマイズすると良いと思います。##MVVMアーキテクチャ
* M | Model
* V | View
* VM| ViewModel
* MVPのPresenterのような役割
* ViewModelは、明示的にViewを更新しない。(DataBindingで自動的に反映)
* 特定のUI要素(TextViewやImageViewなど)に対して、Bindingする##MVVMのアプリ基本構成
リポジトリにデータソースを格納し、データバインディングによって自動的にViewを更新するイメージ
Activity1に対して、Fragment 1…*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165793/f17fbcfe-9869-13ea-1eda-d8cdfe3285d0.png)##ViewModel
AndroidAppLinksでアプリを開く
## 概要
業務でAndroidAppLinks(以下AAL)を使ったのでまとめてみます。
主な内容は以下の通り
– DeepLinkとの違い
– assetlinks.json の置き場所
– 署名毎の対応
– 反応して欲しいURLの正規表現の書き方とその限界について
– 他のアプリも同じURLで反応する場合の挙動## DeepLinkとの違い
https://developer.android.com/training/app-links?hl=ja
DeepLinkで複数のアプリが反応した場合、どのアプリで開くか尋ねられる。AALではどのアプリで開くか尋ねられることなくアプリを直接起動させることができる。
## assetlinks.json の置き場所
自分の持つドメインの直下に `.well-kno
【Flutter】遭遇したエラー&&解決策まとめ②
## 前回
– [【Flutter】遭遇したエラー&&解決策まとめ](https://qiita.com/umaibou1126/items/050ee66f94f10ec114df)## 参考文献
– [【flutter初心者】ListViewやGridViewを入れ子にするには(Vertical viewport was given unbounded height エラー)](https://qiita.com/code-cutlass/items/3a8b759056db1e8f7639)
– [[Flutter]TextFieldタップでA RenderFlex overflowed bypixels on the bottom. が出るときの対処法](https://qiita.com/welchi/items/e9c907828e553d448269)
– [【Flutter】キーボード表示時の RenderFlex overflowed エラーを解消](https://yaba-blog.com/flutter-renderflex-overf
【Android】ラジオボタンを追加する方法
#プログラミング勉強日記
2020年12月26日
Androidアプリ開発でラジオボタンを作成したのでその方法を簡単にまとめる。#ラジオボタンを利用するときに使うクラスとメソッド
– RadioButton
– RadioGroup
– onCheckedChangeListener
– void check(int id)
– int getCheckradioButtonId()
– void clearCheck()
RadioButtonはそれぞれの項目に相当するクラス。
RadioGroupは複数のRadioButtonを持ち、それらの1つだけ選択できる。
OnCheckedChangeListenerは選択されている項目が変わった時に通知を受ける。
void check(int id)は引数で指定したラジオボタンを選択するメソッド。
int getCheckradioButtonId()は選択中のラジオボタンのIDを取得するメソッド。
void clearCheck()は選択を解除するメソッド。#ラジオボタンを配置する方法
レイアウトエディタの
セグメンテーション(Deeplab)を使用し撮影写真の背景を変えられるアプリを作ってみた
# 概要
ML-Kit For FirebaseでTensorFlow Liteを使ってAndroidアプリに組み込みこもうと、なにか良いネタないかと考え
コロナで旅行行けないので、家で旅行写真とれたらいいんじゃないかと思い付き、勢いで作ってしまいました
人物の写真を撮ると、背景がどこかの観光スポットの写真にいれかわります
※背景はフリー画像素材を使用しています
※ライブラリから背景画像を指定することも可能です例のごとく、作成したはいいが、半年くらい放置しており、もったいないので、動作原理、開発手順等、簡単に説明をのこしておきます
下記で公開しています(Android 9以上)
https://play.google.com/store/apps/details?id=com.e.ittatumoricameraざっくりのアプリの動作は以下のとおりです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172093/19ae189b-5d04-98c9-03f2-0d863d47
LiveDataとListAdapterとRecyclerViewでFirestoreから取得してきたデータを縦にズラズラと表示する方法
#この記事で達成したい目的
Firestoreからデータを取得してこんな感じに表示したい!
#レイアウト
まず、上記画像のように取得したデータを表示したいなぁと思う画面にRecyclerViewをドラッグアンドドロップで配置します。以下は配置したRecyclerViewにlistというidをつけました。
コードでいうとこんな感じ。“`kotlin:fragment_home.xml
THETA関連APIのまとめ(2020年版)
## 1. はじめに
激動の2020年もあっという間に年末。年末年始にTHETAを使った開発をしてみようという人のために、開発の仕方をまとめてみた。手軽に試せるようにコマンドなどでの使用例を記載した。公式の仕様は[Developer Documentation](https://api.ricoh/docs/)でまとめられている。### 動作環境
記事中では以下の環境を中心に動作確認した。* macOS Catalina (10.15.7)
* RICOH THETA V, Firmware ver.3.50.1## 2. THETAシリーズと対応API/機能
モデルによって対応しているAPI/機能が異なっており、[ここ](https://api.ricoh/docs/theta-api-introduction/)に詳細が記載されている。
| 発売年 | モデル名 | Web API | USB API | BLE API | UVC対応 | [Plugin対応](https://api.ricoh/docs/theta-plugin/) |
|:—–:|:
Android アプリを GitHubActions でビルド、単体テストして FirebaseTestLab で UI テストを実行する
まずは yml です。
以下内容で `PROJECT_ROOT/.github/workflows/main.yml` を作成してプッシュすれば GitHubActions の Workflows に追加されます。
“`yml:main.yml
name: CIon:
push:
branches: [main]
paths-ignore:
– ‘**.md’jobs:
build:
runs-on: ubuntu-20.04steps:
– name: Checkout
uses: actions/checkout@v2– name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8– name: Restore gradle cache
uses: actions/cache@v2
with:
path:
2020年のAndroid開発を振り返ろう
2020 年の Android 開発に関するあれこれを覚えている範囲でまとめてみようと思います。
(間違っている箇所やこれもあったよというのがあればコメントお願いします :pray: )## Kotlin と Coroutines
#### Kotlin 1.4
パフォーマンスの改善や型推論のアルゴリズムの変更や interface の SAM 変換などが盛り込まれています。– https://github.com/JetBrains/kotlin/releases/tag/v1.4.0
– https://blog.jetbrains.com/kotlin/2020/08/kotlin-1-4-released-with-a-focus-on-quality-and-performance/#### Coroutines 1.4
`StateFlow` と `SharedFlow` が登場しました。– https://github.com/Kotlin/kotlinx.coroutines/releases/tag/1.4.0
– https://blog.jet
【Android】Androidアプリ開発のLayoutの種類
#プログラミング勉強日記
2020年12月25日
FrameLayoutとLinearLayoutの2種類について扱ってきたが、Android Studioを使ったレイアウトの種類をまとめる。#RelativeLayout
他のコンポーネントと相対的な関係でコンポーネントを配置することができる。各パーツとの相対位置が必要な場合に使う。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/78122309-d310-5251-7d61-6ffb265edb45.png)
“`xml:activity_main.xml
Flutter – AppBarのTitleを左寄せ、中央寄せにする #AppBarの作成
まず、シンプルなAppBarを作成します。
コードは以下のとおりです。“`dart
appBar: AppBar(
title: Text(
“AppBar Sample”,
),
),
“`
次にその挙動を確認してみましょう。
機種は以下のとおりです。
iOS:iPhone12ProMax
Android:sdk gphone x86 arm
#iOS
![iOS – 初期状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980010/5c7f8a83-43fd-9caa-c919-5f36eddacc67.png)
#Android
![Android – 初期状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980010/6b3fa921-e015-488d-4030-f365548ef371.png)
#挙動の共通化
おわかり頂けましたか?
iOSではタイトルが中央揃いになってい
Unity使ってAndroidのAR Foundation 環境構築
# はじめに
ARアプリを作りたいなと思ってUnityで環境構築し始めたら、引っかかることがちょこちょこあったので、備忘として残します。Androidのカメラに「Hello World」を表示するところまでの手順です。
サンプル画像は下記のような感じ。
ここまではノーコーディングでできます!![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/0472af8a-a9fe-83c5-0010-72f7898f1efd.png)
# 開発環境
– Windows10
+ Unity(Ver2020.2.1f1)(※1)
+ AndroidStudio(Ver4.1.1)
+ OpenJDK(Ver15.0.1)
– Androidスマホ(Redmi Note 9S OS Ver:10)Unity と AndroidStudio と SDK のインストールが必要なので、下記参考URLを元に構築しました。
ただ情報が古くAndroidStudioとSDKのインストールが
【Android】jpgから透過性のあるpngに保存する際に躓いたこと
jpgから透過性のあるpngに保存する際、透過が適用されませんでしたが、以下のコードを追加することにより解決。
“`kotlin
bitmap.setHasAlpha(true)
“`
4. Android学習 メモ帳アプリ開発
**勉強できること**
LinearLayoutの使い方
ListViewの使い方
ファイル保存**環境**
AndroidStudioのバージョン:4.0.1
言語:Java# メモ帳アプリを作ろう
ざっくり設計:
メモ内容を入力し、入力したメモを一覧表示する
メモの内容を保存する
エディタの内容を削除するイメージ図:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/718108/b82b4a71-a314-5ddc-5c61-3b6c22a89284.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/718108/f46b8f27-a936-01f1-04cb-61242bf4dbe3.png)
早速作っていきます。
まずxmlに、
メモ内容を入力するためのEditText
メモ内容を保存、消すためのButton
メモ内容を一覧表示するListView
を定義して
GoogleFormをチョット理解してガワだけオリジナルフォームにする
#ガワだけオリジナルフォーム??
画面だけを自分の好きなデザインのフォームにしたいけどGoogleFormみたいな機能使いたいという時に使うちょっとした小技です。#下準備
適当にGoogleFormを作ります
適当に入力形式の項目などを追加します
適当に解答集計用のスプレッドシートを作っておきます
適当なところから叩けるようにログインが必要のない設定にしておきます#Chrome Developer Tool
GoogleFormを開いたまま、ChromeのDeveloperToolを開きます
※option + command + i (Macの方は)#テキストフィールドに割り当てられたフィールド名を確認する
![スクリーンショット 2020-12-25 6.00.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84002/e2455b87-bc73-4790-154c-db01210c447f.png)#実はこっちの方が楽説・・・・
昔こんなのあったけ?みたいな気持ちですが、
Android開発でよく利用するリファレンスを整理してみた
# はじめに
自分がAndroid開発で良く見るリファレンスと、どう使うかを整理してみました。
定期的にやり方を見直すために、現状を整理することは有効だと思いますし、思い出したら随時アップデートしていくつもりです。通常のアプリ開発を想定しています。組み込み系やSDK開発は想定してないです。
また、ここに書くものが見ているものの全てではないのと、これが確実に良いというものではないです。
もちろん、プロジェクトや、やることによって当然変わってきます。
あくまで個人的によく見るものなので、あしからず。何はともあれ、公式のドキュメントがあればそれを必ず見ることです。[^1]
## Android SDK周り
Android開発をする上では欠かせない部分です。
### [Android Developer Guides](https://developer.android.com/guide)
公式ガイドです。
Android開発をしているときに常に参照をしています。
ActivityやFragmentなどはもちろん、カメラ、位置情報などtopicごとにガイドがまとまってい