- 1. Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(14)TargetAPIを29に上げる
- 2. android studio Opencv manager package was not found! の対処法
- 3. Android Studio エミュレータがオフラインなってる問題の解決法
- 4. GooglePlayアプリ申請でRejectされた時にやったこと(2021年)
- 5. YUV420_888のBitmap化
- 6. 【Android Studio】ActivityNotFoundExceptionを解決した話。(命名に気を付ける)
- 7. Smart lock for Password on Androidを実装するときに気をつけるところ
- 8. ビジュアルプログラミングの MIT App Inventor を用いた音の機械学習を利用する Androidアプリ開発【後編:アプリ実装】
- 9. Hilt環境でのDefaultViewModelProviderFactoryの実装
- 10. ビジュアルプログラミングの MIT App Inventor を用いた音の機械学習を利用する Androidアプリ開発【前編:学習モデルの準備】
- 11. 【過去の私】が作ったグラブルの救援検索アプリを【現在の私】がフルスクラッチしてやった
- 12. Xamarin.Android での Switch の使い方
- 13. Flutterで文字列を入力できるダイアログを作ろう
- 14. Android round Icon の設定方法
- 15. WebViewの高さがガタガタ変わらないようにしたい
- 16. AndroidのEditTextで入力された文字がメールアドレスかどうか判定する(Kotlin)
- 17. 外部通信は非同期で行いましょう
- 18. Androidでしてはいけない再帰をする
- 19. Kotlin : Realmを用いてcsvファイルをセットする
- 20. kivyに関する備忘録
Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(14)TargetAPIを29に上げる
[前回の記事から](https://qiita.com/kasa_le/items/fa7ebaeb9b496a0e68c2)だいぶ空いてしまった間に、Android Q(10)はおろかPie(11)までがリリースされてしまいました。
今回は、2020/11/1以降、アップデートするアプリが対応を必須とされているTargetAPI=29とする対応を、既存のプロジェクトに対して行っていきます。
Androidアプリは、1年ごとにTargetAPIレベルを上げなさいとGoogleからお達しが出ています。
守らないと、アプリを新規リリースまたは更新版のリリースが出来ません。ロードマップはこの辺りで確認できますが、アップデートに関してはだいたい毎年11月以降適用されると考えていればいいかと思います。
[Google Play の対象 API レベルの要件を満たす](https://developer.android.com/distribute/best-practices/develop/target-sdk?hl=ja)2021/02/09現在、Target30への対応期限(2
android studio Opencv manager package was not found! の対処法
## 概要
android アプリにおいてOpencvを用いており、
このようなエラーがメッセージが出ていました。git にはgoogle play store よりダウンロードするように書かれていましたが、
リンクに飛んでみるとリンクがなくなっており、どうしたものかと考えていました。## 解決策
Opencv-android-sdkを公式からダウンロード
そしてadbコマンドにて手動でapkを端末にインストールします。“`
adb devices
“`
をすることで、現在デバッグ作業をしているデバイスが見えるはず。これが確認できたら、
Opencv-android-sdk/apk に移動し、
“`
adb -sinstall OpenCV_3.2.0_Manager_3.20_arm64-v8a.apk
“`にて解決しました。
Android Studio エミュレータがオフラインなってる問題の解決法
#エミュレータがオフラインに・・・
![スクリーンショット 2021-02-23 17.48.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/d5fcd776-0338-314e-c414-072a10aa4049.jpeg)
ある日、突然Android Studioのエミュレータがオフラインになっていました。。。オフライン専用のアプリを開発しているのなら構いませんが、、通信環境が必要なアプリの場合は非常に困ります:sweat:
#解決法
絶対にこの方法で治る!とは言えませんが、、**あくまで「僕はこの方法で治った!!」という参考程度に。**※Macの場合となりますが、参考リンクにWindowsの場合もあります!!
##DNSを追加
`システム環境設定>ネットワーク>詳細>DNS`を開く
![スクリーンショット 2021-02-23 18.02.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
GooglePlayアプリ申請でRejectされた時にやったこと(2021年)
Androidアプリを作った!早速GooglePlayで公開しよう!
と思って申請してからというもの、合計6回ほどRejectを繰り返し、のべ2ヶ月ほどかかってしまいました
これからアプリを作る方の参考になればと思います# 今回リリースしたアプリ
* 年齢制限なし、広告なし、アプリ内課金なし
* バックグラウンド位置情報、アクティビティにアクセスする
* 配布対象は日本のみというアプリで申請してみました
アプリが使う機能が多くなるほどRejectされやすくなるだろうなとは思います# Reject理由
一連の流れでRejectされたのは下記3つの要因です
特に**位置情報のバックグラウンド取得に絡めてRejectされることがほとんど**でした
最近では厳しくなってるんでしょうね### Unclear feature description
バックグラウンドで位置情報にアクセスが必要な機能を特定できなかった### Prominent disclosure not found
目立つ開示が見つからなかった### Invalid privacy policy
プライバシ
YUV420_888のBitmap化
## CameraXつかってみた
とりあえず、最低限の利用のドキュメントで簡単にプレビューのデータが取れそうなのでやってみた。
とはいえ、取得できるImageデータはBitmapにすることすら標準的には存在していないぽい。
まあ、YUVのままもろもろ処理もいいですが、PreviewViewじゃなくてImageViewでプレビュー出してみたいからBitmap化しよう。
で、いろいろネットの海をさまよったが、とってもわかりにくかったのでまとめた。
## YUV420_888のこと
YUVそのものの詳細は説明しません。
Yが輝度でUVがカラー座標という映像情報のデジタル化手法という感じ。YUV420は輝度はすべてのピクセルに対応した量があり、UVは近傍4ピクセルに一つのセットがあるそうです。
で、後ろの888はおそらくそれぞれ8bitってことかと。## ImageProxyのこと
CameraXで受け取るImageProxyにどういう風に情報が格納されているのかはドキュメントを見つけられなかったのでここに今回得た情報を残すわけです。
PlanesというのがYUV各バッ
【Android Studio】ActivityNotFoundExceptionを解決した話。(命名に気を付ける)
#Android で画面遷移ができない
画面を変えたいがどうしてもできない。コードを全部見直したけどできない。
なぜできないのかわからずいろいろ試行錯誤したが、原因は単純だった。エラー:ActivityNotFoundExceptionの原因は、アクティビティの名前をListActivityとしていたことだった。
リストを表示したいからという浅はかかつ単純な理由でこの名前にしたが、じつはこのクラスはandroid.appの下にすでにあった。
Developers->[ListActivity](https://developer.android.com/reference/android/app/ListActivity,”Developers”)###解決法
エラーはおそらく命名のせいで、ListWorkActivityと名前を変えたらちゃんと画面遷移できた。あとは、インテントの引数でListActivityを指定するときにパッケージを指定してもこのエラーは吐かなくなると思われる。
“`java
//名前を変えた場合
Intent intentList = new
Smart lock for Password on Androidを実装するときに気をつけるところ
Smart lock for Password on Android(以下Smart lock)が出たのは2015年です。
当時実装して、これから新しいアプリにSmart lockを追加するときに気をつけるポイントを2つ記載しておきます。
# Clientが変わった
現在は[CredentialsClient](https://developers.google.com/android/reference/com/google/android/gms/auth/api/credentials/CredentialsClient)ですが、以前は[GoogleApiClient](https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient)でした。
どうもGoogleApiClientで保存した情報はCredentialsClientからは取れないようです(違ったら教えて下さい)# 別のアプリの情報を取得する手段が変わった
https://
ビジュアルプログラミングの MIT App Inventor を用いた音の機械学習を利用する Androidアプリ開発【後編:アプリ実装】
## はじめに
この記事は、以下の記事の続きの内容になります。●ビジュアルプログラミングの MIT App Inventor を用いた音の機械学習を利用する Androidアプリ開発【前編:学習モデルの準備】 – Qiita
https://qiita.com/youtoy/items/322fc193700bcc4df566ブロックベースのビジュアルプログラミングを用いて様々な機能を使った Androidアプリを開発できる「[MIT App Inventor(以下、App Inventor と記載)](https://appinventor.mit.edu/)」を使い、音の機械学習を組み込んだ Androidアプリを作る話です。
上記の記事では、Webサイト上で音を録音し、学習モデルを作成&ダウンロードするところまでの話を書きました。今回の内容は、それを使った Androidアプリの開発の話です。
## 完成したアプリが動作している様子
このアプリが完成して動作している様子を以下に掲載します。
ツイートの文章で書いているように、「おはよう・こんにちは・こんばんは」の 3
Hilt環境でのDefaultViewModelProviderFactoryの実装
# 3行まとめ
– `@DefaultActivityViewModelFactory` および`@DefaultFragmentViewModelFactory` のQualifierを利用してマルチバインディングすると、ViewModelProvider.Factoryを指定しない形でViewModelを生成した際に使用される `DefaultViewModelProviderFactory`の実装が可能である。
– `@HiltViewModel` をViewModelに付与すると、ViewModelのパッケージ名をKeyとした`Map型`のオブジェクトグラフが登録される。
– `HiltViewModelFactory`では、`@HiltViewModel`が付いたViewModelに対しては、内部で定義された`HiltViewModelFactory`が使用され、それ以外のViewModelに対しては、`今回指定するViewModelProviderFactory `か` SavedStateViewModelFactory() `が使用
ビジュアルプログラミングの MIT App Inventor を用いた音の機械学習を利用する Androidアプリ開発【前編:学習モデルの準備】
【追記】 [「後編の記事」](https://qiita.com/youtoy/items/b241809c93e8fcef0e26)も書きました。
## はじめに(+余談)
以前、スマホアプリをビジュアルプログラミングで開発できないか調べた時や、ビジュアルプログラミングで BLE を扱う方法を調べた際に出てきて、軽く試したことはあったものの本格的には使っておらず、そのまま数年レベル以上の時間が経過していた状態だった「[MIT App Inventor(以下、App Inventor と記載)](https://appinventor.mit.edu/)」。
![MIT_App_Inventor.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/37b0ae0c-eeee-5e23-b126-4b85c3bd1a40.jpeg)ブロックベースのビジュアルプログラミングを使って様々な機能を使った Androidアプリを開発できたり、作ったものは apkファイルとして出力できたりと、魅力的な
【過去の私】が作ったグラブルの救援検索アプリを【現在の私】がフルスクラッチしてやった
はじめまして、ユキギガンテと申します。
Androidエンジニアとしてお仕事をしています。
グラブルとアプリ開発が好きです。## このアプリが誕生した経緯
それは私がAndroidエンジニアになる前のこと。
エンジニアになるために独学していた中で、自分でも何かアプリを作ってみたいと思ったのがきっかけです。noteに当時の話を投稿してみたのでよろしければご覧ください。
[私大文卒エンジニアの成り上がり#note](https://note.com/yuqinta/n/nae6811792a00)
## 旧バージョン
Xamarin.Android での Switch の使い方# はじめに
こんにちは、私が説明するのはタイトルにあるようにXamarin.AndroidでのSwitchの使い方です。私が以前Switchを使おうとした時に、Xamarin.Formsの方の解説はたくさんあるのにXamarin.Androidの解説が全くと言っていいほど無かったので書いておきます。
プログラミング環境はVisual Studio 2019です。
# 作ったもの
今回は使い方を知りたかったのでSwitchを切り替えると文字が変わるだけのプログラムを書きました。
Flutterで文字列を入力できるダイアログを作ろうFlutterでダイアログを表示するにはshowDialog()メソッドを用いる。
これを用いて「文字列を入力できるダイアログ」が作りたくなった。
ネットで調べまくったおかげでコードができたので、今回はそれを紹介する。#今回作るもの
真ん中のボタンをクリックしたら、
こう表示させる(なお、言語設定を省いたので中国語フォントになっています。)#コード
“`dart:main.dart
importAndroid round Icon の設定方法
Asset Studio を利用した icon と roundIcon の追加方法
1. Android Project の res フォルダで右クリック
2. New –> Image Asset をタップ
3. Android 8.0 に対応しているアプリであれば、Icon Type 似て Launcher Icons (Adaptive and Legacy)を選択
4. Name には指定したい名前を
5. Asset Type 似て、Image を選択。選択する Image の解像度によって、その後に生成される各解像度用のアイコンが設定されるみたいなので、綺麗なやつ選んでおいた方が良い・・?
6. 文字が入りきらない場合などは Scaling Reseize でサイズを変更する。
7. 設定が終了したら、Next をタップ
8. 最後に FINISH をタップして完了。
WebViewの高さがガタガタ変わらないようにしたい
WebViewの使い方として正しいかは分かりませんが、WebViewをRecyclerViewやScrollViewに`android:layout_height=”wrap_content”`で配置して、Viewの高さをコンテンツの高さ分持たせるような使い方をしたくなることがあります。
こういったことをするとき、WebViewがコンテンツを読み込んでレンダリングが完了するまで高さが確定しなくて、他のViewの位置も連動して変わってしまう、ってのが悩みです。一方で、WebViewのようなものを配置すると言うことはアプリの更新を行わずコンテンツを柔軟に変更したい等の要求があるはずなので安易に最低限の高さみたいなものを設定する訳にも・・・という悩ましい問題があります。まずは、最低限の高さを設定しつつ、それ以上になることを許容するという方法を考えてみましょう。
方法は他にもいろいろあるかとは思いますが、View自体の大きさはonMeasureの中でmeasuredWidth/measuredHeightが設定されることによって決まります。
ですので、基準値をstableHeightという
AndroidのEditTextで入力された文字がメールアドレスかどうか判定する(Kotlin)
##はじめに
初投稿です。Android開発学習中の大学生です。学んだことをまとめて頭の中を整理するために書きます。なので僕と同じ初心者向けの内容です。##背景
Android開発で会員登録の機能を作っているときに、入力された文字列がメールアドレスかどうかの判定方法がわからず困りました。いろいろ調べたり知人のエンジニアの方に教わったことをまとめます。##解決方法
大きく分けて二つの方法があります。
1.正規表現でメールアドレスのパターンを作って、それと入力された文字列が合致するか調べる方法。
2.Androidにデフォルトで存在するPatternsクラスのメソッドを用いて調べる方法。あくまで僕の解釈ですが、1の方が本質的なやり方で2は飛び道具みたいな感じかなと思いました。ただ1の方が正規表現のことを理解していないとできないのでめんどくさめ。あと抜け漏れが発生しやすいかも。まあでも2のやり方も大元では1と同じことやってそう。
##1の方法について
まず、正規表現の概念と定型パターンは
概念 : [https://userweb.mnet.ne.jp/nakama/](htt
外部通信は非同期で行いましょう
Firebaseなどの外部APIにアクセスするときは必ず非同期処理でかく必要があります。
以前はMVVMでその方法を説明しましたが、Viewに情報を反映しなくていい場合などの状況下ではViewModelは必要ないので、Activity/Fragmentから直接Repositoryを呼び出すことになります。ほぼMVVMとやり方は変わりませんが忘れっぽい私のためにここに残しておきます。
ちなみに、サーバーサイドの処理は非同期にする必要はありません。“`Activity.kt
private val userInfoRepository = UserInfoRepository()
private val notificationRepository = NotificationRepository()GlobalScope.launch {
notificationRepository.save(uid, token)
}GlobalScope.launch {
// 引数のuidと一致するuidのデータを取得
result = use
Androidでしてはいけない再帰をする
ふと思った
**「`onCreate()`みたいなところで自分をまた呼び出すようにしたらどうなるだろう?」**
結果はわかりきっているがやってみた
## 実際にやってみた
`onCreate()`と言っておいて`onResume()`に書いていますが気にしない気にしない“`kotlin:LaboratoryActivity.kt
class LaboratoryActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_laboratory)
}override fun onResume() {
super.onResume()
Log.d(“korehataihennnamisuwokennsyousurutamenomonodesu,Andr
Kotlin : Realmを用いてcsvファイルをセットする
##はじめに
Realmのデータベースを用いたデモアプリを作成していたとき、データベースが空の状態で登録や削除を行っていましたが、予めcsvファイルをセットしておく方法も試したので、忘れないように残そうと思います。##build.gradleの設定
projectレベルのbuild.gradleを開き、以下の文をclasspathに加えます。“`php
classpath “io.realm:realm-gradle-plugin:10.2.0”
“`
次にapplicationレベルのbuild.gradleを開き、以下のpluginを適用します。“`php
id ‘realm-android’
“`
ここで、言語がkotlinである場合は以下のpluginを適用する必要があります。このpluginは上記の’realm-android’より上に配置してください。“`php
id ‘kotlin-kapt’
“`
詳しい方法は[こちら](https://docs.mongodb.com/realm/android/install)##Realmの初期
kivyに関する備忘録
Androidアプリを作っている際にpythonでGUIを作成したいなと思ったので、kivyというライブラリを使ってGUIを作成することにしました!
今回はメモ代わりに書いているので、正直書いている項目に順番はありません。また、今回は`Widgetクラス`と`ウィジェット`を区別して書くことにします。カタカナで`ウィジェット`になっている場合は、ButtonやLabelなどのウィジェットだと思ってください。
# 開発環境
* Visual Studio Code 1.53.2
* MacOS Darwin x64 20.3.0
* python 3.7.7(anaconda)# 参考記事
こちらの記事がわかりやすかったので、参考にさせていただきました。
[Kivy 超入門(6):動的配置 – float レイアウト](http://iatlex.com/python/first_kivy_6)
[Python: Kivy と Matplotlib でデータセットの確認ツールを書いてみる](https://blog.amedama.jp/entry/2019/07/25/060