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

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

APIの通信準備

# 初めに
今回は、API通信のために必要なRetrofitとOkHttpの実装方法を紹介していこうと思います
ライブラリの準備自体は調べればいくらでも出てくるので簡潔になるように実装部分のみを記載していこうと思います

### 実装方法
“`kotlin
private val httpBuilder: OkHttpClient.Builder
get() = if (BuildConfig.DEBUG) {
OkHttpClient.Builder()
.addInterceptor(
HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}
)
.writeTimeout(writeTimeout.first, wr

元記事を表示

Androidスマホで完結!Minecraftサーバ立上げてAndroidで接続

:::note info
作成中…まだこれ通りやってもできない
:::
# やりたいこと
Androidスマホ,タブレットから自前マイクラサーバに接続したい
# 環境
Xperia XZs (Android 8)
# 構築手順
## スマホにTermuxをインストール
### まずはF-Droidをインストール
GooglePlayからインストール可能だが、更新がされておらず、`apt update`が使えない。
最新版はF-Droidにある。

https://f-droid.org/

:::note info
GooglePlay以外からアプリのインストールする場合は
「不明なアプリのインストールを許可」をしてください。
※自己責任でのインストールになります。。。
:::

### Termuxのインストール
F-Droidで「termux」を検索。
「Termux Terminal emulator with packages」をインストール

:::note info
F-Droidインストール直後、リポジトリ(アプリの一覧的な)の更新がかかるので、
しばらく待ってからで

元記事を表示

Android Jetpack(Room + Compose)でTodoアプリ作ろう【後編】

みなさんこんにちは!この記事ではTodoアプリの続きをRoomを使ってデータベースにデータを保存する部分の実装を行いたいと思います。
前編をご覧になってない方はそちらを先にご覧ください。

https://qiita.com/MasashiHamaguchi/items/6e96703cb8b512c41aac

今回作成したTodoアプリのソースコードはこちらにあります。(GitHub)

https://github.com/masashihamaguchi/TodoApp-Jetpack

### 完成イメージ

device-2022-05-15-165226.gif

# 実装手順

## 1. Roomを導入する

`build.gradle`の`dependencies`に下の2行を追加します。

元記事を表示

Androidで動的に追加削除できるFormを作成する方法【kotlin】

androidで動的なFormを作成しようとした際に、
“追加削除ができてユーザーが入力した情報を取得する”
という一連の流れの実装方法が見当たらなかったので、今回私が実装した方法を紹介します。

android初心者なので、改善できる箇所があったらコメントで教えていただけると嬉しいです。

完成イメージ
![ezgif-4-f90ecbb5c3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/801359/9da40c17-a77f-1deb-8f12-fad184849389.gif)


### その1:layoutの作成
“`xml:fragment_family_form.

元記事を表示

ARCore Geospatial APIのBalloon PopサンプルをAndroidビルドして試す

# 概要
2022年5月12日(JTS)に開催されたGoogle IOでARCoreの新しいAPIが発表されました。
その名も「Geospatial API」!

スマホの緯度、経度、高度、向きをGPSより正確に測位できる機能です。
ストリートビューがある場所なら利用可能とのことです。日本だと大半の公道が当てはまります。

どのようなアプリが作れるかは[公式ページ](https://developers.googleblog.com/2022/05/Make-the-world-your-canv

元記事を表示

Compose Multipreview Annotationsで複数のバリエーションのPreviewを表示させる

Jetpack Compose 1.2 と Android Studio Dolphin 以降の組み合わせで Compose Multipreview Annotations の仕組みを使い、複数の `@Preview` を一つの Annotation で表現することができます。

https://developer.android.com/studio/preview/features#compose_multipreview_annotations

## 実装

これまで、例えば Light Theme と Dark Theme の Compose のプレビューを表示したい場合は、以下のように複数の `@Preview` を使って実装していました。

“`kotlin
@Preview
@Preview(
uiMode = Configuration.UI_MODE_NIGHT_YES
)
@Composable
fun PreviewMilestoneItem() {
MilestoneItem()
}
“`

元記事を表示

[Android] Google Play Console の「難読化解除ファイル」と「デバッグ シンボル」の警告を消す方法

# 概要
Android アプリをリリースするとき「リリースのレビュー」のところで ↓ の警告が出ることがある。

![スクリーンショット 2022-05-18 16.48.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34926/6baf8505-cd70-0dcc-d503-b63cb1aa2582.png)

“`
⚠️ 警告
この APK に関連付けられている難読化解除ファイルはありません。難読化コード(R8 / ProGuard)を使用している場合、難読化解除ファイルをアップロードすると、
クラッシュと ANR をより簡単に分析、デバッグできるようになります。R8 / ProGuard の使用は、アプリサイズの縮小につながります。

⚠️ 警告
この APK にはネイティブ コードが含まれ、デバッグ シンボルがアップロードされていません。
クラッシュや ANR を簡単に分析、デバッグできるよう、シンボル ファイルをアップロードすることをおすすめします。
“`

この警告が出るたびに「

元記事を表示

【Flutter】結局、url_launcherはどう実装すべきなのか。

[_url_launcher_](https://pub.dev/packages/url_launcher) を 6.0.20 -> 6.1.2 にアップしたところ `launch` と `canLaunch` が Deprecated になっていたため書き直したが、挙動が変わったため修正。

#### 元のコード

“`dart
await canLaunch(“アプリのカスタムURLスキーム”)
? await launch(“アプリのカスタムURLスキーム”)
: await launch(“ウェブのURL”);
“`

このコードに問題があったことは認識していて、Androidの場合、特定のアプリにおいては想定している経路では処理されていない。

`twitter` などのURLスキームはアプリをインストールして必要な設定をしても `canLaunch` が _false_ を返してくる場合があり、ウェブブラウザでURLを起動される。
結果的に、ディープリンクとしてサポートしているアプリが起動されていた。

そのため、`canLaunch` を使用せ

元記事を表示

アーキテクチャって何?(UIレイヤー・ドメインレイヤー・データレイヤーなど)

## はじめに

アーキテクチャについて学んだことを個人的にまとめました。「アーキテクチャ?何それ??」状態の方にとって少しでも参考になれば幸いです。
また、間違っている部分があればご指摘いただければと思います。

### この記事で分かること

– アーキテクチャとは?
– UIレイヤー・ドメインレイヤー・データレイヤーの概要
– その他、大切なこと

※細かい話は省いていますので、詳しくは公式ドキュメントなどをご覧ください

## アーキテクチャってそもそも何?

– 「堅牢で高品質なアプリを作るための設計」みたいなイメージ
– アーキテクチャがしっかりしてないと、修正やテストがしにくかったり、思わぬところに変更の影響が出てしまったり…など、余計な労力がかかる

## 推奨されるアプリアーキテクチャ

– 推奨されるアプリアーキテクチャは、下記の矢印のような依存関係を持つUIレイヤー・ドメインレイヤー(※必須ではない)・データレイヤーに関心の分離を行う

![mad-arch-overview.png](https://qiita-image-store.s3.ap-no

元記事を表示

開発者に向けたGoogle I/O 2022の新着情報と主な発表内容

![Codemagic_Android_Balakina.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2028491/16514b72-6e47-0533-18c0-3b0ca4c8a18b.jpeg)

> This article is originally posted to [Codemgic blog](https://blog.codemagic.io/google-io-2022/).

**Googleの年次開発者会議であるGoogleI/ O2022**がぢょうど終わりました。これは、想像のはるかに超えるものでした! [Pixel Watch関連の噂](https://www.cnet.com/google-amp/news/google-pixel-watch-rumors/)のように、真実であることが証明されたものもありますが、それらは特に驚くことではありません。開発者基調講演では、興味深く、予測しにくかった見どころが多数ありました。メインの基調講演の詳細はライフスタイルメディ

元記事を表示

セキュリティ上の理由により、Google Play に公開するにはデバッグを無効にする必要があります

## 現象
Google Play Consoleでaabファイルをアップロードすると上記タイトルのエラーになった

## 対応
Unity上で以下を検索してファイルを開く
__AndroidManifest.xml__

以下がTrueになっているのでfalseに編集する
__android:debuggable=”false”>__
![スクリーンショット 2022-05-16 23.42.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376429/949a53e3-03c9-f01d-d8e1-5ae74677b28d.png)

再ビルドしてアップロードするとできた!

どうやら一度Development Buildにチェックをつけてしまうと、AndroidManifest.xmlのdebuggableがtrueになってしまうらしい

参考
https://unity-yuji.xyz/release-build-debuggable-apk-android-app-bundle-upl

元記事を表示

AndroidからPCへタップ座標値をUDPで送信

■プログラムの概要
 ・Android側:画面アイコンをタップ移動した際の座標をUDP送信。
 ・PC側:winapi(言語:C++)ベースで作成したUDP受信処理。
 ・開発環境:AndroidStudioBumblebee2021.1.1  VisualSutudio2013
 ・送信確認ツール:Wireshark ver3.6.3
 ・用途:電子楽器。※YouTube動画リンク先:https://youtu.be/9AdsV2z7p_E
 ・備考:UDP受信後の処理(音生成/音色制御)は割愛してます。

■Android側のプログラムのソースコード
 (補足)touch_iconはトランペットアイコン、bgは背景画像。いずれもpptで作成。
“`java:activity_main.xml

FreeBSDでAndroid USBデザリング

FreeBSD/i386 12.3RでAndoridをUSBにつないでUSBデザリングモードにするとカーネルモジュールがロードされue0が生えてきます。

dhclientをue0で上げるとプライベートが降ってきました。なぜかクラスCのプライベートアドレスなのに対向のアドレスの一番下が1ではなく129でした。

後はデフォルトルートと/etc/resolv.confを設定すればインターネットに接続できます。

インターネット接続がない状態でのインターネット接続は結構大変です。

とりあえずこれはWin10で書きました。

元記事を表示

Xsens Dot SDK( Android ) Recordingの基本

# はじめに
Xsens Dot を制御するAndroidアプリを制作できる「Xsens Dot Sdk」の、サンプルアプリに実装がない「Recording」の基本的な実装方法をまとめました。

Xsens DOT SDK本体や公式のドキュメントは、下記のURLのフォームに回答することで送られてくるメールからダウンロードすることができます。
https://content.xsens.com/xsens-dot-software-development-kit?hsCtaTracking=2af14a41-b15f-4733-b2ca-5498b2888842%7C21941862-cb62-421e-9e0e-2dac04d1ca9f
サンプルアプリもgithubに公開されています。サンプルにRecording機能はなく、Streamingのみの実装がされています。
https://github.com/xsens/xsens_dot_example_android

本記事は、サンプルアプリ内に実装されていることに関しては解説しておらず、サンプルアプリ内の実装に一通り目を通したこと

元記事を表示

もしAndroidオープンソースがクソコードだったら

## まえおき

– 下品なタイトルで申し訳ありません。
– あえてクソコード化させてクラス設計を考察する。という内容です。
– というのは、直近でCodeCompleteを読んでいてクラスをどう設計するべきかについて学びました。
– 抽象的な表現も多く記憶から消える前に実際のソースコードを通してクラス設計のアンチパターンをまとめてみようと思います。
– しかし設計を1からするのは難しいため、逆の発想でAndroidのオープンソースコードであればJavaで美しく設計されていると信頼して、そのうちのSimpleAdapterクラスを部分的に変更してどんなリスクが生じるのかを考察します。Fragmentクラスなどはメンバが多すぎたため少しマイナーかもしれませんがアダプタを説明の都合上採用します。
– CodeCompleteを読んだ人やクラス設計を学習している人、JavaでAndroid開発をしている人に楽しんでもらえたらうれしいです。

## クラス定義のねらい

– CodeCompleteを読んでいるといろんなことが書いてあるわけですが、そもそものクラス設計の本質は『複雑さの緩和

元記事を表示

Kotlin 1.6.20の変更点

※ソース記事は[こちら](https://kotlinlang.org/docs/whatsnew1620.html)
※Kotlin/JSやKotlin/Nativeについては個人的に使っていないので、割愛します。
Kotlin 1.6.20により、将来の言語機能のプレビューが明らかになり、マルチプラットフォームのプロジェクトのために階層構造がデフォルトになり、他のコンポーネントに進化的な改善がもたらされている。
こちらの[動画](https://youtu.be/8F19ds109-o)でも、変更の短い概要を見ることができる。
# 言語
Kotlin 1.6.20では、2つの言語の特徴を試すことができる。
– Kotlin/JVMのためのコンテキストレシーバーのプロトタイプ
– 明確なnon-nullable型
## Kotlin/JVMのためのコンテキストレシーバーのプロトタイプ
::: note alert
この機能はKotlin/JVMのためにのみ利用可能なプロトタイプである。`-Xcontext-receivers`を有効にすることで、コンパイラは本番コードでは利用できない

元記事を表示

[Android] Roomを使ってローカルDatabaseにデータを保存してみた

## 背景
データ永続化するニーズが出てきたので、ローカルDBにデータを保存して、サーバーと常に同期するようにした

### 技術背景
– Kotlin: 1.6.20
– KSP: 1.6.20-1.0.5
– Android Studio: BumbleBee

## Roomとは
> Room 永続ライブラリは SQLite 全体に抽象化レイヤを提供することで、データベースへのより安定したアクセスを可能にし、SQLite を最大限に活用できるようにします。

[Room  \|  Android デベロッパー  \|  Android Developers](https://developer.android.com/jetpack/androidx/releases/room?hl=ja)

## Setup Room
– kaptは非推奨になったため、kspを使いました。
– [Using kapt \| Kotlin](https://kotlinlang.org/docs/kapt.html)
– [Kotlin Symbol Processing API

元記事を表示

Kotest でのコルーチンのテスト向けのセットアップ

![kc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359439/b75b01ab-e388-a968-242d-3c88796177b3.png)

テストフレームワークとして [Kotest](https://kotest.io/) を使っているのですが、コルーチンまわりのテストについて工夫が必要だったので、やっていることをご紹介します。

(ここでは `kotlinx-coroutines-test` 1.6 以降を対象とすることにします)。

## コルーチンのテストについて

テストフレームワークによらず一般論として、コルーチンのテストは `kotlinx-coroutines-test` を使ってテストを行うというやりかたが説明されています。

`kotlinx-coroutines-test` 1.6 への移行ガイドが一番わかりやすかったので引用します:

https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-

元記事を表示

NCMBのKotlin SDKを使ってTodoアプリを作ろう

NCMBでは公式SDKとしてSwift/Objective-C/Kotlin/Java/Unity/JavaScript SDKを用意しています。また、それ以外にもコミュニティSDKとして、非公式ながらFlutter/React Native/Google Apps Script/C#/Ruby/Python/PHPなど幅広い言語向けにSDKが開発されています。

今回は公式SDKの一つ、Kotlin SDKを使ってTodoアプリを作ってみます。まず画面の仕様とSDKの初期化について解説します。

## 完成版のコード

作成したデモアプリのコードは[NCMBMania/Kotlin_Todo: Kotlin SDKを使ったTodoアプリです](https://github.com/NCMBMania/Kotlin_Todo)にアップロードしてあります。

## ベースアプリのダウンロードまで