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

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

AdMob バナー広告の読み込み時にプレースホルダーを表示する

## 課題

AndroidでAdMobバナー広告は[アダプティブ バナー](https://developers.google.com/admob/android/banner/adaptive?hl=ja)使用します。
よくある広告バナーをアプリ上部or下部に常時表示するアプリでは、リンク先の通り以下のように実装します。(レイアウトの呼び出しはDataBindingを使用しています。)

“`Kotlin:MainActivity
class MainActivity : AppCompatActivity(R.layout.activity_main) {

private lateinit var adView: AdView
private val adSize: AdSize
get() {
val display = windowManager.defaultDisplay
val outMetrics = DisplayMetrics()
displa

元記事を表示

#1 Kotlin Koans Introduction/Hello,world 解説

# はじめに

Kotlin公式リファレンスのKotlin Koansの解説記事です。

Kotlin Koansを通して、Kotlinを学習される人の参考にして頂ければ幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:grinning:

# Introduction/Hello,worldの解説

[Kotlin Koans Introduction/Hello,world](https://play.kotlinlang.org/koans/Introduction/Hello,%20world!/Task.kt) の解説です。
随時本サイトの内容を引用させていただきます。

まずは、右側の本文を見てみましょう。

> Take a look at function syntax and make the function `start` return the string `”OK”`.

> In the tasks the function `TODO(

元記事を表示

私のKotlin学習法(初学者向け)

# はじめに

Androidエンジニアとして働いております、Goです:smile:

今回は私がどのようにKotlinを学習したのかをお伝えしたいと思います。

皆さんのKotlinの学習の一助となれば幸いです:muscle:

# 対象者

* Kotlinの学習を始めようとしている方
* Kotlinの学習の方法で悩んでいる方
* Androidアプリを作ってみたいと思われている方

# Kotlinって何?

KotlinはJavaの後継言語としての活躍を期待して誕生しました。

1番の特徴は、Javaと完全な**相互運用性**があるということです。

つまり、**既存のJavaのライブラリが使える!**ということです。

Javaは世界中の多くのエンジニアが利用しており、様々な場面で使われています。

そのため、便利なライブラリが多く準備されているのです。

これらの恩恵を被ることができるのは、Kotlinの大きな特徴と言えるでしょう。

(※KotlinはJVM(Java Virtual Machine)というJavaの実行環境で動作する特徴もあります。)

また、

元記事を表示

[Android] logcatから問題解析してみよう

## はじめに

Androidアプリ開発をしていて問題が発生した場合、解決策は2つあります。
 1.ググる
 2.ログから解析

1は誰でも出来る事ですが、ドンピシャな回答があるとは限りません。
今回はログから解析する場合、どんな感じで読み解けばよいのか、解説していきます。

## logcatで出力されるログについて

logcatのログは “`timestamp PID TID log-level“` メッセージ というように表示される

例えばこんなログ

“`
05-03 12:17:02.536 1860 12249 I ActivityManager: START u0 {flg=0x10008000 cmp=com.jp.pripri.activitytest/.MainActivity} from uid 10075
“`

– timestamp: 05-03 12:15:04.666
– PID(プロセスID): 1860
– TID(スレッドID): 4144
– log-level: Info
– メッセージ: ActivityManager: ST

元記事を表示

HMS Account Kitの利用時にHuaweiIdAuthButtonも合わせて使いましょう

# ログイン画面実装時の厄介な作業
Androidのレイアウトの実装時に、開発者がよく直面する問題の一つはUIパーツ実装の厄介さです。たとえば、このボタンの実装は技術的に全然難しくないのに、marginとか、paddingとか、パーツの間隔とか、いろいろ定義しなければならないし、デザイナーによってデザインが微妙に違うし、同じボタンのはずなのに、なぜか各画面ではデザインが統一されていない、といったことがよくあるのではないでしょうか?

HuaweiIdAuthButtonはこういった悩みを解放してくれるHMSの贈り物です。

# HUAWEIログインのボタンデザインは定められている
[HMS Account Kit実装入門](https://qiita.com/Rei_2020/items/81001ffc6299e56401c8)と[HMS Account Kit実装入門(Authorization Code編)](https://qiita.com/Rei_2020/items/3eb5cb484be0cea9c640)でも述べましたが、ファーウェイはこのログインボタンのデザインを細

元記事を表示

ProgressBarで待機中を表示

## はじめに
何らかのWEB APIをリクエストして処理待ち。
そういことよくありますよね。
そういった待機中なのを示すのに、ProgressBarを使ってみました。

## [ProgressBar](https://developer.android.com/reference/android/widget/ProgressBar)
ProgressBarはいくつかのstyleがあり、またコードを書かなくてもレイアウトで設定するだけで動きます。

– Widget.ProgressBar.Horizontal
– Widget.ProgressBar.Small
– Widget.ProgressBar.Large
– Widget.ProgressBar.Inverse
– Widget.ProgressBar.Small.Inverse
– Widget.ProgressBar.Large.Inverse

これらのstyleがあります。
今回は Widget.ProgressBar.Large を使いました。

## デモ
簡単なサンプルを作成しました。

![progre

元記事を表示

【Flutter】l10n ローカライゼーション(多言語対応)に対応する

## Flutterのstableが1.22.0にアップデート
[1.22.0](https://medium.com/flutter/announcing-flutter-1-22-44f146009e5f)のアップデートに伴い、多言語対応が含まれました。
なので、早速試してみました。

[公式のドキュメントはこちら](https://docs.google.com/document/d/10e0saTfAv32OZLRmONy866vnaw0I2jwL8zukykpgWBc/edit)

## 完成イメージはこちら
[https://github.com/Tetsukick/enGolf](https://github.com/Tetsukick/enGolf)
[App Store はこちら](https://apps.apple.com/jp/app/engolf/id1507668448?l=en)
[Google Play Store はこちら](https://play.google.com/store/apps/details?id=com.tetsukick.engo

元記事を表示

Android Studio 4.0.1でRクラスを確認する方法

Android開発でお馴染みの`R.java`(Rクラス)ですが、Android Studio 3.6からR.java自体は生成されず、Rクラスのバイトコードが生成される方式に変わったようです。

![スクリーンショット 2020-10-02 0.44.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/995/da945fd0-6247-ea5f-ca92-d4dacab1892c.png)
https://android-developers.googleblog.com/2020/02/android-studio-36.html

このことを知らず、先日Rクラスを確認しようとして困ったので、確認方法を記載したいと思います。

# 場所
`R.java` は生成されませんが、`R.txt` として生成されているようでした。

場所は

“`
app/build/intermediates/runtime_symbol_list/debug/R.txt
“`

にありました。 `debug` の

元記事を表示

HMS Account Kit実装入門(Authorization Code編)

# 前書き
[HMS Account Kit実装入門](https://qiita.com/Rei_2020/items/81001ffc6299e56401c8)でIDトークンによるユーザー認証を紹介しました。本章はAuthorization Codeによるユーザー認証と、IDトークンによるユーザー認証との違いを紹介したいと思います。

# 前準備
AppGallery ConnectでAccount Kitの設定ページに入り、redirect_uriをセットします。サーバー側がユーザー情報をファーウェイのアカウントサーバーから取得する場合は設定しなければなりません(APIを呼び出すのに必須なパラメータであるため)。
スクリーンショット 2020-10-01 233255

# 実装

こちらはオフィシャルサイト

元記事を表示

Android の Room と Windows の EF Core を比較してみた

# 背景

最近、現場で現行アプリ(Android)の Windows 版を新たに別途開発する仕事をしております。
その中で、DB ライブラリの Room で書かれたコードを EF Core に置き換える作業をしました。
それぞれのライブラリの理解を深める良い機会となったので、メモとして残します。
なお、DB の基本やライブラリの導入方法、細かな文法については説明しませんのでご了承ください。

# 使用したサンプル

以下のサイトの例をサンプルとして使用させていただきました。
[Room を使用してローカル データベースにデータを保存する  |  Android デベロッパー  |  Android Developers](https://developer.android.com/training/data-storage/room?hl=ja)

# エンティティ

まず、こちらが Room(Kotlin) のコードです。

“`kotlin:User.kt
@Entity(tableName = “user”)
data class User(
@PrimaryKey(

元記事を表示

HMS Account Kit実装入門

# HMS Account Kitの概要

最近のアプリはだいたいサーバーと連携して動作します。そしてユーザー登録が必要だったり、会員登録しないとお得なサービスが使えなかったり、といったパターンが多いです。その新規登録にあたって、どのように本人確認を行うか、また、ユーザーに負担をかけずに新規登録をしてもらうか、というのは考えなければならない問題点です。

そこで登場するのがソーシャルログインというのもです。こういう画面を見たことありますか?
Screenshot_20201001_150109_com.ss.android.ugc.trill.jpg
第三者のプラットフォーム経由で新規登録・ログインを行うのがソーシャルログインです。HUAWEI Account KitはGoogleやLINE、Twitter、

元記事を表示

Android でのシリアル通信アプリの開発

AndroidでUSBシリアル通信(その1)ハードウェア・ソフトウェア構成等

AndroidでUSBシリアル通信(その1)ハードウェア・ソフトウェア構成等

先ずは情報収集
https://qiita.com/kerobot/items/ac8fa69955f9d3414f81
https://github.com/ksksue/AndroidSerialTerminal

USBシリアル通信アプリはあるものの、TeraTerm マクロみたいのはないのかなと…
https://play.google.com/store/apps/details?id=de.kai_morich.serial_usb_terminal&hl=ja
https://play.google.com/store/apps/details?id=jp.sugnakys.usbserialconsole&hl=ja
https://applion.jp/android/word/USB%20Serial%20Monitor%20Lite/

元記事を表示

GCSのキャッシュ

なんでかよくわからないけど、GCSに格納したファイルを更新してアクセスしてもキャッシュが残っているせいで更新されない!
no-cacheの設定しても反映されない!
AndroidアプリからGCSに格納したJSONを見たいのに反映されないなんて、困る!

そんな時は、パスの最後に`?uuid=適当な文字列`をつけたら更新される裏技を教えてもらったので、早速やってみると見事最新データが取得できましたよ:relaxed:

“`
var path = getString(R.string.json_path) + “?uuid=” + getDate(“yyyyMMddhhmmss”)
“`

元記事を表示

【Android Studio】作業効率化 (Windows)

## はじめに

Android Studio用に個人メモとして書こうと思いました。

## フォント設定

見やすいフォントに変更しましょう。私のおすすめは、Ricty Diminished (自分でインストールが必要)、サイズが19、Line spacingが1.2です。

File -> Settings -> Editor -> Font

## システムのフォント設定

私はフォントはYu Gothic UIのままで、フォントサイズを13に変更してます。

File -> Settings -> Appearance & Behavior -> Appearance -> Use Custom font

## ダークモード設定

これは個人的な好みがありますが、私はダークモードにしています。ダークモードのほうが目に優しいそうです。

File -> Settings -> Appearance & Behavior -> Appearance -> ThemeをDarculaに変更。

## ショートカットキーの変更

Android Studioは自動保存するので、ct

元記事を表示

FCM の onDeletedMessages() は呼ばれるのか?

## 最初に

FCM の Android 版にはメッセージがデバイスが1ケ月以上オフラインだったり、接続されたときに未読メッセージが100件を超えてる場合は **onDeletedMessages() が呼ばれることがある** とあります。

**[onDeletedMessages のオーバーライド](https://firebase.google.com/docs/cloud-messaging/android/receive?hl=en#ondeletedmessages-)**

“`
状況によっては、FCM からメッセージが配信されないことがあります。
これは、特定のデバイスが接続されたときにそのデバイスにまだ配信されていないアプリのメッセージが多すぎる(100 件を超えている)場合や、
デバイスが 1 か月以上 FCM に接続されていない場合に起こります。

このような場合、FirebaseMessagingService.onDeletedMessages() へのコールバックを受け取ることがあります。
アプリ インスタンスがこのコールバックを受け取った場合は、

元記事を表示

Unreal Engine 4 でAndroidのプロジェクト作成及びAndroidのプラグイン開発

Android用のUnreal Engine向けのプラグイン開発に携わったので、
インストールからAndroidで実行及びAndroid JAVA層へのアクセスするプラグイン開発方法。

# 1.Unreal Engine 4のインストール
[Unreal Engine をインストールする](https://docs.unrealengine.com/ja/GettingStarted/Installation/index.html)を参考にUnreal Engineをインストールします。

# 2.Unreal Engineのプロジェクトを作成する。
Unreal Engineを起動するとテンプレート選択画面が現れると思います。
![ProjectBrowserSelectTemplate.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/170755/eba695a5-f9a4-4a78-a393-fd1a2c1af6d3.png)

Blankを選び次へを選択するとプロジェクトの設定画面に遷移します。

元記事を表示

ファーウェイHSMの開発についての考察

# HMSの概要
HMSとはファーウェイが提供しているファーウェイモバイルサービス(Huawei Mobile Services)の略です。

### Android端末とGMSの関係
現在モバイルOS分野ではAndroidとiOSが独走しています。Android端末はAndroidというオープンソースのOSを搭載している端末だと多くの人が認識しています。おそらく皆さんはAndroid端末はこんな感じだと思っているでしょう。
スクリーンショット 2020-09-30 165008.png

昔ならこのイメージは正しいです。しかし近年、Android端末はAndroid OSとGMS(Google Mobile Service)のセットで出荷されていることがほとんどです。つまり、こちらこそ、正しい構成図というわけです

元記事を表示

Using a coroutine without a “GlobalScope” in Activity and Fragment

ActivityとFragmentで`GlobalScope`を使わないでコルーチンを利用する方法です。
`GlobalScope`を何気なく使わないようにしましょう。

### Do not use GlobalScope in local scope

At First. Look at follow code.
This example code is wrong coroutine usage.

“`kotlin
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)

GlobalScope.launch {
val data = wit

元記事を表示

Androidでバーコードスキャナーを実装

# はじめに

カメラやGPSなどハードウェア依存の機能を作る時、スマートフォンは便利ですよね。
アプリ版にしかない機能を盛り込む事で、Web版との差別化も出来ます。

今回は、Androidで`バーコードスキャナー`機能を実装してみたいと思います。

# 実行環境

– Android Studio: 4.0.1
– API Level: 29
– Kotlin: 1.3.70
– [zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded): 4.1.0

# インストール

“`diff
diff –git a/app/build.gradle b/app/build.gradle
index be61190..22efbee 100644
— a/app/build.gradle
+++ b/app/build.gradle
@@ -6,6 +6,11 @@ android {
compileSdkVersion 29
buildToolsVersion

元記事を表示

Robolectric 4.4 にバージョンアップした時に見るメモ

# Robolectric 4.4 がリリース
2020年8月末に`v4.4`がリリースされたようです。[リリースノート](https://github.com/robolectric/robolectric/releases/tag/robolectric-4.4)
`v4.4`では大きな変更があり、バージョンアップしたらテストの大半が失敗するなんてこともあります。

この記事では、`v4.4`での変更点と、テストが失敗する時の対処方法をまとめていきます。

# Robolectric 4.4 の大きな変更点
[リリースノート](https://github.com/robolectric/robolectric/releases/tag/robolectric-4.4)にある通り、`PAUSED looper mode`がデフォルトになったことが大きな変更点です。
これによって、大半のテストが失敗するようになるかも知れません。

`PAUSED looper mode` の説明は、公式のドキュメントに詳しく書いています。
[PAUSED looper mode の説明](http:

元記事を表示

OTHERカテゴリの最新記事