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

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

MPAndroidChartでリアルタイムプロットサンプル(kotlin)

MPAndroidChartを使ったリアルタイム更新グラフのサンプルを作成した。
公式にサンプル(https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/main/java/com/xxmassdeveloper/mpchartexample/RealtimeLineChartActivity.java)
にあるが、Javaで書かれているため、ここでは公式を参考にKotlinで書いていく。

まず、build.gradleにviewBindingの設定とMPAndroidChartのインポート設定を行う。

“`xml:app/build.gradle

android {

buildFeatures {
viewBinding = true
}
}

dependencies {

implementation ‘com.github.PhilJay:MPAndroidChart:v3.1.0’
}

“`

元記事を表示

KotlinでFirestoreのTimestampをDate型に変換

Firestoreで取得したTimestampを、Kotlinで扱うためにDate型に変換します。
簡単です。

“`Kotlin:MainActivity.kt
//FirestoreのドキュメントからTimestampデータを取り出す
val firebase_timestamp = document.data[“timestamp”] as com.google.firebase.Timestamp
//Date型へ変換する
val date = firebase_timestamp.toDate()

元記事を表示

FirebaseMessagingのトークンを取得する際のエラー解消方法

# エラー

Firebaseのチュートリアルを進めていると、クライアントアプリのインスタンスの登録トークンを取得するステップにあたります。

https://firebase.google.com/docs/cloud-messaging/android/client?hl=ja#retrieve-the-current-registration-token

チュートリアルでは以下の記載があります。
>現在のトークンを取得する必要がある場合は、FirebaseMessaging.getInstance().getToken() を呼び出します。

同じくチュートリアルでは、kotlinの場合のコード例が紹介されています。

“`kotlin:
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w(TAG, “Fetching FCM registration token

元記事を表示

AsyncTaskを使った非同期処理

メモです。詳細は下記URL先を参照してください。
https://dev.classmethod.jp/articles/asynctask/

元記事を表示

HMSとAndroid OSバージョンについての考察

# 背景
Androidのbuild.gradleのminSdkVersionを16以下に設定し、HMSライブラリを導入すると、ビルド時に次のようなエラーが出てきます。

“`text
Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 17 declared in library [com.huawei.hms:hwid:5.2.0.300] xxxxxxxxxxxxxxxxxxxxxxx\AndroidManifest.xml as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project’s minSdk version to at least 17,
or use tools:overrideLibrary=”com.huawei.

元記事を表示

【Unity】GoogleAdMobでiOS14対応したときのトラブル解決

![iOS14_SKAdNework_error_thumb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401916/c25fd72b-170d-da89-2d33-c6df0d29f26a.png)

今回GoogleAdmobの管理画面にiOS14(SKAdNework)に未対応である旨のエラーが出ており
対応を入れることにしました。

その対応を備忘録として残しておきたいと思います。

本文はこちらです
https://tedenglish.site/unity-googleadmob-ios14-trouble/

元記事を表示

2021/3/23 Android System WebViewは何が修正されたのか?

2021/3/23に世間を騒がせた、Android System WebView (Google Playだと ‘AndroidシステムのWebView’ って表記のやつ)、結局、何を修正したら直ったのか気になったので、Gitログを調べた。

* おかしいと報告のあったバージョン: 89.0.4389.90
* 直ったと報告のあったバージョン: 89.0.4389.105

https://github.com/chromium/chromium/compare/89.0.4389.90…89.0.4389.105

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/5393e685-c1f2-0f2a-81a1-820968157d39.png)

なるほどわからん。

元記事を表示

AndroidでFirebaseにいちばんシンプルにHelloWorldをInsertする

# はじめに
WebからAndroidに入るような人って、まず、Androidの端末からHelloWorldを、Firebaseに送りたいのよ。なんでかQiitaにもUdemyにもTechpitにもシンプルにミニマルに書いてあるってないのよー

# 前提条件
全部最新版でいい(とりあえず)
・AndroidStudioは一番新しいのを入れろ
・Targets API level 16+ を入れろ
・Uses Gradle 4.1+ を入れろ
・Uses Jetpack (AndroidX) を入れろ
・compileSdkVersion 28+ を入れろ

# Androidプロジェクト作成
## Create New Project
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/f5125b45-7783-ac4b-5a9f-c66e0ee380fa.png)
## Empty Activity
![image.png](https://qiita-image-store.

元記事を表示

Kotlinでカスタムしたダイアログからコールバックを受ける

#レイアウトをカスタムしたダイアログからコールバックを受ける
・自分で作ったレイアウトをダイアログアラートに適応します。
・ダイアログでOKボタンが押されたら、メインアクティビティでコメントをprintlnします。

“`Kotlin:MainActivity.kt
//ダイアログ側で設定したインターフェースを実装
class MainActivity : AppCompatActivity(), TestDialogFragment.TestDialogListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

//ダイアログの起動ボタン
val btn = findViewById

元記事を表示

[Android][Java]ボタン付きのカスタムセルのListViewを作成する

ボタン付のカスタムしたセルでListViewを作成する方法を記載します。
リスト表示する場合にはRecyclerViewの方が柔軟に様々な事ができますが、その分実装量が多くなるため、簡単に実装ができるListViewについて書いていきます。
完成イメージは以下です。

AndroidStudioで空のアクティビティを作成した状態から始めます。
#1.layout/activity_main.xmlにListViewを定義する
空のアクティビティを作成すると、ConstraintLayoutだけが定義されている状態なので、以下のようにListViewを定義します。

“`activity_main.xml

元記事を表示

[Android/Java] Jetpack LifecycleObserver

Android Studio 4.1.3(windows版) で動作確認しています

Jetpack LifecycleObserverの簡単な説明とサクッと試すためのコードです

Android DeveloperのLifecycleObserverの説明は以下です

https://developer.android.com/topic/libraries/architecture/lifecycle?hl=ja

getViewLifecycleOwner()についてはこちら

https://developer.android.com/reference/androidx/fragment/app/Fragment#getViewLifecycleOwner()

## 確認用コード
各イベント/イベントの引数は省略できます
Lifecycle.Event.ON_ANYはすべてのイベントを受け取れて
Lifecycle.Event.ON_ANYのみ引数でLifecycle.Eventを指定できます
getCurrentState()で現在のLifecycleの状態も取得できます

元記事を表示

【Kotlin 初心者】font-familyで余白が入った場合の対処方法

## font-familyで余白が入った場合の対処方法
font-familyを指定した際に意図しない余白があり困ったので、この記事を書きました:point_up_tone2:

結論から言うと下記のプロパティを書くと解決します。

“`
android:includeFontPadding=”false”
“`

fontによっては初期でandroid:includeFontPaddingがtrueになっているみたいです。
ざっくりとですが、android:includeFontPaddingの初期値がtrue,falseのfont一覧を書きました

| true | false |
| —- | —- |
| noto_sans_cjk_jp_medium | hiragino_kaku_gothic_pro_n_w_3 |
| – | yu_gothic_bold |
| – | roboto_medium |

元記事を表示

BindingAdapterで「Caused by: java.lang.IllegalStateException: Required DataBindingComponent is null」

DataBindingでBindingAdapterを使っていると、以下のエラーが発生することがあります。

“`kotlin
Caused by: java.lang.IllegalStateException: Required DataBindingComponent is null in class ActivityMainBindingImpl.
A BindingAdapter in com.example.sample.BindingAdapter is not static and requires an object to use, retrieved from the DataBindingComponent.
If you don’t use an inflation method taking a DataBindingComponent, use DataBindingUtil.setDefaultComponent or make all BindingAdapter methods static.
“`

これは`@JvmStatic`がないことに

元記事を表示

【IOS , Android】React-Nativeで設定画面に遷移する

## 前提条件
– React-Nativeの環境を構築済み
– エミュレーターをIOSとAndroid両方立ち上げられる

## 実装方法
わかりやすいようにonPressした際に設定画面に遷移させます
下記ではButtonを押しても特に何も起きません

“`js:App.js
import React from ‘react’;
import {StyleSheet, View, Button} from ‘react-native’;

const App = () => {
return (

元記事を表示

Activityを保持しない場合のonActivityResult

# はじめに
Activityを保持しない場合も動作するように修正しようとしたら、ハマってしまい苦労したので備忘録として書きます。

Intentで他のアプリを起動した場合など、Activityがバックグラウンドに移動した時にメモリが足らなくなると、
もともと起動していたアプリ(Activity)を終了してメモリを確保するみたいです。
この時、アプリが復帰する動作が通常とは異なる動きをするので注意が必要です。
ただ、裏ですごいリッチでグラフィカルなゲームを起動してるとか、動かしてるアプリがめちゃめちゃメモリ喰うとか、端末が古くてすごい非力な場合とかの少し特殊な場合でしか起こり得ないことなので気づきにくいかもしれません。

# 結論
onActivityResultとonStartの呼び出し順が変わるので注意!!

## 再現方法

開発者向けオプションから「アクティビティを保持しない」の項目をONにすることで、Activityがバックグラウンドに移動した場合に常に終了するようにできます。

## ライフサイクル

Activityを保持する/しないの両方共動くようにしようとしたら、思っ

元記事を表示

Kotlinで文字列を選択できるドラムロールをシンプルに実装

#NumberPickerを使ってドラムロールを実装する
Kotlinならドラムロールはわりと簡単に実装できます。

##ドラムロールを実装

レイアウトにドラムロールとなるNumberPickerを追加します。

“`Xml:activity_main.xml

“`

onCreateメソッドでNumberPickerに文字列をセットしていきます。

“`Kotlin:MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

//ドラムロール表示用の配列作成
val fr

元記事を表示

[Android/Java] Jetpack LiveData (Jetpack ViewModel MVVM+Repositoryパターン)

Android Studio 4.1.3(windows版) での流れとなります

ここではMutableLiveDataをRepositoryで持ち単純なデータのModelを扱うだけの
シンプルな構成で一連の流れを説明します

以下の記事のプロジェクトベースでの説明となります

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

Android DeveloperのJetpack LiveData/MVVM+Repositoryパターンの説明は以下です

https://developer.android.com/jetpack/guide?hl=ja

## Layoutの準備
ここではViewBindingを使用して実装します
ViewBindingの設定方法を知りたい方は以下を参照してください

https://qiita.com/smurata_pvt/items/99cd5f878b4eedb84dc8

MainFragmentのテンプレートにあるTextViewはidが指定されていないため
ここではtext

元記事を表示

backgroundとbackgroundTintの違い

# `android:background`

背景として使用するドローワブルで、描画可能なリソース(PNG画像、9パッチ[^2]、 シェイプドローワブル[^1]、色を指定します。

色の形式は「`#rgb`、`#argb`、`#rrggbb`、`#aarrggbb`」があります。

#`android:backgroundTint`

backgroundにカラーフィルターをかけて色を変化させることが出来ます。

例えば、`android:background=”#FF0000″`(赤)で、`android:backgroundTint=”#00FF00″`(緑)を指定すると、`#FFFF00(黄色)`になります。

> [3原色と色度図より](https://www.shokabo.co.jp/sp_opt/spectrum/color3/color3.htm)

色の形式は`android:background`と同じく、「`#rgb

元記事を表示

UnityでFacebookSDKのAndroidでログインエラーの解決方法

# 概要
UnityでFacebookSDKを使用してAndroidでログインエラーが出てしまう問題の解決方法

# 問題点
KeyStoreの作り方がFacebookで紹介されているものと別であったため、Unity上で表示されたキーハッシュが間違っていた

# 解決方法
確実なキーハッシュの取得方法はIResultのRawResultの中に記載されている

“`
// 初期化等は割愛

FB.LogInWithReadPermissions(・・・, OnLogin);

void OnLogin(IResult result)
{
// こいつを確認する!!!
Debug.Log($”Raw:[{result.RawResult}]”);
}
“`

# その他エラー解消のための参考文献
[公式](https://developers.facebook.com/docs/unity/getting-started/android)
[ザ・ゆるふわ](http://ado3s.hatenablog.com/entry/2016/11/07/015736)
[cloudpa

元記事を表示

[Android/Java] Jetpack Navigation 画面遷移とFragment間のデータ受け渡し

Android Studio 4.1.3(windows版) での流れとなります

以下の記事のプロジェクトベースでの説明となります

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

Android DeveloperのJetpack Navigationの画面遷移とFragment間のデータ受け渡しの説明は以下です

https://developer.android.com/guide/navigation/navigation-pass-data?hl=ja

https://developer.android.com/jetpack/androidx/releases/navigation

## SafeArgs を追加する
※ 現時点ではandroidx.navigation:navigation-safe-args-gradle-pluginをimplementationでは動作しないようです
※ androidx.navigationのバージョンに合わせて設定してください

“`build.gradl

元記事を表示

OTHERカテゴリの最新記事