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

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

Unity2019.4 + Android11でビルドエラーになったときの対策

## 経緯/現象

**Unity 2019.4 (LTS)** を使用して、とあるサンプルコードを **Android 11 (Pixel 4a(5G))** 上でBuild and Runしようとしたところ、以下のようなエラーダイアログが表示され、Android実機での実行に失敗した(実行できなかった)。

> Unable to start ADB server. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.

使用環境は以下の通り。

* PC
* Windows 10 20H2
* Unity 2019.4.30f1
* Unity HubからUnity 2019.4をインストールする際、**Android Build Support**にチェックを入れてAndroid SDKのモジュールもインストール
* 実機
* Google Pixel 4a

元記事を表示

Jetpack Composeのrecompose後。GlobalSnapshotへの適応のコードリーディング

https://qiita.com/takahirom/items/0e0a3559d95b49399c3b

の続きです。

今度まとめた記事を書く予定なので、この記事は読まなくていいです。

前回までで、recomposeの実装を読んでいくことができました。
これからSlotTableに反映していくところ
つまり3から4の間あたりをみていきます。

1: recordComposerModificationsLocked() を呼ぶ。Recomposer.snapshotInvalidationsを見て、IdentityScopeMapを使って変更点に対しての影響を受けるスコープを取得し、Recomposer.compositionInvalidationsやComposition.invalidationsというフィールドに変更を入れる。
2: compositionInvalidationsをtoRecomposeに入れる。
3: toRecomposeに対して、performRecompose(composition, modifiedValues)、(内部でdoCompos

元記事を表示

抵抗値のカラーコード表は二度と見たくないので、AIがリアルタイムに物体検出をして抵抗値を計算してくれるスマホアプリをリリースしてみた

## これは何

スマホをかざすと、AIがリアルタイムに物体検出を行い抵抗値を判別してくれる抵抗値AI計算機というアプリを作成しました。

logo
Google Play で手に入れよう

元記事を表示

AlertDialogのカスタマイズその3:コンテンツエリアのカスタマイズ

`AlertDialog`について[引数を渡す方法](https://qiita.com/kame_yang/items/67978aa3cde688443cf5)と[戻り値を受け取る方法](https://qiita.com/kame_yang/items/435535850e47defc6b53)についてそれぞれ書きました。
今回はコンテンツエリアをカスタマイズする方法を紹介します。

# コンテンツエリアとは
`AlertDialog`は`タイトル`、`コンテンツエリア`、`アクションボタン`の要素で構成されています。
下図の赤い枠線で囲っている部分がコンテンツエリアですね。
通常はメッセージが表示されます。
01.png
今回はコンテンツエリアをスコープとしていますが、タイトル、アクションボタンも独自にカ

元記事を表示

【Kotlin】 LicenseToolsPluginを利用したOSSライセンス画面の実装

## 初めに
Androidアプリを作成するにあたって、たくさんのライブラリを利用するかと思います。
著作権的な観点から、それらのライブラリを一覧にして表示する必要があります。

LINEやインスタでも以下のように形式は違いますが表示している画面があります。(普段は目にしませんが)

| LINE | Instagram |
| —- | —- |
| | |

このような形式の表示方法は公式([Include open source notices](https://developer

元記事を表示

Kotlinでアプリがバックグラウンドからフォアグラウンドのタイミングで処理を実行するには

### Activityで行う場合
Androidのライフスタイルに従い `onResume`を呼び出して記述するだけです。

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

override fun onResume() {
super.onResume()
Toast.makeText(baseContext, “フォアグラウンドから戻ったよ”, Toast.LENGTH_LONG).show()
}
}
“`

元記事を表示

AndroidStudio2020.3.1で日本語が文字化けする

## はじめに
AndroidStudioを2020.3.1にバージョンアップしたら、コミットメッセージ等に含まれている日本語が文字化けしまくったので直し方メモです。

## 環境
– macOS version:10.15.7
– AndroidStudio ArcticFox(2020.3.1)

## 手順
1. AndroidStudio => Preference を開く
![Preference](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740646/014f9995-2490-2565-64a9-53f8cc439be5.png)

2. Appearance & Behavior => Appearance を開き”Use custom font”のチェックを入れる。
![useCustomFont](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740646/353367e6-01ef-6a45-932f-3b5

元記事を表示

Google Play Consoleで署名したアプリをダウンロードする方法

aab対応したアプリで且つ、Google Play Consoleでの署名管理に変更したため、
リリース前の検証用にGoogle Play Consoleで署名したアプリをダウンロードする方法を記載する。
(play store版からの上書きインストール検証に使用してます)

## 手順
1. aabファイルをアップする
 App Bundle エクスプローラ > 新しいバージョンをアップロード
![スクリーンショット 2021-09-29 0.41.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130708/00c2662e-8cf4-6183-16aa-703ea95cfee2.png)

2. アップロードが完了したら、画面右上のaabファイル名をタップし、ダウンロードしたいバージョンに切り替える。
 ダウンロード > 署名済みのユニバーサルAPK > 右側のダウンロードアイコンタップ
![スクリーンショット 2021-09-29 0.43.38.png](https://qiita-ima

元記事を表示

AndroidでFirebase Authenticationを利用してGoogle認証ログインする

#はじめに
Firebase Authenticationを設定する記事や、Google認証でログインする実装を書いた記事はたくさん見かけるのですが、結局、何を設定して実装すれば出来上がるのか通しで書いてある記事がなかなか見つけられませんでした。
様々な記事を参考にしてGoogle認証でログインするところまで実装することは出来たのですが、途中でエラーで躓いたり、色々な調査をしたりと、ちょっと大変でした。
そこで改めて今回の記事で、プロジェクトの設定から実装、そしてGoogle認証の実行が出来るところまでを通しで書いていきたいと思います。
#Firebase Authenticationとは
パスワード認証やOAuth2に対応したフェデレーションIDを使った認証をアプリケーションに組み込む事ができるサービスの一つです。このサービスを利用する事で、簡単に、そして無料でユーザー認証の機能を実現する事が出来てしまいます。
今回は、特にその中でもユーザー操作が簡単なフェデレーション認証の1つ、Google認証を利用したログインの実装について投稿したいと思います。
Androidアプリに組み込む場

元記事を表示

Google I/O 2021 Material Youについて

# 前身となったMaterial Design
– Googleが推しているデザインのガイドライン
– ユーザエクスペリエンスを向上、統一させるためのもの
– Androidだけではなく、WebやiOSなど様々なプラットフォーム向けにライブラリが用意されている
– どのサービスでもユーザエクスペリエンスを共通にすることで、ユーザが直感的に操作できるようになる
– 同じくGoogleが提供しているクロスプラットフォーム開発に用いられるFlutterもUIパーツはMaterial Designに準じたものになっている

Material DesignはWebサイトにてガイドラインが公開されているため、誰でも学ぶことができるものになっている。
詳しくは[こちら](https://material.io/design/introduction)!

# Material You
GoogleI/Oにて発表されたMaterial Designの流れを汲んだ新しいデザインフレームワーク。
今後全てのGoogle製品で採用されていくらしい。

Android12からMater

元記事を表示

selectableItemBackgroundBorderless が効かない場合の対処法

## 概要

Viewのサイズをはみ出した ripple エフェクトを適用したい時に便利な `selectableItemBackgroundBorderless` は、特に親のViewGroupが `ConstraintLayout` である場合に ripple が出ないといった意図しない挙動をすることがあります。

根本的な解決策を見つけるまでに時間がかかったので、自分用に調査したメモをまとめておきます。

## 結論

`selectableItemBackgroundBorderless`が効かない場合は、`selectableItemBackgroundBorderless`を適用しているViewを `android:background=”@android:color/transparent”`を設定した`FrameLayout` でラップする。

## なぜそうなるのか

[StackOverflowの回答に的確な説明](https://stackoverflow.com/a/37757154)があったので、重要な部分の抄訳をしておきます。

> **Explanat

元記事を表示

何もないところをタップでキーボードを閉じるを実現する

![hide-keyboard-on-tapping-other-area (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56635/e2735ef6-b486-0355-8347-7e3edabe9781.png)

## 概要

チャット風アプリを作っていると 「何もないところタップしたらキーボードに閉じる」 という挙動を入れたくなります。そのための方法を2つ考えてみたので紹介します。

## 方法1

「何もないところ」は具体的にいうとキーボードや `EditText` 部分以外の `RecyclerView` の領域になります。なので、素直に`RecyclerView`のアイテムに対してクリックリスナーをセットしてその中でキーボードを閉じるコードを書いてあげればよさそうです。

“`kotlin
groupieAdapter.setOnItemClickListener { _, _ ->
hideKeyboard()
}
“`

## 方法2

もう1つは **「フォーカス」*

元記事を表示

【Android】Androidプロジェクト作成直後の実行でエラー

#Androidプロジェクト作成直後の実行でエラーが発生し、実行できない
エラー内容は以下の通り

“`terminal:terminal
Manifest merger failed : Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.
“`

##原因
Android12以降ではAndroidManifest.xmlのActivityにandroid:exported属性の指定が必要だった。

“`xml:AndroidManifest.xml(Before)

元記事を表示

特定のViewがセットされてからUIをさらに更新する方法

たまに使うので忘れないようにメモ

# どういうこと?(使用例)
– 3行以上で省略されるTextViewの下部に、全文表示ボタンをつけたい
– 省略されない場合はボタンを非表示にしたい
– そのため、**TextViewが表示されたタイミングで**省略可能判定を行いたい。

# 結論
– ViewにRunnableを引数に持つメソッドが生えているので使える
– View.post(Runnable)
– View.postDelayed(Runnable, long)
– 無論UIスレッドの操作となるので多用は禁物。そもそもこういったものを使う仕様にしたくない。
– (参考) https://developer.android.com/guide/components/processes-and-threads?hl=ja#WorkerThreads

# コード例
(DataBindingを使います)

“`kotlin
// View#post()を使います
binding.textView.post {
binding.textView.layout?.let { l

元記事を表示

【Flutter】簡単なToDoアプリの作成手順

皆さんこんにちは!現役大学生のKamichan_R(@Kamichan_R)です。
今回は、世界中で多く利用されているクロスプラットフォーム開発のフレームワークであるFlutterでアプリ開発をしました。Flutterでアプリ開発をするためにDart,SQLiteを勉強しました。そして、学習のアウトプットとしてToDoアプリを制作しました。
この記事では、今回制作したToDoアプリの説明・開発手順と学習の振り返りを紹介します。

#アプリ制作の説明と経緯
ここでは、ToDoアプリの概要と使用した技術と学習の目的を説明します。
##アプリの概要
今回開発したアプリは基本的なToDoアプリの機能が実装されています。タスクの追加・読取・編集・削除(CRUD)の機能があります。タスク作成時は、タスク名・優先度・期限・メモを入力します。複数のタスクがある場合は期日が早い順に並べるという機能があります。

Android Studio で Android Emulator を直接実行してみよう!!

#初めに
最新のAndroidStudio (Arctic Fox | 2020.3.1) のバージョンアップによりEmulatorをAndroidStudioでそのまま実行できるようになりました。
別ウインドウで表示されなくなるため、ウィンドウがごちゃつかず、完結した画面で行うことができます。

また、自分だけの話ですが、PCの電源を消すときにエミュレーターをつけっぱなしにして何度もエミュレーターをぶっこわしたということを防ぐこともできます!!(^▽^)/!

![emulator-tool-window.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1209385/7984ba64-68b4-0a8c-b95d-690a01202f49.gif)
参考:「Android Emulator 上でアプリを実行する #Android Studio で Android Emulator を直接実行する」 
https://developer.android.com/studio/run/emulator?h

元記事を表示

Andorid 12でカスタム通知を使うときはsetCustomBigContentViewも設定するのを忘れない

Android 12の正式リリースはまだですが、先走ってtargetSdk 31対応をして公式ドキュメントをちゃんと読まずに失敗したので注意喚起
Android 12でtargetSdkを31にするとカスタム通知に関する挙動が変更されます。

https://developer.android.com/about/versions/12/behavior-changes-12?hl=ja#custom-notifications

Android 12でもtargetSdkが31未満の場合、以下のように`setCustomContentView`で設定したRemoteViewsが通知全体に表示されます。妙に角のRが大きい問題がありますが、角部分に重要な情報を配置していなければそれほど問題は無いでしょう。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/6ae2ef96-50c9-1777-d7ca-378e7eb67c72.png)

しかし、targetSdkを31にすると以下のように通知

元記事を表示

メソッドチェーンでかけるModifireのデータ構造はどうなっているか

Modifireはたくさんつなげてかけると思うのですが、どうなっているんでしょうか?

“`kotlin
Modifier
.fillMaxWidth()
.offset(y = targetValue)
.semantics(mergeDescendants = true) {}
“`

**CombinedModifierが作られます。CombinedModifierはouterとinnerのModifireを持ち、CombinedModifierは数珠つなぎにできて、複数個あるときはこのouterの方に同じように連なるだけです。**

“`kotlin
class CombinedModifier(
private val outer: Modifier,
private val inner: Modifier
) : Modifier {

“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

Flutter環境構築のつまずきポイント(初心者向け)

#目次
– [はじめに](#はじめに)
– [環境](#環境)
– [PATHが通らない](#pathが通らない)
– [Android StudioでOpen iOS Simulatorが出来ない](#android-studioでopen-ios-simulatorが出来ない)
– [さいごに](#さいごに)
– [参考](#参考)

#はじめに
Flutterの勉強を始めたいと思い、まずは環境構築をしてみました。基本的には手順通り進みましたが、Flutter初心者の私が引っ掛かったいくつかのポイントをまとめました。Flutter環境構築が上手くいかない方は是非参考にしてみてください。

#環境
– macOS Catalina 10.15.7

#PATHが通らない
flutterをダウンロードして所定の場所に配置して、.zshrcファイルにPATHを追加して保存しましたが、not foundエラーとなってしまいました。

[解決策] source .zshrcを実行してzshrcファイルの変更を反映させると解決しました。つい忘れがちですが、忘れない様にしたいですね。
[【zsh

元記事を表示

OTHERカテゴリの最新記事