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

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

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

元記事を表示

[Android]RoomでInsert時にOnConflictStrategy.REPLACEを使う際の注意点

Android のプロジェクトで Room を使用してハマったことがあったので共有したいと思います。

結論から言うと、`ForeignKey` で指定される Entity があった場合、その Entity を Insert する際に `OnConflictStrategy.REPLACE` を使用してはいけません。

## 理由

Dao で `@Insert` アノテーションに `OnConflictStrategy.REPLACE` を指定すると、SQL 的には `INSERT OR REPLACE` 文が実行されます。

SQLite の仕様では `INSERT OR REPLACE` 文では既存の行を削除した上で、行を追加、更新するようになっています。

参考: https://sqlite.org/lang_conflict.html

>When a UNIQUE or PRIMARY KEY constraint violation occurs, the REPLACE algorithm deletes pre-existing rows that are caus

元記事を表示

Firebaseに保存した際に、そのTimestampを取得する方法(Android)

使用環境
ソフト Android Studio
言語 Java

Firebaseにデーターを保存するときに、タイムスタンプを取得する方法について解説します。

ちなみに、タイムスタンプというのは画像でいうと以下の-MSから始まるもののことで、保存先が重複しないようにFirebaseが発行しているサーバー時間のようなものです。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315874/4ea79df0-8da7-6cfb-79b5-538fbbaa1955.png)

タイムスタンプは、保存時に.push()を入れることによって、発行できます。
そのため、
“`refMag.push().setValue(“保存する内容”)
“`
ではなく
“`refMag.child(“タイムスタンプに変わる文字列”).setValue(post)
“`
にすることで、タイムスタンプの部分を好きな文字列に変えることが出来ます。ただし、タイムスタンプは重複を防ぐためには欠かせないものなので、.

元記事を表示

ConstraintLayoutとwrap_contentを両立させる

# 制限をつけて左右に寄せたい
左右の場合はlayout_constraintLeft_~とlayout_constraintRight_~で制限をつけた上でlayout_constrainedHorizontal_biasを設定します。0.0~1.0の間でbiasを設定でき、0.0だと左、1.0だと右に寄ります。

![スクリーンショット 2021-02-05 0.44.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133311/70ced2c0-7a9f-46bb-88e3-d59d869cd35b.png)

“`xml

元記事を表示

【Android】特定のリンクをアプリ内で開く(WebView)

## はじめに
アプリ内でWebページ(Qiita)を開き、
なおかつ、自分の記事をタップしたときはアプリ内でページ遷移、
それ以外(Homeボタン)をタップしたときはデフォルトブラウザを起動して開く実装をしてみた。

|アプリ内(WebView)で開いたとき|デフォルトブラウザ(Chrome)で開いたとき|
| —- | —- |
|![webView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/b88f7523-5c1b-efb6-c655-d9e9bc3d230b.gif)|![default.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/713cd96f-3eb5-8f61-ca06-1bb4f72e035d.gif)|

## WebViewについて
WebViewクラスは、Viewクラスの拡張。
WebViewを使うことで自分のアプリ内でウェブページまたは他アプリを開くこ

元記事を表示

Android : Firebase Authenticationを用いたGoogleアカウント認証をKotlinで実装

#この記事で紹介すること
FirebaseのAuthenticationを用いてGoogleログイン/ユーザー登録を実現する方法を紹介します。

プロジェクト(アプリ)をFirebaseに登録していることが前提です。
まだできていない方は[公式ドキュメント|AndroidプロジェクトにFirebaseを追加する](https://firebase.google.com/docs/android/setup?hl=ja)を参考に、まずはアプリの登録から行ってください。

またこの記事は私がアプリを作る中でドキュメントを参考にしてコードを書き、ドキュメント通りにいかなかった部分もあったため、あえて記事としてまとめています。参考にした公式ドキュメントは以下です。[Android で Firebase Authentication を使ってみる](https://firebase.google.com/docs/auth/android/start?hl=ja)

#Firebase Authenticationを使ってGoogleアカウントでログイン/ユーザー登録ができるようにしよう!

元記事を表示

OTHERカテゴリの最新記事