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

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

【Android+DataBinding】バインディング式のメソッド呼び出しでデフォルト引数は使えない

# 問題
タイトルのままです。

DataBindingと式言語(バインディング式)については [Android Developers-レイアウトとバインディング式](https://developer.android.com/topic/libraries/data-binding/expressions?hl=ja#expression_language) が詳しいです.

## 環境
– Android Studio 4.1.2
– Kotlin version 1.5.10
– Android Gradle Plugin 4.1.2

## ソース

まず、呼び出すメソッドは以下の`Event#formatMessage`

“`kotlin:Event.kt
@Serializable
data class Event(
@SerialName(“n”)
val name: String,
@SerialName(“t”)
val message: String
) {
override fun toString(): St

元記事を表示

[Android]コピペでできる!でバージョンアップを検出しよう!!

#初めに
アプリを開発しているときに、ユーザーにバージョンアップの情報を届けたいときや、バージョンアップによるデータの変更を一度だけ行いたい時があると思います。
その時にバージョンアップの検出を行いたいのだが、少しめんどくさいと感じたため、できるだけ手軽に、コピペだけでできるようにメモを残しておきたいと思った。

#内容
“`kotlin
// 今のバージョン番号を取り出す
val versionNow = PackageInfoCompat.getLongVersionCode(this.packageManager.getPackageInfo(this.packageName, 0))

// シェアプリのインスタンス化
val sp: SharedPreferences = getSharedPreferences(“DateStore”, Context.MODE_PRIVATE)
// シェアプリから値を取り出す
val vCode: Int = sp.getInt(“Version

元記事を表示

RecylerViewの実装方法まとめ(その①)

[Navigation](https://qiita.com/kame_yang/items/131fa044dd8880bc3379)、[ViewModel](https://qiita.com/kame_yang/items/a88c316b5fd90c212d78)、[Room](https://qiita.com/kame_yang/items/b5e2297fdf489919d9be)に続き、今回は`RecyclerView`の実装方法をまとめていきます。

# この記事の内容
公式の[ドキュメント](https://developer.android.com/guide/navigation?hl=ja)やトレーニング「[Android Kotlin の基礎](https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja)」のレッスン7「RecyclerView」を参考に実装のポイントとエッセンスをまとめていきます。
今回は長いので第一回、第二回の2回に分けて解説していきます

元記事を表示

【HTML/CSS/jQuery】iOSとAndroidのプッシュ通知を作ってみた。

## 初めに

業務で、iOSとAndroidのプッシュ通知をHTML/CSSで作ることになりました。

プッシュ通知をHTML/CSS作っている人がいなかったので、
自分で作ってみました。

Codepenを使用して、作成しています。
画面に埋め込むタイプだと、サイズが小さいので
Codepenのサイトで、触ってください。

## iOS版 プッシュ通知

## Android版 プッシュ通知

GoogleのWebRTC Androidをビルドする

GoogleのWebRTC Androidをビルドする機会があり、所々つまづいたので残しておきます。

参考URL
https://webrtc.googlesource.com/src/+/main/docs/native-code/android/index.md

## 1.Ubuntu Linux環境の構築

VirtualBoxにUbuntuを導入する手順はよく転がっているので、詳細は割愛します。

### 仮想環境の構築
ビルド環境はLinuxのみがサポートされているので、私の場合はMacにVirtualBoxをインストールしUbuntu Linuxの環境を構築しました。
注意点としては、まずストレージのサイズですがデフォルトの(確か)10GBだと小さすぎるので64GBのストーレジを割り当てたことと、ビルド速度に影響するCPUの個数も4個割り当てました。1個だとビルド時間がかなり長くなります。メインメモリも8GB割り当てました。

### Ubuntu Linuxのインストール
Ubuntuは言語を日本語でインストールすると画面にウインドウが収まらなくてボタンが押せなかっ

元記事を表示

ゆめみの Android の採用コーディング試験を公開しました


株式会社ゆめみの Android の採用コーディング試験を公開しました :tada:

https://github.com/yumemi-inc/android-engineer-codecheck

会社の採用試験どうしよう、、と悩んでいる採用担当の方がいましたら、ぜひご活用ください :ok_woman:
レビューできる人がいないという場合には、ぜひ弊社までご相談いただけたらと思います。

## なんで公開したの?

主に応募のハードルを下げるのが狙いです :smirk:
どんな試験なのか分かっているだけで、だいぶ気が楽になりますよね :relieved:

また、逆に無茶な応募が減るということもあるのではとも考えています。

## どんな試験?

ざっくり説明すると **メチャクチャなコードを改善してください** というもの

元記事を表示

[Android]ひとりCodelab会「コルーチンの概要」

#対象
– コルーチン全く知らないんだけど、一緒に勉強してくれる人がいない人

#ひとりコードラボ会
ZOZOさんが、チームの開発力向上のためにコードラボ会をやっているとの情報を聞いたので、自分もやってみようと思いました。

https://techblog.zozo.com/entry/codelab-as-a-team

コードラボは、Google様が提供している教育コンテンツのことです。

今まで、やってこなかったのですが、現場の方も活用しているということは、情報の質が高いのかなと思い、チラ見したらそんな感じしたので、習慣化しようと思いました。

#コルーチンの概要
「コルーチンの概要」というコンテンツをやろうと思います。
超入門レベルな解説いきます。
##スレッドとは

“`kotlin
fun main() {
println(a())
println(b())
println(c())
}

fun a() = “a”
fun b() = “b”
fun c() = “c”
“`
Androidプログラミング(多分他もそう)は、基本的にメインスレ

元記事を表示

Androidのライセンス表示について(license-tools-plugin)

#はじめに
仕事でAndroidアプリにオープンソースライセンスを表示させる必要があり、初めてクックパッドさんの`license-tools-plugin`を使用しました。
今後も使用する機会があるかと思い、導入方法をまとめました。

#license-tools-pluginとは
[クックパッドさんが公開](https://github.com/cookpad/LicenseToolsPlugin)しているプラグインで、以下の機能が提供されています。
– yamlを使ったオープンソースライセンスの管理
– ライセンス追記漏れのチェック
– ライセンス一覧のhtmlの作成

#開発環境
PC:MacBook Pro
OS:macOS BigSur
Android Studio:Arctic Fox 2020.3.1

#license-tools-pluginの導入方法
※今回はAndroid開発でよく使われるライブラリをいくつか追加し、`出力したhtmlファイルをwebViewに表示させる方法`について記載いたします。

##1.プラグインを追加
build.gradle(pr

元記事を表示

TPLINK ARCHER のファイアウォールの設定について

突然通信が途絶することがある

TPLINKのルーターを使用しているときに突然通信が途絶(WIFIの接続は生きているが、外部との通信が突然途切れる、特定のクライアントのみで他のクライアントでは異常なし)することが頻繁に起きるので調べてみました。

シスログを見てみよう

DoS攻撃保護に関するエントリーが見つかったら、ファイアウォールの設定が原因と見られる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831262/1ed7c590-b20a-0a03-d766-9b6958991da7.png)

もしDoS攻撃保護が原因でインターネットとの通信が遮断されている場合は下記のリストにホストが登録される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831262/5113beec-0e84-da4f-13e0-d47bc2717846.png)

ファイアウォールの設定ー

元記事を表示

Android SDK packages as some licences have not been accepted エラーが出たときの対処方法

# licence error

“`
> Failed to install the following Android SDK packages as some licences have not been accepted.
“`

こんなエラーが出ることがある。

“`
$ cd ~/Library/Android/sdk/tools/bin
$ ./sdkmanager –licenses
Accept? (y/N): y


All SDK package licenses accepted
“`

元記事を表示

Kotlin firstOrNullの使い方について

実務でfirstOrNullのメソッド使う時があったため備忘録としてここにメモしておきます

“`
//以下のようなlistがあった場合に頭の1を取得したい場合に`firstOrNull`や`first`を使います

val list = listOf(“1”, “2”, “3”,”1″)
list.firstOrNull { 1 == it.1}
“`

`fist`,`firstOrNull`の違いについて

“`
val list = listOf(“1”, “2”, “3”,”1″)
list.first {2 == it.4}
//listの中に4がないのでnullになりおちます

list.firstOrNull {2 == it.4}
//listのなかに4はありませんが、該当する値がない場合はnullをあつかってくれるので、あらかじめnull許容にしておけば問題ありません

“`

元記事を表示

タスクキルしたときにForeground Serviceの通知が消えない時の対処方法

※Pixel 5 Android 12 betaでほぼ確実に発生することを確認しましたが、他の端末・バージョンだと発生するかどうかはまちまちです。

Foreground Serviceを実行している間にアプリをタスクキル(タスクリストからActivityをスワイプして消す)すると、Serviceの`onDestroy`は呼ばれず、Foreground Serviceの通知が残り続けます。

LogCatを見ていると

“`
ActivityManager: Scheduling restart of crashed service
“`

のような行が見えます。おそらくタスクキルの操作により一度Serviceが強制停止されるが、システムにより自動的にServiceが再起動されているのでしょう。

以下のようにログを仕込んで、タスクキル時にServiceに何が起こっているかを調べてみました。

“`kotlin
class MyService : Service() {

override fun onCreate() {
Log.d(“HOGE”, “onCrea

元記事を表示

Flutterチュートリアル Todoアプリを作ろう! ~環境構築~

# この記事を書こうと思った理由
 この記事を書く前はFlutterでMarkdownで書けるメモアプリを作成していました。そのアプリの制作が終わったので、ここらへんで一旦自分のFlutterの知識をアウトプットしようと思いこの記事を書きました。

## デバック環境
– Windows 10
– Android 30

## Flutter環境構築
1. FlutterSDKのダウンロード
 [FlutterSDKのダウンロードリンク](https://flutter.dev/docs/get-started/install)
ここからSDKをダウンロードしCドライブ直下などに展開してください。

2. Flutter SDKのパス通し
 SDKの展開したフォルダ・ディレクトリの名前が「flutter」になってると思います。その中の「bin」のファルダのパスを通してください。

3. Android Studioのインストール
 [Android Studioのダウンロードリンク](https://developer.android.com/studio)
ここからインストーラーをダ

元記事を表示

Roomの実装方法まとめ

[前々回](https://qiita.com/kame_yang/items/131fa044dd8880bc3379)、[前回](https://qiita.com/kame_yang/items/a88c316b5fd90c212d78)に続き、今回は`Room`の実装方法をまとめてみようと思います。

# この記事の内容
公式の[ドキュメント](https://developer.android.com/guide/navigation?hl=ja)やトレーニング「[Android Kotlin の基礎](https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja)」のレッスン6「Room データベースとコルーチン」を参考に実装のポイントとエッセンスをまとめていきます。

### 前提知識

* kotlinの基礎的な文法
* AndroidStudioの使い方/アプリの作り方
* 画面や画面部品の配置方法
* `Navigation`の実装方法([前々回](https://q

元記事を表示

Google Play Console経由でaabファイルをインストール

# はじめに
bundletoolを使う方法は下記に掲載されている。
https://qiita.com/ikemura23/items/9b6064cb123edc1e233f

ここではGoogle Play Console経由でインストールする方法を解説する。

# インストール方法

1. Google Play Consoleのアプリ画面からメニューを開き、App Bundle エクスプローラを選択。
![app_bundle_explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/f9749f46-b083-24d8-56a9-3b1a42e00ac9.png)

2. アップロードボタンからaabをアップロード
3. ダウンロードタブのアクセスを管理から、ダウンロードしたいGoogleアカウントを追加
4. ダウンロードタブの`共有可能なリンクをコピー`からダウンロード

元記事を表示

【Android】「java.lang.AssertionError java.lang.NoSuchFieldException」が出たときの対処法

Androidで「java.lang.AssertionError java.lang.NoSuchFieldException」が出たときの対処法をご紹介します。

## 環境
Android Studio 4.1.3
kotlin 1.4.32
java 1.8.0_241

## 現象
Androidアプリの評価のため社内リリース版を公開して使用していると、ある箇所でアプリが強制終了しました。
そこでデバッグを有効にしてログを確認してみると以下のエラーが出力されていました。

“`
java.lang.AssertionError java.lang.NoSuchFieldException: Open
“`
「Open」は自分で定義したenumクラスの定数の一つです。
デバッグ版ではこのようなエラーが出ていなかっため、気づかずに社内リリースしていたようです。

## 解決法
[こちらの質問](https://stackoverflow.com/questions/57790047/getting-java-lang-assertionerror-java-lang-nosu

元記事を表示

【Android】ツールバー(Toolbar)にアプリアイコンを表示しサイズを調整する

#はじめに
最近の Android は Material Design を適用することが多くなっています。
また、アプリアイコンには Android7.0 でラウンドアイコン(Round Icon)が登場して、Android8.0 ではアダプティブアイコン(Adaptive Icon)が登場しました。それによってOSごとに表示されるアイコンも変わります。
今回は普通のアイコンとアダプティブアイコン、ベクター画像といったどんな形式のアイコンにも対応できるツールバーのアイコン制御方法を紹介しようと思います。

[【公式ドキュメント】アダプティブ アイコン](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive?hl=ja)

#サンプルアプリを作成
今回は簡単に Android Studio から New Project でサンプルアプリを作成します。
シンプルなアプリの「Empty Activity」を選択しました。
![New_Project.png](https://qiita

元記事を表示

初めてGithub ActionsでCIとやらをやってみた

#CIとは?
そもそもCIとは何なのでしょうか。正直私も今回初めてCIを扱うので腑に落ちる理解はできていませんが、すごく簡単にいうと自動的にアプリが正常かどうかチェックしてくれるシステムかなと考えています。

#GitHub Actionsを利用してCIをセットアップできる
CIを行うには様々なツールが存在するみたいですが、Github Actionsを利用すると他のCIツールと同じようにプッシュやプルリクなどの操作をトリガーにして処理を実行させることができます。

#セットアップしてみよう
CIを導入したいプロジェクトのリポジトリに行くと画面上部にActionsというタブ?があるのでそれをクリックします。

これをクリックするとワークフローをセットアップしようねみたいな画面が出てくるのでその中から自分が作成したプロジェクトの言語と

元記事を表示

[Flutter]Androidでデバッグ実行しても、エラー発生もなしでインストール状態が続く

## 概要

– Androidでデバッグ実行しても、エラー発生もなしでインストール状態が続く

## 環境
– Mac OS Big Sur 11.6

## 原因

– 裏でアプリのキャッシュデータみたいなのが残っている可能性がある

## 対策

– adb uninstall ${packageName}

で Successと表示されればデバッグ実行できるようになる

## 参考

– https://stackoverflow.com/questions/51809421/flutter-is-not-able-to-install-the-apk-into-the-real-device-suddenly

元記事を表示

ZOZOのアプリのUIを再現しようの会 【お気に入りタブ編】その1

##はじめに
知り合いのAndroidエンジニア方たちとZOZOTOWNのアプリのUIを再現しようというハッカソン的なことを始めました。そこで実装していく上で考えたことや詰まったことなどを何回かに分けて記事として投稿していこうかなと思います。

ZOZOTOWNのアプリは画面下に5つのタブがついています(著作権的なことが怖いので画像は載せません?‍♂️)。今回は一人が一つのタブ毎の画面を担当するという構成になりました。僕はお気に入りタブの担当になったので、お気に入りタブに関して書いていきます!

今回はTabLayoutとViewPager2の接続部分をやっていこうと思います。

##今回の完成像

今回の完成像

##全体の構成
TabLayout + ViewPager2 + FragmentStateAda

元記事を表示

OTHERカテゴリの最新記事