- 1. 僕たちはどのようにしてViewModelに通知すべきなのか
- 2. managed Google Playを利用している他組織へアプリの限定公開
- 3. AndroidのChromeでリンクを押した時につく、青色を消す。
- 4. 【Android】RecyclerView で無限スクロールを実装する
- 5. Kotlin の Coroutine で suspend 関数を理解する
- 6. KotlinでRoomデータベース
- 7. [Jetpack Compose] 1.0.0-alpha09から変わったこと。
- 8. 【Dart】Mapのvalueを使ってソートする
- 9. 【Android】MVVMをなんとなく理解した時の備忘録
- 10. AndroidAppLinksでアプリを開く
- 11. 【Flutter】遭遇したエラー&&解決策まとめ②
- 12. 【Android】ラジオボタンを追加する方法
- 13. セグメンテーション(Deeplab)を使用し撮影写真の背景を変えられるアプリを作ってみた
- 14. LiveDataとListAdapterとRecyclerViewでFirestoreから取得してきたデータを縦にズラズラと表示する方法
- 15. THETA関連APIのまとめ(2020年版)
- 16. Android アプリを GitHubActions でビルド、単体テストして FirebaseTestLab で UI テストを実行する
- 17. 2020年のAndroidアプリ開発を振り返ろう
- 18. 【Android】Androidアプリ開発のLayoutの種類
- 19. Flutter – AppBarのTitleを左寄せ、中央寄せにする
- 20. Unity使ってAndroidのAR Foundation 環境構築
僕たちはどのようにしてViewModelに通知すべきなのか
# はじめに
みなさま、値の受け渡しはどうしてますか?
私は去年までベタベタな組み込みC言語ユーザで、戻り値、参照渡しくらいしか使っていませんでした
当然、非同期的なやりとりをしようとすると詰みますということで私なりに整理したものを共有したいと思います
テーマは、「どのようにしてModelからViewModelに通知すべきか」、ですさて、Androidで一般的なMVVMアーキテクチャでは、アプリケーションはおよそ3層で表現できます
![スクリーンショット 2020-12-28 8.53.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/bef99e92-bdf1-71f3-909a-b8fee3b68d40.png)
この時、ViewModelからActivityへの通知はLiveDataを使うのが公式です
LiveDataには通常のObserverに加えて、Activityのライフサイクルを与えられるので、
ViewModelが値を返すときには既にActivityが破棄されてい
managed Google Playを利用している他組織へアプリの限定公開
この記事は [CBcloud Advent Calendar 2020 22日目](https://qiita.com/advent-calendar/2020/cbcloud)の記事です。
CBcloud 徳盛です。
Kotlin Coroutineの記事を書こうと思いましたが、ちょっと年が明けそうなので一旦保留して、あまりこんな機会ないであろう、最近あった他組織へ限定公開する方法を書きます。# 背景
managed Google Playを利用している組織から、弊社アプリを組織内で配信したいという話があったので調べた。# 方法
1. リリース前にGoogle Play consoleの「詳細設定」より「managed Google Play」タブを選択し、「オンにする」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124149/451ea191-8e70-ddfa-077b-4a032c374367.png)2. 非公開アプリへのアクセス権より組織を追加し、
AndroidのChromeでリンクを押した時につく、青色を消す。
AndroidのChromeでリンクやボタンを押した時、リンク領域が青色になる。
これは、タップ時のハイライトカラーを透明にすることで解消できる。
全てのセレクタに適用して、解決した。Android
“`css:style.css
* { -webkit-tap-highlight-color: rgba(0, 0, 0, 0) }
“`
【Android】RecyclerView で無限スクロールを実装する
# やりたいこと
RecyclerView で作ったリストに無限スクロールを実装してみます。
API でデータセットを取得してリスト表示するような機能を想定しています。
画面生成時にリストを 10 件しておき、リストの下端までスクロールしたタイミングで 10 件ずつ追加で表示するサンプルアプリを作っていきます。
最終的に作成したアプリは Github で公開していますので参考にしていただければと思います。
https://github.com/yudai0308/infinite_scroll_sample
# 実装手順
## 1. レイアウトファイル作成
RecyclerView のレイアウトと、リストに表示させる1行分のレイアウトを作成します。
“`activity_main.xml
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:r
[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のインストールが