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

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

Android StudioでRunした際にアプリがLaunchしないときの対策

# 事象
通常、Android Studio(AS)からアプリをRunするとビルドからアプリ起動まで実行されるが、
実行後にLaunch Succeedのポップアップが表示される(端末にインストールはされている)もののアプリの起動まではされなくなった

# 対策
RunメニューのEdit Configrationsを開く
Launch OptionsのLaunchをDefault Activityに変更する

元記事を表示

【Android】個人的新たに見つけたアノテーションのメモ part2

# はじめに
前回に引き続き 新たに見つけたアノテーションの意味を調べまとめたものをメモがわりに記事に残しておきます
前回のものはこちら↓
[【Android】個人的新たに見つけたアノテーションのメモ](https://qiita.com/Tsubasa12/items/ff48006cad875bb2928a)

# アノテーション表

※”@”をつけるとアドレス認識になってしまうので省略

|アノテーション|意味|
|:—|:—|
|Dao|Roomによるデータベースへのアクセスで、interfaceがデータベースにアクセスするクラスである事を定義する|
|insert|Roomが挿入を行ってくれる|
|delete|Roomが削除を行ってくれる|
|updeta|Roomが更新を行ってくれる|
|TypeConverter|RoomのEntityを作る時につける。メソッドは 1 つのパラメーターを受け取り、void 以外の戻り値の型を持つ必要がある。|
|SuppressWarnings|指定されたコンパイラ警告を抑制する|

# おわりに
今回はRoomについての内容

元記事を表示

【Android】ListAdapterの基本テンプレート

# はじめに
RecyclerViewを使用したリスト形式のUIを実装するケース非常に多いですよね。
都度調べて実装しているとコストがかかるので、サッとコピペしてすぐ使えるテンプレートを残しておこうと思います。

# テンプレート内容
実装は以下です。

“`TemplateListAdapter.kotlin
class TemplateListAdapter(
private val viewLifecycleOwner: LifecycleOwner,
private val onClickItem: (Unit) -> Unit
) : ListAdapter(ListCallback) {

private object ListCallback : DiffUtil.ItemCallback() {
override fun areItemsTheSame(
oldItem: Unit,

元記事を表示

AOSPのAndroidX開発環境メモ

AndroidXのリポジトリにあるサンプルとかを動かしたくなるときって時々ありますよね?(ない?)

ちょっと動かなかったところをメモしておいて、あとでまた環境作るときに役立てようかと思いました。
基本的な手順は3ステップです
1. repoをインストール
2. initしてsyncする
3. Android Studioを立ち上げる

基本はこの手順でうまく動きます。

https://android.googlesource.com/platform//frameworks/support/+/refs/heads/androidx-main/docs/onboarding.md

# 1. repoをインストール

repoは複数のgitリポジトリをいい感じにまとめて管理するコマンドです。(という認識)
ここに書いてある手順で動きます。
https://android.googlesource.com/platform//frameworks/support/+/refs/heads/androidx-main/docs/onboarding.md#setup-linux-m

元記事を表示

iOS・Android兼用Appアイコンを作成する (Flutter)

# はじめに
“`Flutter“`でiOS / Android両対応アプリを作成した時に、“`AppIcon“`の作成に一番時間を取られたので作業ノウハウをまとめました。

## どこに時間を取られたのか?
**iOS**
1024 x 1024 px[^1]の画像を用意すれば良いです。

**Android**
“`Android 8“`から導入された“`Adaptive Icon“`[^2]によって、画像中央の直径“`66 dp“`の“`セーフゾーン“`を残して周囲が切り取られる場合があるので、予め構図を考えておかないと意図しないアイコン表示になってしまいます。


:weary:
【UnityRenderStreaming×ARFoundation】スマホ向けのビデオストリーミング & カメラ制御してみた

# はじめに
こちらはIwaken Lab. 主催のXR好き開発合宿ブログリレーの14日目の記事になります。この記事では、開発合宿中に触っていた技術について書かせてもらいます。

https://iwakenlab.jp/

また、XR好き開発合宿では、たくさんの方々から温かいお言葉や支援をしていただきました。この場をお借りして感謝申し上げます。本当にありがとうございました。

# この記事の概要
UnityRenderStreamingの機能を使って、処理の重たい描写をグラボがついてるPCに任せて、その映像をスマホで見れるようにし、ARFoundationを利用することで、PC上で動作するカメラの位置情報と回転情報をスマホで制御できるようにしました。

![システム図 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2700137/fbc46cd6-aac2-a3d9-7b0d-45e16d7c220e.jpeg)

スマホの傾きや位置がUnityのシーン内のカメラに連動しているため、動画のよ

元記事を表示

onClickListenerが連打されないようにする

#初めに
今回は、`Android`において最も使われているであろう`onClickListener`に対する連打対策の実装方法です。
ユーザーが急いでる時やせっかちな人が連打をするのは良くあることです。
自分が仕事から離れている時も意外と無意識にやってたりします。
しかし、連打がされてしまうと大抵の場合クラッシュしたり、意図せず同じ処理が走ってしまうことで変な挙動になったりしてしまいます。
その対策を紹介していきます
### 本文
`View.OnClickListener`をオーバーライドしたものを`Extension`を使って共通化するだけです。
`avoidDoubleClickMillis`には連打を許容する感覚を入れます。
今回の場合1度クリックされてから200ms以降にクリックされたものは連打とみなさず、同じ処理が走るようになります。
“`kotlin:Extensions
fun View.nonDuplicateClickListener(
clickListener: () -> Unit,
) {
setOnClickListener(

元記事を表示

Flutter(MethodChannel/Android)

# MethodChannel
FlutterとAndroid or iOS間のやりとりを可能にするクラスです
Flutter側でメッセージを送信して、Android or iOS側でメッセージを受信して対応した処理の結果を返却する

# Flutter側
Flutter側のメッセージ送信手順を記載します

1. MethodChannelの実装(チャンネル名を指定します。プラットフォーム側で同じチャンネル名を指定する必要があります)
2. invokeMethodの実装
1. 第1引数:プラットフォーム側でメソッドを識別するための文字列を指定
1. 第2引数:プラットフォーム側に送りたいデータを指定。複数送る場合はMap型にすると良いらしいです

# プラットフォーム(Android)側
プラットフォーム側のメッセージ受信手順を記載します。今回はAndroidのみの記載になります

1. MethodChannel.setMethodCallHandlerでメッセージを受信
2. MethodCallのmethod(Flutter側で指定した文字列)で処理の切り分け

元記事を表示

APKファイルの作成方法

#はじめに
androidアプリの開発でマストになるのがAPKファイルの作成です。

・APKでなにができるのか
・具体的にどうすれば作成できるのか

まとめました。

#APKファイルでなにができるのか?

Androidアプリケーションを格納することができる実行ファイルです。
AndroidOSでAPKファイルを実行すると、格納されたAndroidアプリケーションが実行されます。
現在開発中のアプリを端末で実際に動作確認する事ができます。

#具体的にどうすれば作成できるのか
Androidアプリ開発の際にはAndroid studioという統合開発環境を利用するのが一般的ですが、
そちらにAPKを作成する機能があります。

1.ヘッダーメニューから「Build」を選択し、「Generate Signed Bundle/APK…」を選択します。

Android
[スクリーンショット 2022-10-12 11.33.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2915524/abc56

元記事を表示

ONLYOFFICE Documents 5.5 for Android、パスワードや塗りつぶし図形、UIを改善

みなさん、こんにちは!ONLYOFFICE Documents for Androidをバージョン5.5にアップデートしました。今回のリリースでは、パスワード保護、塗りつぶし図形、より直感的なインターフェースなど、モバイルでの文書編集がパワーアップしています。

## モバイルビュー

モバイルビューで、テキスト文書内のコンテンツをより快適に閲覧できます。

どこにあるのか:ドキュメントを開く → 「設定」アイコンをタップ → 「モバイルビュー」スイッチャー

また、ドキュメントのデフォルトの表示モードとして設定することも可能です。

## パスワードによる保護

機密ファイルへの不正アクセスを禁止するためのパスワードを設定します。あらゆる種類の文書で利用可能です。

どこにあるのか:ドキュメントを開く → 「設定」アイコンをタップ → 「保護機能」

## 図形に対する塗りつぶしやカスタマイズ

新しいフィリングタイプ、グラデーション、テクスチャ、パターンを追加しました。

どこにあるのか:「シェイプ」設定 → 「シェイプ」タブ → 「スタイル」 → 「シェイプの塗りつぶし」 → 「

元記事を表示

Android TV用のJetpack Composeがリリースされました

# はじめに

これまでJetpack Composeには、通常のComposeの他にもWear OS用のComposeが存在していて、Android TV用のComposeが存在していなかったのですが、2022/10/05にalpha版がリリースされていたので、そちらのAPIを抜粋します。

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

# フォーカスについて
その前に、Android TVはPhoneなどと違い、タッチパネルも持たず、トラックボールなどを用いてのポインタ操作でのコンポーネントクリックも不可能なデバイスです。
Android TVの主な操作は、リモコンを操作してUIコンポーネントを移動して、決定ボタンで現在指し示す場所をクリックする操作です。
そのため、現在指し示す場所(フォーカス)がどこにあるかをユーザーに教えてあげる必要があります。

これを行うために、`FocusRequester`などでフォーカスを実装し、フォーカスされている箇所は色を変えるなど、周りより強調する対応が必要になります。

元記事を表示

a-2-1(2).通常の画面遷移(Intent)とデータ受け渡し

### a-2-1(2).通常の画面遷移(Intent)とデータ受け渡し

#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)

#### 課題
3. Intentを利用して画面遷移ができるか。
3. Intentを利用して画面遷移後に元の画面に戻ることができるか。
3. Intentを利用して画面遷移時にパラメーターを渡すことができるか。

#### Github

https://github.com/rwakizaka7/AndroidTest

#### テスト実装

“`kotlin:IntentTestActivity.kt
class IntentTestActivity : AppCompatActivity(), View.OnClickListener {
companion object {
const val CHILDREN_STATES = “children_states”
}

private lateinit var

元記事を表示

DroidKaigi2022 セッション資料&関連情報まとめ

[DroidKaigi 2022](https://droidkaigi.jp/2022/) の各セッションの登壇資料と動画を随時まとめていきます。

Twitter や YouTube の情報をもとに更新していきますが、抜け漏れ誤りなどありましたらコメントなどでお伝えください。

# Day1

## 10:30~ Welcome Talk

動画(1:10:35~)

## 11:15~ Getting started with Dagger and Hilt

## 11:15~ Jetpack Compose で Material Design 3

登壇資料

https://speakerdeck.com/yanzm/material3-with-jetpack-compose

## 11:15~ Gradle Managed Virtual Devicesで変化するエミュレータ活用術

登壇資料

https://speakerdeck.com/sumio/droidkaigi-2022-gradle-mana

元記事を表示

モバイルアプリの自動テストツールShiratesを使ってみよう

本記事は自動テストツールShirates(シラテス)の紹介記事です。※はてなブログからの転載です。

# モバイルアプリのテストの自動化

昨今、ソフトウェアテストの自動化がますます重要になっています。モバイルアプリも例外ではありません。自動化を実現するツールには有償・無償のものが多数存在します。無償のもので注目されている製品としてはAppiumがあります。筆者もAppiumを導入して使用しましたが、とてもハードルが高いという感想です。はっきり言って、茨の道です。ちゃんと使ってテストの実務で成果を出せるようになるにはある程度の期間修行が必要です。開発スキルを持ったエンジニアでも苦労するのですから、もっと導入や使用方法が簡単でないとテストエンジニアに広く普及させるのは難しいと考えています。

# Shiratesとは

Shiratesはそのような敷居の高さを少し下げてくれるOSSのツールです。GitHubから入手できます。

https://github.com/ldi-github/shirates-core/blob/main/doc/markdown/index.md

元記事を表示

Cordovaアプリ開発の備忘録(プラグイン編)

前回の投稿では、Cordovaアプリの基本的な開発手順についてまとめました。
今回は、プラグインの開発手順についてまとめようと思います。

Plugin Development Guide

https://cordova.apache.org/docs/en/11.x/guide/hybrid/plugins/index.html

# プラグイン名を決める

まずは、プラグイン名を決めましょう。
今回は適当に「sampleplugin」とでもしておきましょうか。

フォルダ名は、慣例があり、「cordova-plugin-sampleplugin」となります。

“`
> mkdir cordova-plugin-sampleplugin
> cd cordova-plugin-sampleplugin
“`

# plugin.xmlを作成

“`xml:cordova-plugin-sampleplugin/plugin.xml
DroidKaigi 2022のセッションで驚いたところ

基本的にはただのメモです。
特に驚いたところを太字にしておきます。
コードレビューしていたりなどで、あんまり聞けていない部分もあるのでお許しください :bow:

## Jetpack Compose で Material Design 3

https://speakerdeck.com/yanzm/material3-with-jetpack-compose

Design Token = デザインの値に名前をつけたもの。

自分の頭の中のイメージをコードにするとこんな感じです。

“`kotlin
interface DesignToken

class SystemToken(
// ここのContextはDarkThemeかどうかなどという意味のContext
val refs: Map
): DesignToken

class ReferenceToken(val color: Int): DesignToken
“`

**その文字列の例は`md.sys.color.on-secondary`。これを分解する

元記事を表示

Android12 ビルドエラー

Android Studioでのビルドエラー:

android:exported needs to be explicitly specified for . 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に追記しているAcitivityなどに、明確に「android:exported=”true|false”」を設定しないといけません。

・利用中のライブラリにも、「android:exported=”true|fal

元記事を表示

Cordovaアプリ開発の備忘録

スマホアプリのアプリ開発にCordovaを使っています。サーバサイドはNode.js、ブラウザアプリはJavascriptを使っているので、スマホのネイティブアプリの開発もJavascriptで開発できるのは新言語を覚える必要がなく、Javascriptに専念できるので魅力的です。
さらに、iOSやAndroidの両方のネイティブアプリを1つのコードで動作できるのはありがたいです。

Cordova

https://cordova.apache.org/

今回は、Cordovaアプリを開発・デバッグするための方法や、OS独自の機能を実装できるプラグインの開発方法についてまとめておきます。いろんな開発をやっていると、Cordovaの開発方法を結構忘れがちになるので、備忘録として残しています。

# Cordovaのインストール

Node.jsがインストールされている前提です。
以下を実行すれば完了です。

“`
> npm install cordova -g
“`

また、開発する対象のスマホOSごとにコンパイル環境のインストールが必要です。

[Androidの場合]
An

元記事を表示

【Android】個人的新たに見つけたアノテーションのメモ

# はじめに
これまでに
[【Android】個人的によく使うアノテーションについてのメモ](https://qiita.com/Tsubasa12/items/e02458af070748d20cb4)
[【Android】個人的によく使うアノテーションについてのメモ part2](https://qiita.com/Tsubasa12/items/46ef6c82b6fab28b9035)
という記事を書いてきましたが、今回は新たに見つけたアノテーション達の意味を調べたので後に見返せるように記事に残します

# アノテーション表

※”@”をつけるとアドレス認識になってしまうので省略

|アノテーション|意味|
|:—|:—|
|ContributesAndroidInjector|ActivityでInjectができるようにする|
|DrawableRes|受け取る値をdrawableのIDとして定義したものに限定する|
|NeedsPermission|パーミッションが必要な処理を実行する関数に付ける|
|RuntimePermissions|パーミッションを処理するA

元記事を表示

【Android&Espresso】Navigationで引数付きの画面遷移をした時のUIテストについて

# はじめに

皆さん、ごきげんよう!れぶです!

今回の記事では`Navigation`で引数付きの画面遷移を行った場合、遷移先であるフラグメントのViewをテストする方法について整理しました。

**遷移元から送られた値を遷移先で表示する処理について、UIテスト(`Espresso`)を行いたい**方に特に参考になればと思います。それでは、参りましょう!!

# 開発環境

* MacBook Air
* Android Studio Chipmunk | 2021.2.1
* Kotlin 1.6.10
* compileSdkVersion 33
* targetSdkVersion 33
* minSdkVersion 21
* Espresso 3.4.0

# 前提
## 処理内容
⑴ FirstFragmentのボタン(button1)をタップ
⑵ SecondFragmentに遷移
⑶ 数字の10を送る
⑷ SecondFragmentのテキストビュー(textview1)に⑶を表示

※ 今回はあくまで内容を簡単にするために、複雑な処理なしでデータを受け渡します。

元記事を表示

OTHERカテゴリの最新記事