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

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

Android デバイスの Vulkan 実装の要件と現状の統計について

流通している Android デバイスの Vulkan 実装の性能を知るにはいくつかの情報源があり,
また Google が規定する最低の要件や, 大多数の端末でサポートを期待できる機能が存在する.

# Vulkan Hardware Database
[Vulkan Hardware Database by Sascha Willems](https://vulkan.gpuinfo.org/listdevices.php?platform=android)

お馴染みの Sascha Willems 氏の運営するデータベース.
[Vulkan Hardware Capability Viewer アプリ](https://play.google.com/store/apps/details?id=de.saschawillems.vulkancapsviewer)で収集された情報がここにアップロードされる.
他のプラットフォームの Vulkan Hardware Capability Viewer については, [Download セクション](https://vulkan.gp

元記事を表示

旅先でサーバ上のデータベースをメンテナンスする

以前に投稿した記事「旅先でクラウド上のWindowsサーバにRDP接続」は、Androidセルフォンのアプリケーションで、SSHのポートフォワードを介して
WindowsサーバにRDP接続するというものでした。

[旅先でクラウド上のWindowsサーバにRDP接続](https://qiita.com/COOLMAGICPRODU1/items/3f4f42e0be499041cee2)

この記事で紹介した、僕を助けてくれるアプリケーションのうちの1つがこれなんです。

![Screenshot_20220725-211502_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/6742c9f7-3a18-d437-2d78-aa8e0d9c8288.png)

これのポートフォワード設定を追加してあげると、セルフォンのアプリケーションから、サーバのデータベースのデータを参照したり更新したりすることができます。
皆さんもご存知のとおり、あたりまえのことなんですけどね。
![029983

元記事を表示

Gradle: Composite Build で build.gradle.kts の設定を共通化する

Gradle Composite Build を用いて build.gradle.kts の設定を共通化する方法を解説します。

https://docs.gradle.org/current/userguide/composite_builds.html#settings_defined_composite

# buildSrc よりも Composite Build

build.gradle.kts における設定の共通化はこれまでは buildSrc の利用が一般的でしたが、最近は buildSrc よりも Composite Build が推奨されることが多くなっています。

buildSrc は Gradle の構成全体に影響を与えるため、buildSrc の小さな変更がプロジェクト全体のリビルドに繋がる点などが問題であると言われています。

https://developer.squareup.com/blog/herding-elephants/

# Gradle Plugin について

Composite Build で Gradle Plugin を実装するこ

元記事を表示

【Coroutinesガイド】例外ハンドリング

※ソース記事は[こちら](https://kotlinlang.org/docs/exception-handling.html)
このセクションでは、例外ハンドリングと例外時のキャンセルについて取り扱う。キャンセルされたコルーチンは、suspendの時点で、[CancellationException](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-cancellation-exception/index.html)をスローし、それはコルーチンの仕組みにより無視されていることをすでに知っている。ここでは、例外がキャンセルの間にスローされたり、同じコルーチンの複数の子が例外をスローする場合、何が起こるかを見ていく。
# 例外の伝播
コルーチンビルダーは二つの特徴に分けられる。例外を自動で伝播する([launch](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/k

元記事を表示

Androidの画面遷移にNavigationを利用する

# Navigation

Android用の画面遷移ライブラリ
XMLで画面と画面間の接続を定義し、コードから呼び出して利用する
`Activity`で`startActivity`,`startActivityForResult`や`Fragment`で`FragmentManager`を利用する方法だと、
各`Activity`と`Fragment`を確認しないと画面同士の繋がりを把握できないが、
`Navigation`を利用する場合XMLファイルを確認するだけで把握することができる

## 準備

https://developer.android.com/guide/navigation/navigation-getting-started
に従う

`SafeArgs`と併用すると便利

## 使い所

基本的に画面遷移はこれで実装すると良い
`Activity`や`FragmentManager`は扱いがめんどくさいので`Activity`を1つだけ用意し、
`Fragment`の遷移で画面遷移を実装するのが楽
SingleActivit

元記事を表示

DJI Mavic 2 Pro を自作Androidアプリで自律飛行させる(1)~Android Studioの環境構築~

# はじめに
ドローンをAndroidアプリを使って制御する機会があり、アウトプットの目的も含めて投稿させていただきます。
大学の研究室にあるDJIのMavic 2 Proが使えたので、このドローンを自由自在にアプリ上で操作できるようにすることが目的です。
まだまだ勉強中なので、これを通じていろいろなことを身につけていきたいです。

どなたかのお役に立てば幸いです。

# ドローン
使用するドローンはMavic 2 Proです。
[DJI Mavic 2のサイト](https://www.dji.com/jp/mavic-2)

# 環境
– Android Studio Chipmunk | 2021.2.1 Patch 1
– macOS 12.1

※作成したアプリはAndroidのGoogle Pixel 5にインストールし、ドローンのコントローラとして使用します。

# 環境構築
### AndroidStudioのインストール
ここからインストールしました。

インストールの際には[

元記事を表示

Firebaseにログイベントを送る(Android編)

# はじめに
アプリ開発を行う際にどのような機能を最も使われているかなどの解析を行う際にFirebaseのEventがとても便利だったので記事を残します。
基本的に公式のドキュメントを読むと手順が一番わかりやすいと思いますがざっくり読みたい人向けにまとめてみます。

### 何ができるか
イベントを発行した場所(機能、ページ、ダイアログ表示など)が何件ユーザーが訪れたのか
イベントが発行された時間帯の確認
発行したユーザーの情報

他にもあると思いますがよく使う範囲では上記のようなデータを取得、解析することができます。

# 公式ドキュメント
https://firebase.google.com/docs/analytics/events?hl=ja&platform=android

https://firebase.google.com/docs/analytics/debugview?hl=ja

# イベントの発行手順
下記のコードを指定箇所に仕込みイベントを発行できます
“`kotlin
FirebaseAnalytics.getInstance(context).log

元記事を表示

【Qiita Night】 「バイトルアプリ開発の裏側」

# 概要

2022/07/20(水)に行われた[「Qiita Night2022年、Androidアプリはどう作る?」](https://increments.connpass.com/event/251564/)にて、「バイトルアプリ開発の裏側」という登壇をさせていただきました!
これは、登壇内容を記事化したものになります!

Qiitaさんがあげてくださったイベントレポートはこちら!アーカイブも見れます!

https://qiita.com/Qiita/items/0d9bb3d523e36319f1a5

# 登壇内容
今回のQiita Nightのテーマは「2022年Androidアプリはどう作る?」と、いうことで
dipがどのようにバイトルアプリ開発を行っているのか、最近の取り組みを一部紹介させていただきました!
もし参考になりそうな取り組みがあれば、持って帰っていただきみなさんのチームに活かしていただけたら幸いです。

### そもそもバイトルアプリとは?
![Qiita Night資料.png](https://qiita-image-store.s3.ap-nort

元記事を表示

Qiita Night〜2022年、Androidアプリはどう作る?〜のイベントレポート

# 概要
– 2022年7月20日に開催された[Qiita Night〜2022年、Androidアプリはどう作る?〜](https://increments.connpass.com/event/251564/)のイベントレポート

ライブ配信のアーカイブ

# コンテンツ
– LT
– 2022年のAndroidプロジェクトセットアップ / @takahirom
– バイトルアプリ開発の裏側 / @hayashidamoka
– Kotlin Nativeってandr

元記事を表示

FlutterでTextField(TextFormField)を使うと、大量に再描画される

## 概要
TextFieldもしくはTextFormFieldを設置すると、大量(数十回)に再描写(build)される
※厳密には、MaterialPageRouteでpush(遷移)した先に、TextFieldを設置すると、同現象が発生する

この現象により、FutureBuilderやStreamBuilderと組み合わせると
「TextFieldが更新(focusやchange)される→再描画が走る→Future/StreamBuilderが走る」というループで、永遠にTextFieldへの入力が出来なかったりする。

## サンプル
“`dart
// 遷移元
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Page())
);

// 遷移先
class Page extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child

元記事を表示

【Flutter】AndroidでSQLiteのテーブルのデータを確認する

Flutterを使って個人で以下のスマホ向けのおみくじアプリ(大御心アプリ)を開発・運用しています。

Screenshot_home.png
Screenshot_fortune_1.png
Screenshot_fortune_2.pngAndroidミラーリングツール: ScrcpyHub v1.7.0 をリリースしました

# ScrcpyHub v1.7.0 をリリースしました

![](https://images.unsplash.com/photo-1634334339429-660e1b088026?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxNDIyNzR8MHwxfHNlYXJjaHwyNXx8bWlycm9yfGVufDB8fHx8MTY0NzY1MzIyMQ&ixlib=rb-1.2.1&q=80&w=1080)

# はじめに

ScrcpyHubはAndroidの画面をミラーリングするためのGUIアプリケーションです。ScrcpyHubは以下のGitHubリポジトリで絶賛開発中ですのでよければコントリュート&スター登録お願いします。

https://github.com/kaleidot725/ScrcpyHub

ScrcpyHubはscrcpyというコマンドツールを利用して作成しております。scrcpyのコントリビュートがScrcpyHubの発展にも繋がりますのでぜひチェックしてみてください。

https://github

元記事を表示

firebase tracking eventの実装

# 初めに
今回は、`FirebaseTrackingEvent`の汎用的な実装方法を紹介していこうと思います。

### 本文
まずは、どの画面からでも呼び出せるように`FirebaseTrackingEvent`の`interface`を作っていきます。

“`kotlin
interface TrackingService {
fun track(
trackingEvent: TrackingEvent,
)
}
“`
次に、`interface`の本実装をしていきます。

“`kotlin
class TrackingServiceImpl @Inject constructor(
private val firebaseAnalytics: FirebaseAnalytics
) : TrackingService {
override fun track(trackingEvent: TrackingEvent) {
firebaseAnalytics.logEvent(
tra

元記事を表示

旅先でクラウド上のWindowsサーバにRDP接続

この記事には、目新しい技術は書かれていません。既成のアプリケーションの使い方のひとつが紹介されているだけです。

旅先でクラウド上のWindowsサーバにRDP接続したいな、という機会は、僕にはたくさんあります。PCを使える状況であればPCを使えば良いのですが、例えば電車の中などでPCを使えない、あるいはPCは使えるけどそれも面倒という場面も僕にはたくさんあります。
こんなときのために、僕にはセルフォンがあるのです。
## 外部からの接続
外部から目的のWindowsサーバにRDPで接続するには、間にSSHが配置され、このSSHがポートフォワードしてくれる、というのが前提です。当然ながら、SSH接続には鍵が必要というのも前提です。
つまり、何の変哲もない一般的な構成です。
## 僕を助けてくれるAndroidアプリ
こういった場面で僕を助けてくれるAndroidアプリは以下の2つです。どちらか1つというわけではなく、2つがタックで助けてくれます。

– ConnectBot
– Remote Desktop

これらはよく配慮された機能をもち、かつ余分な機能を持たないという、セルフォン

元記事を表示

Firebaseプロジェクトの作成(Flutter)

## 概要
FlutterアプリとFirebaseを接続するための準備をします。
Firebaseの設定~Flutterプロジェクトのビルドが通るようになるまで

### 前提
デフォルトのカウントアプリを改変して作っているので、
諸々名前が違かったらごめんなさい!
メモ程度でしかないので、ご参考までに〜

## Android
![スクリーンショット 2022-06-30 18.13.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462497/ea1c6e5c-6ae0-13ae-c8a5-e70778cf7166.png)

/{PROJECT_NAME}/android/app/src/main/AndroidManifest.xml
にある
“`

“`

PACKAGE_NAMEをコピーし、

元記事を表示

テストでandroid.view.InflateException: Binary XML file line #9となっていた時の対処メモ

# やりたかったこと
Navigatorのテストを書きたくてやってみましたが、動かなかったのでメモ
## 動かなかったコード
“`Kotlin
@RunWith(AndroidJUnit4::class)
class NavigatorTest {
@Test
fun testNavigation(){
val navController = TestNavHostController(ApplicationProvider.getApplicationContext())

val topScenario = launchFragmentInContainer()

topScenario.onFragment{fragment ->
navController.setGraph(R.navigation.nav_graph)
Navigation.setViewNavController(fragment.requireView(),navCo

元記事を表示

Android12で起こったPendingIntentエラーについて(Chuckライブラリ)

# はじめに
Android12からPendingIntentにフラグの設定が必要になったのですが、使用していた[Chuckライブラリ](https://github.com/jgilfelt/chuck)にもその影響がありエラーになってしまいました。
今回はそのエラーの対応方法についてご紹介します。

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

# PendingIntentのエラー対応方法
SDKバージョンを31にしてアプリを実行した際に、PendingIntentを使用している箇所で以下のようなエラーが出る場合があります。
“`
PendingIntentを作成するときにFLAG_IMMUTABLEまたはFLAG_MUTABLEのいずれかを指定する必要があります。
FLAG_IMMUTABLEの使用を強く検討してください。
たとえば、インライン応答やバブルで使用する必要がある場合など、
一部の機能がPendingIntentの変更可能性に依存している場合にのみ、FLAG_MU

元記事を表示

TB(D)RにおけるGPU時間の計測に関する注意; スマホ?でdraw callのGPU時間は計測できない

クリックベイトサムネイル:
![RenderDoc Event Browser](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100016/b975b455-1140-3bd8-4341-b9ece3e5c56c.png “RenderDoc Event Browser; スマホで Duration の値に意味はない”)
> RenderDoc is not a profiler.

ここではこれらGPUアーキテクチャの動作をはじめ, ドライバの開発者の発言やソースコードの引用を含めた様々な根拠や状況証拠などを挙げて論証する.

# TL;DR

##### 結論
モバイル端末のGPUにおいて, render pass 内のGPUタイムスタンプは, 何らかの意味をなす値を持たない:
– draw call(s) ごとのGPU時間の計測を考えることはできない; そのように呼べる実行の単位そのものが, 存在しない.
– 意味をもって計測できるグラフィクスパイプラインのGPU時間の最小の単位は render p

元記事を表示

Jetpack Compose で Todo アプリを作ってみた

Jetpack Compose は革命かもしれません。

![Reflector Recording.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/c6166770-b97c-a7d5-af6f-d6ed56140d33.gif)

View に関わるファイルはこれだけ。

RecyclerView, RecyclerViewAdapter, ViewHolder など不要です。

“`kotlin
@Composable
fun TodoScreen(
viewModel: TodoViewModel = hiltViewModel()
) {

val items by viewModel.items.collectAsStateWithLifecycle(initialValue = emptyList())
val target by viewModel.target

Column(
modifier = Modifier.fillMaxSize(),

元記事を表示

【Android】たまに出てくるFirebaseってなんなの?

# はじめに
Android開発をやっていてたまに目にする **「Firebase」** という言葉が気になったので、調べたものを記事に残します
Firebaseの公式サイトを見て、どういったものなのかをまとめたものです

# Firebaseとは
Firebase公式サイトでは
>Firebase は、優れたアプリを開発し、ユーザーベースを拡大し、収益を高めるためのツールです。インフラ構築に手間取ることなくビジネスを収益化し、ユーザーにとっての利便性に集中できます。

とあります。

アプリで使われる、クラウドから提供するサービスの一つ ということですね
Javaコードを書くだけで簡単にサーバーとのやり取りができるのが魅力的ですね

# Android プロジェクトに Firebase を追加する
Firebaseをアプリに追加するには、Firebaseコンソールから Firebase構成ファイルをダウンロードし、Androidプロジェクトに移動させるなどの、タスクを行います

方法1
1.Firebaseプロジェクトを作成し、androidアプリに接続します
2.Firebas

元記事を表示

OTHERカテゴリの最新記事