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

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

Flutter調べ備忘録

## この記事は?
Flutter調べたことメモ。
全体像の俯瞰用にシンプルにまとめ。
(気が向いたら随時更新)

## 記載範囲は?
– 言語の特徴
– UIに関して
– アーキテクチャ
– メリデメ

## 言語の特徴
### dart
– オブジェクト指向
– 静的型付け

JAVAライク。

## UIに関して
### 大きく2種類
#### material
Android、MaterialDesignのUI。
[Material Components widgets](https://flutter.dev/docs/development/ui/widgets/material)

![スクリーンショット 2021-08-19 043125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700755/220a2fee-92cf-494c-a920-6ffe379634d5.png)

#### Cupertino
iOSなUI。 iOSでよく見るUI部品は大体ある。
[Cupertino

元記事を表示

Universal Android Music Player(UAMP)のカスタマイズ (音源の変更 その1)

#はじめに
Android用アプリのプログラミングを学ぶため、Googleが公開しているサンプルコード **Universal Android Music Player(UAMP)**をカスタマイズしてみます。
まずは、端末(アプリを実行するスマートフォンなど)内の好きな音楽ファイルを再生するように変更します。

#環境
####PC
MacBook Pro 16
2.3 GHz 8コアIntel Core i9
16 GB 2667 MHz DDR4
macOS Big Sur ver.11.5.2

####開発用SW
Android Studio 4.2.1

####Target Device (Virtual Device)
Category: Phone
Name: Pixcel 2
Resolution: 1080×1920 420bpi
API Level: 28
Android: 9.0
CPU: x86

#Universal Android Music Player (UAMP)
###UAMP概要
[UAMP](https://github.com/andro

元記事を表示

画面遷移と値受け渡し

##はじめに
今回は画面遷移と値の受け渡しについて実装していきます。

![スクリーンショット 2021-08-18 22.42.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/f5be9147-150a-4724-907f-38149cadc727.png)

リストの各行に格納されている商品をアップすると画面が遷移し、
タップした商品が遷移先の画面に表示する機能を実装していきます。
![スクリーンショット 2021-08-18 22.45.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/91c0bd3d-c309-3094-3482-f0f26a7901b8.png)

##実装
“`Kotlin:string.xml

画面遷移サンプル
「Android Gradle plugin requires Java 11 to run.」エラーの対処法

アプリを実行すると以下のエラーが発生しました。

“`
An exception occurred applying plugin request [id: ‘com.android.application’]
> Failed to apply plugin ‘com.android.internal.application’.
> Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
You can try some of the following options:
– changing the IDE settings.
– changing the JAVA_HOME environment variable.
– changing `org.gradle.java.home` in `gradle.properties`.
“`

# 対処法

`Java 11`を選択することで解決します

## `And

元記事を表示

Androidブラウザ(実機 or エミュレータ)からローカルサーバ(localhost)にアクセスする

# はじめに

MacのPCにローカルサーバでnode.jsのアプリをnode appで実行している場合に、実機の端末からアクセスする方法です。
node.jsの場合はポートが3000がデフォルトです。

# 端末からアクセス

実機もPCももちろん同じネットワークに接続します。

“`
http://localhost:3000/
“`

このようにしてPCからであればアクセスできますが、実機やエミュレータでは、何もしないとエラーとなります。

“`
http://127.0.0.1:3000/
“`

これも同じくエラーです。

エミュレータと実機でアクセス方法が違います。

## エミュレータの場合

“`
http://10.0.2,2:3000/
“`

これでアクセスできます

## 実機の場合

まずPCでchromeブラウザを立ち上げて下記のアドレスにアクセスします。

“`
chrome://inspect/#devices
“`

![スクリーンショット 2021-08-18 19.02.58.png](https://qiita-image-sto

元記事を表示

Unity HubがインストールしたAndroid SDKでAPI levelが不足する場合 (Windows)

# 課題
プロジェクトが要求するAPI levelの`platform-tools`がUnityのビルトインSDKに含まれていない場合、最終的に`UnityException: Required API level ~.`というエラーになります。

# 解決例
## 環境
– Windows 10
– Unity 2020.3.16f1 (LTS)
– Target API Level: Android 11.0 (API level 30)

## 対処
– Unityの`Preference`で、ビルトインSDKのインストール先を特定します。
– `C:\Program Files\Unity\Hub\Editor\2020.3.16f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK`
– 管理者権限のあるコマンドプロンプトを開き、カレントディレクトリを`SDK`フォルダに移動して、`tools\bin\sdkmanager “platform-tools” “platforms;android-30″`を実行します。

元記事を表示

ActionBar Titleの色を変更する方法(Kotlin, Android)

> 参考になった動画
> [Change Title Color of Action Bar in Android Studio](https://www.youtube.com/watch?v=HjUeYiOEoWc)

## 端的に
タイトルの色を変えるには“`themes.xml“`内にある“`

“`
この手間だけで“`titleTextColor“`がちゃんと動きTitleの色が変更される。

元記事を表示

Unityでスマホアプリを開発する

Unityでスマホアプリを開発するために必要なものを全てドキュメントに残します。
また、自分自身Unityを使ってのアプリ開発は初めてなので少しでも疑問に思ったことは全てメモしていこうと思います。
完成するまでに随時アップデートします。

## プロジェクト作成までにするべきこと
### Unityのインストール
Unity Hubをインストールするのが良いでしょう。
そこからUnityをインストールします。
※ここでiOSとandroidのモジュールを追加すること
※後からでも追加できます。
(自分は後からモジュールを追加しました)
※日本語化したい人は日本語化のモジュールもインストール

![スクリーンショット 2021-08-18 9.21.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615043/d9c21920-81ed-f69c-1524-0fe5dae42418.png)

こうなっていればOK!

### 2Dと3D両方のスクリーンが出てくる場合はどうすればいい??
→一旦2Dで

元記事を表示

Building Mobile Apps at Scaleの自動テストの部分で知らなかったところメモ

世界的な会社がどうテストしているのか、ちょっとテスト関連のベストプラクティスを探して読んでみています。

個人的にはrobot pattern testingはちょっとした収穫でした。
またかなりSnapshot testが行われていることが印象的でした。
詳しくは以下

https://www.mobileatscale.com/

(ユニットテストは大事的なのが書いてあるんですが、知らなかったところ中心で書いているので飛ばしています)

### Snapshot test

IntegrationテストやUI/E2Eテストの特別な形。スクショをとって、保存されている画像と比較する。データは通常モックが使われる。違うとテストが失敗する。失敗の理由として画像が使われる

Snapshot testのUberでの事例

* iOSではFacebookからiOSSnapshotTestCaseを引き継いで、多用していた
* デバイスのサイズが多様だったのでAndroidで適切なスナップショットを行うための労力がこのプラットフォームでは高すぎると考えたのでAndroidでは行わないことを

元記事を表示

Composeで@Previewを付けたのにプレビューが表示されない件

# 何が起きたのか
Jetpack Composeを導入したのに、@Previewを付けてもプレビューが表示されません。
下記の画像を見てください。正確には、本来Android Studioの画面右側に表示されるはずの「Code / Split / Design」のタブが表示されません。
![スクリーンショット 2021-08-16 20.13.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610553/2e84d1d8-2ca1-6295-0db9-bd8338df7bd0.png)

# 環境

* Android Studio Arctic Fox | 2020.3.1

“`app/build.gradle
dependencies {
implementation(“androidx.compose.ui:ui:1.0.1”)
implementation(“androidx.compose.ui:ui-tooling:1.0.1”)
implementatio

元記事を表示

MockKでトップレベル関数をモックする

[MockK](https://mockk.io/)でトップレベル関数をモックする方法をメモがてら記載します。

こんな `log` 関数があった場合。

“`kotlin:Ext.kt
package com.example

fun log(message: String) {
Log.d(“log”, message)
}
“`

こんな感じで書けばOKでした。

“`kotlin:ExtTest.kt
class ExtTest {

@Test
fun test_log() {
mockkStatic(“com.example.ExtKt”) // ①
every { log(any()) } just runs // ②

// ・・・テストコード・・・
}
}
“`

# ポイント:bulb:
① `mockkStatic` を使用し、トップレベル関数が定義されているクラスを指定します。
今回の場合、

– package が `com.example`
– ファイル名が `Ext.k

元記事を表示

Androidで簡単にアニメーションを追加する【Lottie】

##Lottieって何?
Android,iOS,React Nativeで、アニメーションを画像のように簡単にアプリに埋め込める!
アニメーションはGIFアニメのようなもので、人様が作成してくれたのを選んで使える!
サイズや繰り返し設定など変更可能!
宿泊関係のサービスで有名なAirbnbが作成しており無料で使える!
![lottie.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/7aa20eba-bbec-79ca-ad7e-d7e275ee71a5.gif)
※サンプルはローディング画面に入れてみました

##リンク集
公式トップ
https://airbnb.design/lottie/
Android GitHub
https://github.com/airbnb/lottie-android
Androidドキュメント
http://airbnb.io/lottie/#/android
サンプルアプリ
https://play.google.com/store/apps/de

元記事を表示

ARCore SDK(Java)の Duplicate class 問題

ARCore の開発を行っていて、困っていた問題が解決したのでメモ

# 発生していた問題
ARCore SDK の内部のクラスが a.a.a という名前となっているため、他の Google ライブラリと競合が発生してしまうことがあった

“`gradle:build.gradle
implementation ‘com.google.ar:core:1.25.0’
implementation ‘com.android.installreferrer:installreferrer:2.2’
“`

“`
Duplicate class a.a.a found in modules jetified-core-1.25.0-runtime (com.google.ar:core:1.24.5) and jetified-installreferrer-2.2-runtime (com.android.installreferrer:installreferrer:2.2)
“`

Github の issue
https://github.com/google-ar/arco

元記事を表示

API Guidelines for Jetpack Composeを読んだメモ

こちらにあるドキュメントです。

https://github.com/androidx/androidx/blob/c53c7d0b219e5142656efb564b818eb651615bf0/compose/docs/compose-api-guidelines.md

ある程度Composeを触ったことがある人向けのドキュメントだと思います。開発チームなどでComposeやっていく人は一読の価値があるかなと思いました。

> The Compose API guidelines outline the patterns, best practices and prescriptive style guidelines for writing idiomatic Jetpack Compose APIs. As Jetpack Compose code is built in layers, everyone writing code that uses Jetpack Compose is building their own API to consume themselve

元記事を表示

UnityのAndroid開発でエラーもなく突然激重になる現象とそれを対処した方法

こんにちは、[ハニカムラボ](https://www.honeycomb-lab.co.jp/)の[おの](https://twitter.com/tkyko13)です.

## 現象や状況
* Unity2020系、Unity2019系で発生
* Unity上のエディタでは発生しない
* 実機(Android6系と7系)で発生確認
* 3種類ほどのタブレット端末で発生
* Android5系のスマートフォンでは発生せず
* 10分から40分画面スリープもなく放置していると発生
* 操作していても発生することも
* 見た目はほぼフリーズしている状態だが、画面遷移など時間が立つと起こるためたぶんすごいFPSが下がっているという状況
* Android Logcatなどでもエラーが発見できない
* ただ、警告がずっと出続けていた(EGL_BAD_PARAMETER)

## 結果

[![Image from Gyazo](https://i.gyazo.com/298fcb4084cc020dc7c2273332039ac7.png)](https://g

元記事を表示

KMMを触ってみて思ったこと

##はじめに
KMM(Kotlin Multiplatform Mobile)とは、Kotlin/NativeというKotlinのコードをさまざまなOSのネイティブコード(マシン語)に変換する技術を使って、モバイル(iOSとAndroid)に特化したクロスプラットフォーム開発をできるようにするSDKです。

僕は~~KMMってなんか響きがかっこ良いんで~~KotlinでiOSアプリが作れるっていうところが凄いなと思って勉強を始めてみました。勉強を始めて一番最初に浮かんだ疑問として、Kotlinで開発するのであればただのAndroid開発と何が違うのかというのがありました。その疑問について色々調べてみました。

##仕組みの違い
そもそもAndroidのネイティブ開発ではKotlinやJavaを使うことができます。それぞれのコードがART(Android RunTime)という実行環境でAndroidOS上で動くようなネイティブコードにコンパイルされることで動いています。

対してKMMはKotlin/NativeがKotlinを各OSのネイティブコードに変換するための諸々をやってくれて

元記事を表示

[Android] HiltでApplicationComponentが見つからない

`Hilt`のcodelab [Android アプリでの Hilt の使用](https://developer.android.com/codelabs/android-hilt?authuser=1&hl=ja#0) で、以下のエラーが発生しました。

“`
エラー: シンボルを見つけられません
@dagger.hilt.InstallIn(value = {ApplicationComponent.class})
^
シンボル: クラス ApplicationComponent
“`

# 原因
`Hilt`のバージョンを最新の`2.38.1`にしていたことが原因で、エラーが発生していました。

# 修正
`Hilt`のバージョンをcodelabで指定されている`2.28-alpha`、または`2.28.3-alpha`にすることで解決しました。

“`build.gradle
buildscript {
ext.kotlin_version = ‘1.5.21’
ext.hilt_versi

元記事を表示

FlutterのWorkManagerのcallbackDispatcherをstaticで宣言するとエラーになる

問題のライブラリはこちら
https://pub.dev/packages/workmanager

> The callbackDispatcher needs to be either a static function or a top level function to be accessible as a Flutter entry point.

この公式の指示に従ってstaticでcallbackDispatcherを宣言したらこんなエラーが・・・

“`
E/flutter ( 2580): [ERROR:flutter/shell/common/shell.cc(103)] Dart Unhandled Exception: NoSuchMethodError: No top-level getter ‘callbackDispatcher’ declared.
E/flutter ( 2580): Receiver: top-level
E/flutter ( 2580): Tried calling: callbackDispatcher, stack trac

元記事を表示

[Android]思考停止で使っていたViewBindingを掘り下げる

#ViewBindingとは?
>ビュー バインディングとは、ビューを操作するコードを簡単に記述できる機能です。

簡単に言語化すると「簡単操作」です。
ViewBindingはappモジュール内で設定すると、ファイルの数だけバインディングクラスという「仲介役」が静的に?生成されます。

そうすることで、xmlファイル内の(ID名のあるViewのみ)Viewを簡単にクラスから参照でき、簡単に「操作」出来るわけです。

ちなみに、生成されたバインディングクラスの名前は、xmlファイル名のキャメルケースになります。

#設定
“`gradle:build.gradle(app)
android {
// (省略)

viewBinding {
enabled = true
}
}
“`
モジュール単位で設定すると前述したので、このように。

#使い方
###Activityで用いる場合
“`kotlin
private lateinit var binding : MainActivityBinding

// (省略)
ov

元記事を表示

Flutter勉強記録2日目~カメラを使って景色を見るだけのアプリを作ってみる~

# 前回のあらすじ
Flutterのインストールをして、サンプルコードを動かした。
[「Flutter勉強記録1日目~インストールからサンプルコードを走らせるまで~」](https://qiita.com/ikeguma_Na/items/274223827b49f304b228)

今日使っているプロジェクトは、昨日生成した初期のサンプルコードを使いまわしています。

# この記事ですること

– カメラを使ってファインダー越しの景色を見るアプリを作る
– カメラアプリ**ではない**。(写真撮影機能が無い)
– [pub.dev](https://pub.dev/)なる場所にあった[カメラのプラグイン](https://pub.dev/packages/camera)を使う

# 環境
– Windows10
– VScode
– camera: ^0.8.1+7
– Flutter 2.2.3 • channel stable • https://github.com/flutter/flutter.git
– Framework • revision f4abaa0735

元記事を表示

OTHERカテゴリの最新記事