Android関連のことを調べてみた2021年02月11日

Android関連のことを調べてみた2021年02月11日

【Flutter】iOS/Android/WebでFirebase Firestoreを使えるようにする。

# はじめに
昨年後半よりFlutter入門して社内用アプリを作っています。
今回はFirebaseのFirestoreを使えるようにします。

# 更新履歴
2021.2.11 初回投稿

# 環境
– macOS Big Sur(11.2)
– Flutter (Channel beta, 1.26.0-17.2.pre, on macOS 11.2 20D64 darwin-x64,
locale ja-JP)
– Android toolchain – develop for Android devices (Android SDK version 30.0.3)
– Xcode – develop for iOS and macOS
– Chrome – develop for the web
– Android Studio (version 4.1)
– VS Code (version 1.53.1)

# 参考にしたサイト

– [Cloud Firestore を使ってみる | Firebase](https://firebase.googl

元記事を表示

Androidアプリの広告出稿後の効果まとめ

#はじめに
2019年に趣味で作ったAndroidアプリを公開しましたがさっぱりインストールされないので2020年5月から広告を出稿しました。
半年ちょっと経過したのでその効果と気づいたポイントをまとめます。

なお複数アプリを公開していますが出稿しているアプリは1本のみです。
ツール系のアプリです。

#目次
– 出稿した広告の内容
– インストール数
– CV率やクリック単価など
– 気づいたポイント
– CVが増えたタイミング
– CVが減ったタイミング
– CVに特に影響なかったもの
– ストアの掲載順位
– (余談)収益について
– まとめ

#出稿した広告の内容
広告はGoogle広告を使用しています。

10秒くらいで適当に考えたテキストを設定しています。
よく見る「○○の決定版」「サクサク快適」とかそういう系です。
学習してくれることを期待して広告グループは3つ用意していますが、どれもほぼ同じようなテキストです。
動画や画像は用意していません。

当初は予算を300円/日くらい、目標コンバージョン単価を60円くらいにしていました。
現在は

元記事を表示

Emulator: emulator: ERROR: unknown skin nameと言われたときの対処法

# 現象
エミュレーターを起動しようとしたらこのような`EvengLogウィンドウ`にメッセージが表示され、エミュレーターが起動しませんでした。

“`console
Emulator: emulator: ERROR: unknown skin name ‘pixel_2’
“`

# 解決方法

一度AVDManagerで該当のエミュレータを編集(Edit)し、そのまま何も変えずに保存すると、あら不思議起動するようになります。

# その他

CatalinaにMacOSを今更ながらアップデートしたのですが、HDD直下のフォルダにはアクセス不可になったようで、開発環境が全てアウトになってしまいましたorz

恐らく上記のエラーも、パスを色々変えた影響かなあ・・・?

しかしCatalinaに上げたらビルドがむちゃくちゃ遅くなった気が・・・:fearful:

現場からは以上です。

元記事を表示

[Android] Kotlin の sealed class でステートマシン

“`kotlin
class MainFragment : Fragment(R.layout.main_fragment) {

override fun onResume() {
super.onResume()

lifecycleScope.launch {
// 命令を与える例
MainFragmentState.currentState.onHoge(this@MainFragment)

// 現在のステータスを確認する例
when {
MainFragmentState.currentState.isIdle() -> {}
MainFragmentState.currentState.isState1() -> {}
MainFragmentState.currentState.isState2() -> {}

元記事を表示

JSONパースするのにKotshiを使ってみた

##何故今回Kotshiを使うのか
KotlinでJsonパースするのにGSONを以外のライブラリを検索してみると
JacksonとMoshiを見つけました。
その上で[ベンチマーク](https://www.ericdecanini.com/2020/10/13/benchmarking-gson-vs-jackson-vs-moshi-2020/)を見るとJackson or Moshiが良さそうでした。
さらにMoshiについて調べているとMoshiよりも早い(らしい?)Kotshiを見つけたため
JackSonと同じぐらいのMoshiよりも早いならより良いだろうとKotshiを使うことにしました。

##環境
Android Studio 4.1.1
kotlin 1.4.21
kotshi 2.2.3
moshi 1.9.3

##Gradleを使って必要なものを準備
gradle(:app)に以下を追加

plugins {
(略)
// 以下追記
id ‘kotlin-kapt’
}

andr

元記事を表示

MaterialDatePickerで未来日を選択できないようにする

## やりたい事
MaterialDatePickerで日付を選択するとき、デフォルトでは過去/未来含めて全ての日付が選択できる。

ここで、「未来日は選択させたくない」という要件が出てきたとき、選択日に制限を加える必要がある。

## 解決方法

`DateValidator`で制限を作成して、MaterialDatePickerの`CalendarConstraints`にセットする。

“`kotlin
MaterialDatePicker.Builder.datePicker().apply {
// 未来を選択させない制限
val dateValidatorMax = DateValidatorPointBackward.before(Date().time)

// 開始日を制限したいなら DateValidatorPointForward を使う
// val dateValidatorMin = DateValidatorPointForward.from

元記事を表示

2021/1 Google Play | AppStore 対応期日カレンダー

![eyecatch_2101StoreCalendar-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218415/2380f173-a80f-ac3c-e52c-fef2a22c9ffa.png)

※ 本稿は [Tech Inside Drecom](https://tech.drecom.co.jp/?_src=qiita) に掲載された記事、「[2021/1 Google Play | AppStore 対応期日カレンダー](https://tech.drecom.co.jp/googleplay-appstore-calendar-202101/?_src=qiita)」の Qiita 出張版です。

こんにちは、SRE部クライアントグループの Smith です。
SRE というとサーバ・インフラのイメージがありますが、なぜクライアント?っていう部分は別の機会にお話したいと思います。

本稿では SRE部として収集し、社内共有している`対応期日のある Google Play

元記事を表示

No Code開発ツールが使っているクロスプラットフォームフレームワーク

No Code開発ツールにはiOS/Androidアプリを出力できるものがある。
なんらかのクロスプラットフォーム技術が使われていると思われ、興味を持ったのでざっくり調べてみた。

## 調査結果
8個のサービスについて調査したところ、

– React Nativeが、2サービス(Adalo/Thunkable)で使われている
– Flutter、Capacitor、Cordovaを使っているサービスは探した範囲では見当たらなかった。

## 調査結果詳細
ざっくり調べたので、すぐに分からなかったところは?を入れてある。

|サービス名|Webアプリ|iOSアプリ|Androidアプリ|iOS/Androidアプリフレームワーク|
|:–|:–|:–|:–|:–|:–|
|[Glide](https://www.glideapps.com/)|o| x |x| -|
|[Adalo](https://www.adalo.com/)| o |o| o |React Native (根拠 https://developers.adalo.com/docs/workflow/c

元記事を表示

卒論の代わりにflutter✖️firebaseでスマホアプリを作ってみたので振り返る。

今回は自分がスマホアプリを作った話を記事にしたいと思います。

# 作ろうと思った背景

自分は文系大学生なのですが、ゼミに入っておらずその関係で卒論を書かなくても卒業ができます。~~**(イージー大学生)**~~
2021年3月に卒業予定で、夏あたりから周りの友達が「卒論やばい〜?」、「卒論どうしよう〜?」と騒ぎ始めました。「俺は楽だぜっ!!」って思いつつも、自分の大学4年間の成果ってなんだろうってモヤモヤしてました。

学問自体は好きで面白かったのですが、通学に1時間半かかるのと授業がつまらなかったので行く気が起きず、効率よく単位をとることだけを考えて授業を受けていました。その代わりに1年生の終わりから興味のあったことを色々勉強して、効率(お金と時間)という観点からゼミには入らなかった次第です。(入ったんですけど、お金がかなりかかるゼミでやめました。そんな余裕のある家庭でもないので。)

色々勉強した中で一番ハマったのがプログラミングで途中だるくなったりもしましたが、独学期間2年、インターンも半年経験させて頂きました。また就活では、そんな経験も評価されて第一志望のIT企業に就職する

元記事を表示

【Android/Java】初学者のためのRecyclerViewアプリ

## はじめに
最初触れた時は全くわからなかった初学者殺しのRecyclerView。(勝手に命名)
だが、調べているうちに、実は作成手順は決まっていて、それに則ってやれば意外と何とかなることがわかったので、デモアプリを作りながら自分なりにまとめてみた。

## 今回のデモアプリ
なかなか眠れないアプリを作成。
![recyclerview.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/8e1d05fa-ba7c-260e-bf03-70e20b242f00.gif)
## RecyclerView抑えるべきこと
### 作成するファイル
|作成ファイル|役目|
| —- | —- |
|Activity(Fragment)のlayout|RecycleViewを載せる|
|セルのlayout|各Viewパーツの配置を決める|
|セルのModelクラス|データ構造を決める|
|Activity(Fragment)クラス|Adapterに指示する,レイアウトを調整する(Layout

元記事を表示

【Flutter】iOS/Android/WebでGoogleMapを表示する

# はじめに
昨年後半よりFlutter入門して社内用アプリを作っていたけど、Webで地図表示したい!って思い、トライしてみた。

ぶっちゃけ、パッケージのReadmeをそのままやっただけですが….

# 更新履歴
2021.2.8 初回投稿

# 環境
– macOS Big Sur(11.2)
– Flutter (Channel beta, 1.26.0-17.2.pre, on macOS 11.2 20D64 darwin-x64,
locale ja-JP)
– Android toolchain – develop for Android devices (Android SDK version 30.0.3)
– Xcode – develop for iOS and macOS
– Chrome – develop for the web
– Android Studio (version 4.1)
– VS Code (version 1.53.0)

# 準備
– FlutterのChannelをbetaにしておくこと
– GoogleMa

元記事を表示

【Flutter】エラー対応 assets_audio_player

#エラー内容

下記Gitでイシューに上がっていますが、根本的な解決策はまだ挙がってなさそうです。
https://github.com/florent37/Flutter-AssetsAudioPlayer/issues/399

“`
e: /Users/yo4hi6o/flutter/.pub-cache/hosted/pub.dartlang.org/assets_audio_player-2.0.13+1/android/src/main/kotlin/com/github/florent37/assets_audio_player/Player.kt: (542, 5): ‘handleMessage’ overrides nothing
e: /Users/yo4hi6o/flutter/.pub-cache/hosted/pub.dartlang.org/assets_audio_player-2.0.13+1/android/src/main/kotlin/com/github/florent37/assets_audio_player/Player.kt: (54

元記事を表示

[Android]Realmってなんか名前かっこいいから、良く分からないけども使ってみる

#Realmってかっこ良さそう!なんそれ?編
普通、クラスで宣言された文字や数値はアプリ(画面)を開く度に初期化されます。
なので、アプリで特定のデータを保存しようと思ったら、データベースを使う必要があります。
データベースは、アプリを利用している時だけでなく、消した後も保存されるのです。

そのデータベースの一種が、Realmというわけです。

ちなみに、今回使うRealmはローカルデータといってアプリ内でデータを保存することができるのですが、アプリ自体をアンインストールしてしまったら、保存されたデータを使うことはできないのでそこだけは注意です。
#Realm使っちゃう編
早速使ってみます。今回は、本当にシンプルに文字を保存して、それを取り出すだけのシンプルな実装でいきます。データベースと言っても、箱みたいなもんですね。それと、正確さに欠けている部分アリの自信があるので、優しく指摘してくれると幸いです。それと、Fragmentでの実装すまぬ。

######使うための準備
“`gradle
//appの方ね
plugins {
id “kotlin-android”

元記事を表示

WebViewにJavaScriptを注入してAndroid側に値を渡す

WebViewで表示されているHTMLの内容から、特定の値をAndroid側で取得します。

考え方としてはHTMLページ内にAndroidからJavaScriptを注入して、JavaScriptからAndroidのコードを実行することで値のやり取りをします。

まずメインとなるコードから。

“`kotlin
val webView: WebView = requireActivity().findViewById(R.id.web_view)
webView.webChromeClient = WebChromeClient()
webView.webViewClient = CustomWebViewClient()
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(WebAppInterface(requireContext()), “Android”)
webView.loadUrl(url)
“`
– webChromeClientをセットしないとJavaScriptが実行で

元記事を表示

jCenterで公開していたKotlinライブラリをMaven Centralで公開する

**[Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter](https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/)**

jCenterが閉鎖するってことなので、jCenterで公開していたKotlinのライブラリをMaven Centralに登録することにしました。やり方はわかりやすく解説している記事がたくさんありますが、Kotlin特有のところで詰まったりしたので自分なりにまとめてみようかと思います。

やり方はいくつかあるらしいのですが、Sonatype経由で登録するのが簡単らしいです。

作業に当たり以下の記事を参考にさせていただきました。 :pray:

– [Maven Central Repository への公開手順(Gradle版)](https://blog1.mammb.com/entry/2020/02/19/090000)

ほとんど同じ内容なのとこっちの方が丁寧

元記事を表示

GitHub ActionsでAABファイル生成のCDを構築する方法

## はじめに

GitHub Actionsを使い、AABファイルを生成するCDを構築します。

## 本記事で書かないこと

– GitHub Actionsの概要や基本的な操作方法
[私が以前書いた記事](https://qiita.com/uhooi/items/29664ecf0254eb637951) が参考になると思います

## 事前準備: ローカルでAABファイルを生成できるようにする

私が以前書いた記事を参考にして、ローカルでAABファイルを生成できるようにします。
https://qiita.com/uhooi/items/3bee37d763642c703738

## キーストアのエンコード

2021/02/06現在、GitHubではファイルを安全に管理する方法がないため、機密ファイルは文字列に変換する必要があります。

キーストアをBase64形式でエンコードします。
ローカルで以下のコマンドを実行します。

“`shell-session
$ base64 ./app/release.keystore
“`

標準出力された内容から __改行を

元記事を表示

jCenterが閉鎖されるらしいので一旦Github Pagesを野良mavenリポジトリにして待避した話

**[Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter](https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/)**

jCenterが閉鎖するってことでもう大変ですね。自分が使っているOSSの作者さんは期日までに移行してくれるのかとか戦々恐々としているところでしょう。
一方、ライブラリを公開している人間としては、早く移行先探さなきゃ!そもそも今まで公開してたのどうするよ!という状態じゃないでしょうか。というか私だ。

旧バージョンは移行できない可能性があるし、そもそも新バージョンも期日までに全部対応しきれるのか?状態なので、一旦bintrayに全くアクセスできなくなっても大丈夫なようにお手軽にできるバックアッププランを実行しておくことにしました。

# 今までアップロードしたファイル群を全部落とす

bitrayにアップロードした過去のファイル群を一旦手元に落とします。
といっても一括

元記事を表示

Tokenを用いて、AndroidStudioとGitHubを連携させる

AndroidStudioとGitHubを連携させようとした際、GitHubのユーザーIDとパスワードを用いた連携が出来なかったため、代わりとして行った処置をメモしておきます。
なお、Gitがインストール済みであり、GitHubのアカウントを所持していることが前提となります。
##AndroidStudioでログインフォームを開く
上のメニューから、
VCS → Import into Version Control → Share Project on GitHub
と進んでいきます。
![Qi1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1086769/8b9df131-5114-5470-d7b5-bb32c036735c.png)

すると下のような画面が現れ、GitHubのIDとパスワードを求められます。![Qi2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1086769/bfa220fc-5822-a

元記事を表示

M1 Mac Book AirにしたらAndroidStudioのビルド時間が37%になった話

## 概要
Qiitaで**「M1 Mac AndroidStudio」**と検索したところ、意外にもM1 Macでのビルド速度比較結果に関する記事がなかったので、実際に**M1 Mac Book Air**で**Gradle**を**AppleSilicon対応**させた手順の忘備録も兼ねて、**ビルド時間を比較**しました。
当然プロジェクトの内容によって実際のビルド時間は差が出ると思いますが、一つの参考になれば幸いです。
## 使用した各種バージョン
### Android Studio – Android Studio Arctic Fox 2020.3.1 Canary 4
https://developer.android.com/studio/archive よりDL
これ自体はIntel版。Gradle7を使うためにInteliJのAndroidパッケージが4.3以上必要なので利用
![スクリーンショット 2021-02-06 14.47.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

Kotlin 生体認証(指紋認証、顔認証)

こんにちはmessiです。
Androidエンジニアしてたり、Flutter触ったりしてます。
Twitterはこちら -> https://twitter.com/175Atsu175

今回はAndroidの生体認証の実装について紹介します。

## はじめに
AndroidXの生体認証コンポネントBiometricPromptが正式リリースされた。
サポート対象はAndroid6.0以上
これまで使われていたFingerPrintManagerは非推奨になりました。
指紋認証を事前に端末登録しておかないと動作しません。(端末の設定でアプリに指紋認証の使用の許可してないといけないこともあるそうです。)

今回顔認証も試してみたかったのですが、自分の所有端末が顔認証非対応だったので試すことができなかったのですが、このコードで顔認証も出来るようなので試してみてください。
pixel4なら出来るっぽいです。
[引用]
https://stackoverflow.com/questions/63629458/face-authentication-using-androidx-biomet

元記事を表示

OTHERカテゴリの最新記事