- 1. RxJavaで連続的なAPI呼び出し後のエラー処理方法
- 2. Android 10 搭載の一部端末で ListView の項目を選択できない障害について調べたら……
- 3. flutter_flavor + flutter_flavorizr を使って Flutter の Flavor を設定する
- 4. Google Play Developer ConsoleでのVALIDATE_APP_MESSAGE_MISSING_COUNTRY_PRICESについて
- 5. 【Android】ViewPager2でサイズが変わるカルーセル作成
- 6. 【Android Studio】Number Pickerをループさせないようにする
- 7. [Android]RecyclerViewのアイテムが表示されない?
- 8. 【Android】MaterialDatePickerの色を変更する
- 9. ホロジュール Android アプリを Kotlin で作る(ホロライブの動画配信予定を収集 その4 やっと完成)
- 10. adb: error: stat failed when trying to …を解決する
- 11. jcenter, bintray 廃止で自分のAndroidアプリに対応したことのメモ
- 12. Google Play Console で内部テストを開始時に「予期しないエラーが発生しました。もう一度お試しください」
- 13. 【Flutter】Providerで最低限のDIを行ってテスタブルなコードにリファクタリングする
- 14. Sesame3にAPIがまだないのでAndroidでAPIサーバーを構築する
- 15. 【Xiaomi Redmi 9T】USBデバッグモードにする方法
- 16. Flutterのインストール~Androidエミュレータ表示まで(Windows10)
- 17. Android &Kotlin:アプリを開いた時にロゴが一瞬出てくるやつ(スプラッシュ画面)を実装する
- 18. Noxをandroid emulatorとして使う手順
- 19. DroidKaigi2020 Lite
- 20. 【続】2020年版RecyclerViewの使い方 〜リストのアイテムに複数のレイアウトを使う〜
RxJavaで連続的なAPI呼び出し後のエラー処理方法
RxJavaで連続的にAPIを呼び出して発生するエラーを処理するための方法です。
APIを繰り返し呼び出した場合にエラーが発生する場合、Exception処理を行うためonErrorResumeNextを利用できます。
この関数を利用すると、エラーが発生した時に他のObservableが流れ続けるようにできます。
エラーを返すためにonErrorで処理を分離することもできます。実例:
repo.getAuth(“xxx”)
.onErrorResumeNext { Single.error(AuthError(“${it.message}”)) }
.flatMap { repo.getPayment(it.token) }
Android 10 搭載の一部端末で ListView の項目を選択できない障害について調べたら……
# 障害発生
業務で Android アプリの保守をしていたら、Android 10 搭載の一部端末で ListView をタップしてもしばらく反応しないという障害が発生しました。障害が発生し始めたのは、TabActivity を(ようやく) ViewPager2 に置換してから。当該画面は Activity から Fragment に作り替えられました。
以前との違いを調べれば原因が分かるはず、とリーダーから指示されて調べたのですが……
# これは選択できなくて当然なのでは
調べて、原因が判明するまでに、Android Studio のデバッガで Android システムの Java クラス内部まで見る必要がありました。
原因はこうです。
Activity から Fragment に作り替えたことにより、ListView を含む Fragment が ViewPager2により Windows にアタッチしたりデタッチしたりされるようになりました。
ListView の親クラス AbsListView がWindow からデタッチされたときに呼び出される `onD
flutter_flavor + flutter_flavorizr を使って Flutter の Flavor を設定する
Flutter で環境ごとにビルド設定を切り替えるためには、Flavor を設定する必要があります。
[Creating flavors for Flutter – Flutter](https://flutter.dev/docs/deployment/flavors)
ですが調べてみると、Flavor を設定するためには各 OS ごとに手動でそれぞれ設定しなければならないため面倒です。
– [【Flutter】Flavor の設定~build まで(Android 編) – Qiita](https://qiita.com/hiromasa-fun/items/c79c99535f6f1db2a6a9)
– [Flutter で環境ごとにビルド設定を切り替える — iOS 編. モバイルアプリ開発において、環境ごとに設定を変えてビルド・配信することはほぼ必須… | by mono | Flutter ?? | Medium](https://medium.com/flutter-jp/flavor-b952f2d05b5d)もっと楽して Flavor を設定できないか
Google Play Developer ConsoleでのVALIDATE_APP_MESSAGE_MISSING_COUNTRY_PRICESについて
Androidアプリ(有料)のバージョンアップ時、リリースを作成しバイナリをアップロード後、リリースをレビューしたら
VALIDATE_APP_MESSAGE_MISSING_COUNTRY_PRICES
というエラーが発生しました。このエラーは、価格が設定されていない国/地域があると発生します。
解決するにはアプリの価格設定を更新します。商品→アプリの価格設定
を開き「価格を編集」をクリックして、未設定の国/地域欄を入力するか「為替レートを更新」を選べば完了です。
![スクリーンショット 2021-02-16 16.20.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629259/fffb0012-d57d-da03-30ae-541e1f27ff1f.png)
【Android】ViewPager2でサイズが変わるカルーセル作成
# dp定義
“`dimen.xml
10dp
50dp
60dp
“``offset`: 隣のアイテムを見せる長さ
`margin`: アイテム間の距離
`total_margin`: `offset`+`margin`# レイアウト作成
`ViewPager2`を配置するメインレイアウトの作成。“`activity_main.xml
【Android Studio】Number Pickerをループさせないようにする
NumberPicker(ドラムロールUI)使用時に、ループさせないようにする方法。“wrapSelectorWheel“を“false“にすればOKです。
## 1. レイアウト
“`activity_main.xml
[Android]RecyclerViewのアイテムが表示されない?
#Android開発は始めたばかり
Adapterのオーバーライドメソッドが呼ばれないため表示されないようでした。
#原因はLayoutManager“`xml
app:layoutManager=”androidx.recyclerview.widget.LinearLayoutManager”
“`これを明示的に入れなければいけませんでした。
【Android】MaterialDatePickerの色を変更する
MaterialDatePicker の色を変更したい場合があると思うのでメモ。
ガイドラインは https://material.io/components/date-pickers“`style.xml
“`スタイルの定義が少々長いので style.xml とは別のリソー
ホロジュール Android アプリを Kotlin で作る(ホロライブの動画配信予定を収集 その4 やっと完成)
## はじめに
前回([https://qiita.com/kerobot/items/bd504b0d787de63c364e](https://qiita.com/kerobot/items/bd504b0d787de63c364e))は、Azure VM の Ubuntu の MongoDB から、ホロライブの配信予定や動画情報を取得する Web API を作成し、Azure VM (Ubuntu) + Nginx + gunicorn へ配置しました。
今回は、作成した Web API からホロジュールの配信予定を取得し、表示する Android アプリを Kotlin で開発してみます。
* Web API : ホロライブの配信予定や動画情報を取得(JWT認証あり)
* Kotlin : 今回の Android アプリ開発で初めて利用したプログラミング言語
* Android Studio : 今回の Android アプリ開発で初めて利用した開発環境## 最終的にやりたいこと
ここ最近、毎日のように閲覧している バーチャル YouTuber プロダクション「ホロ
adb: error: stat failed when trying to …を解決する
# adb: error: stat failed when trying to …を解決する
adb pushなどをするときにパーミッションエラーがでます
“`sh
$ adb push test.txt /data/app_flutter/
adb: error: stat failed when trying to push to /data/app_flutter/: Permission denied
“`# 解決方法
“`sh
$ adb root
“`
を実行してから再度コマンドを実行する
jcenter, bintray 廃止で自分のAndroidアプリに対応したことのメモ
[Service End for Bintray, JCenter, GoCenter, and ChartCenter \| JFrog](https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/)
の対応をする。
まずは [【追記:2022年2月1日へ延期】JCenter が2021年5月1日にシャットダウンすることになったので Android アプリエンジニア観点でメモをまとめた \- BattleProgrammerShibata](https://bps-tomoya.hateblo.jp/entry/2021/02/04/184317) でだいたいの状況を把握しよう。
# 影響があるかどうかの確認手順
– [八木さんのツイート](https://twitter.com/sys1yagi/status/1357509730713829378) を参考に確認方法をまとめる
– `build.gradle` の repositories で下記を削除する
Google Play Console で内部テストを開始時に「予期しないエラーが発生しました。もう一度お試しください」
ストア設定などを仮でもいいので設定すると上手くいきました。ちなみにAdaloのアプリをアップロードしたケースです。
よくあるエラーのようで、ブラウザをChromeにしたりキャッシュ削除やシークレットモードでの実施で直るケースもあるようですが、本当にアカウントを作ったばっかりで、ただ内部テストを開始したいときは上記で解決出来るかと思います。
https://groups.google.com/g/android-group-japan/c/Tgw2-7qZ7V0
【Flutter】Providerで最低限のDIを行ってテスタブルなコードにリファクタリングする
[前回の記事](https://qiita.com/tokkun5552/items/ede8460bef4892f48e37)の最後に書きましたが、テストを行う際はclass同士の依存関係が密になっていると、思うようにテストを行うことが出来ません。
これは、ビジネスロジックを記載している部分にDBのインスタンスやFirebaseのインスタンスを持たせてしまうと、初期化処理などが行えないためです。(※シミュレータなどを使って回避することもできるようです)
そこで、今回は前回と同じ[こちら](https://github.com/tokku5552/TODOAppSample-Flutter/tree/v1.1)のサンプルアプリをリファクタリングして、テスタブルなコードに書き換えてみました。### やったこと
– FlutterでのProviderを用いたTodoアプリをリファクタリング
– Providerを使ってDIする
– test用のrepositoryを自作する最終的なコードは[こちら](https://github.com/tokku5552/TODOAppSampl
Sesame3にAPIがまだないのでAndroidでAPIサーバーを構築する
追記:2021/02/16 Postで解錠されない不具合修正したv1.0.1アップしました。お手数ですがアップデートお願いします。
Sesame3使ってますか?
Sesame miniに比べるとめちゃくちゃ高速化して最高です。
けどAPIがまだ用意されてないためDIY好きなかたには物足りないですよね。
3月にはAPIの発表があるらしいですが私は待ちきれないためどうにかしてAPIを用意しました。
今回はご家庭にあるいらなくなったAndroid端末を利用して無理くりAPIサーバーを構築する方法をご紹介します。(2000円ほどで中古で買えるAndroid5以降の端末)
APIサーバーになるSesameBridgeというAndroidアプリを作りました。まずは動いてる動画を
Sesame3の本番稼働開始!
めちゃはや爆速で皆が求めてたこれだよこれがここに。
Jermingさんがゲキ速と言ってたのは伊達じゃない。
子供達も玄関で待たなくなって喜びそう?
【Xiaomi Redmi 9T】USBデバッグモードにする方法
# はじめに
[Xiaomi Redmi 9T](https://amzn.to/3pjIc2s)を買いました。Android Studioに接続して早速開発に活用しようと思います。
少し他機種とは変わっているので手順を残しておきます。# 手順
## 設定アプリを起動するあらかじめホーム画面にある設定アプリを起動します。
![Screenshot_2021-02-14-21-06-02-462_com.miui.home.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42735/8b79ee5a-3420-df05-548c-f39aed5076d4.jpeg)## デバイス情報を選択する
デバイス情報を選択します。
## MI
Flutterのインストール~Androidエミュレータ表示まで(Windows10)
#Flutter本体のインストール
##①Flutterのホームページからダウンロードする
・[Flutter公式](https://flutter.dev/docs/get-started/install) にアクセスする。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1109597/cd79f147-df71-04dc-7e40-ad206464f3ff.jpeg)
・「Windows」を押してページに飛び、ダウンロードボタンを押す
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1109597/0c08c2ad-9765-5015-b38d-29cc86b3d897.jpeg)
##②zipを解凍し、Cドライブに保存する
・ダウンロードしたzipを解凍すると「flutter_windows_〇.〇〇.〇-stable」というフォルダができる。
その直下に「flutter」フォルダがあるのを確認する
Android &Kotlin:アプリを開いた時にロゴが一瞬出てくるやつ(スプラッシュ画面)を実装する
#記事の内容
Androidアプリのスプラッシュ画面をKotlinで実装していきます。
そもそもスプラッシュ画面って何?という方もいらっしゃると思いますが、スプラッシュ画面とは例えばあなたのスマホでツイッターのアプリをタップすると、タイムラインが表示されるまでの間ツイッターのロゴがしばらく表示されたりしませんか?あんな感じでアプリが起動するまでの時間をいい感じにごまかす画面がスプラッシュ画面と言われています。#実装手順
・activity_splash.xmlの構成
・SplashActivity.kt実装
・SplashActivityをManifestに追加#activity_splash.xmlの構成
`activity_splash.xml`では、スプラッシュ画面として表示したい画像やロゴを指定します。まず、表示したい画像を`res -> drawable`に名前をつけて保存してください。
私は`splash_image`という名前で保存しました。保存した画像を画面いっぱいに表示します。
コードは以下の通りです。“`activity_splash.xml
Noxをandroid emulatorとして使う手順
– https://jp.bignox.com/
– Noxはandroid 7を利用## インストール
“`bash
➜ ~ brew install noxappplayer
“`## 初回起動できない
![ 2021-02-14 at 14.30.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66521/d5c4ff75-2eb6-c3a8-39fb-6520b6be66c7.png)
`Open Anyway` ボタン押す
## 初回起動時に99%で止まる
![ 2021-02-14 at 14.32.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66521/cc674488-9390-3819-7e42-fef47163910c.png)
– 裏側で動かすvirtualboxの連携がうまくいってない
### virtualbox起動
– noxが動かしてるVMを
DroidKaigi2020 Lite
本記事では、2020年8月にオンライン開催された、DroidKaigi2020 Liteの以下セッションについて学んだことを記載します。
一部、動画の画面キャプチャを使用させて頂いております。1.アプリのアップデート浸透率を上げろ!〜in-app updatesを実践投入して見えてきたもの〜
2.自動生成でさくさく実装するユニットテスト
3.Jetpack時代のFragment再入門
4.Androidで音声合成(TTS)をフル活用するための知識と実践事例
5.Scadeを使って「Swift」で始めるAndroidアプリ開発# 1.アプリのアップデート浸透率を上げろ!〜in-app updatesを実践投入して見えてきたもの〜
### アプリの更新方法に以下がある。
(1)Google Play ストアで自動更新されるように設定する。
※「アプリのダウンロード設定」のデフォルト設定は「Wi-Fi経由のみ」
自動更新をきらい、設定しない人もいる。(2)アプリ内からの更新
※バージョンをチェックして、Google Play Storeに飛ばす方法もある。###
【続】2020年版RecyclerViewの使い方 〜リストのアイテムに複数のレイアウトを使う〜
# tl;dr
* [2020年版RecyclerViewの使い方 〜 RecyclerView + ListAdapter + DataBinding + LiveData + ViewModel](https://qiita.com/que9/items/52725c3caf33f2a9b44e) で紹介しなかった、リストのアイテムに複数のレイアウトを使う場合を紹介
* ViewHolderの抽象クラス化が鍵
* `getItemViewType` のoverrideを忘れるな
* ソースコード
* 今回のサンプルのソースコード:https://github.com/quwac/how-to-use-recyclerview-2020/tree/multiple_view_type
* 前回のソースコードとの差分表示:https://github.com/quwac/how-to-use-recyclerview-2020/compare/main..multiple_view_type# はじめに
[2020年版RecyclerViewの使い方 〜 Rec