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

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

フレッツ光をAndroid USBデザリングにしてみた

フレッツ光を解約してしまったので、ネット接続がなくなり不便なのでAndroidのデザリングを使ってネットアクセスできるようにしてみた。

![moto.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/0fada099-374f-e332-96a9-3f608cdc7362.png)

元の構成を変えるのは面倒なので、インターネットの口をFreeBSDのブリッジで用意することにした。

![br2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/e80cc90e-6a37-0b08-b0df-173a026b3e24.png)

AtermはWifiを使っているのでノーマルで、PPOEの設定になっていたものをローカルルーターに変更します。

FreeBSDはi386の12.3RでマシンはPen IIIのValueStarです。PCIにfxpとUSB 2.0のボードが入っているのでcardbusでrl

元記事を表示

MotionLayoutの例を試してみる(キーフレームの循環)

前回はキーフレームの補間をやりました。

[キーフレームの補間](https://qiita.com/yuta317/items/f27a553603a3e179e5fa)

# 公式リファレンス
https://developer.android.com/training/constraint-layout/motionlayout/examples?hl=ja

https://developer.android.com/training/constraint-layout/motionlayout/ref?hl=ja

リンク先に公式サンプルがあります。
[キーフレームの循環](https://developer.android.com/training/constraint-layout/motionlayout/examples?hl=ja#keyframe_cycle)

“`

元記事を表示

【Kotlin】RoomでDateを扱う方法(ついでにSimpleDateFormatを使って表示)

RoomでDate型を扱うときにコツがいるのを知ったのでそれをまとめていきます(ちなみに、めっちゃ簡単でした)

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

– RoomでDate型を使用する方法
– 日本時間に合わせ、「2022/05/22(日)」のようなスタイルでDateを表示する方法

## 実際にやってみる

このようなメモアプリの一覧画面で実際に説明していこうと思います。
※コードは必要な部分だけを取り上げていきます。

![Screenshot_20220522_030017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/eed50398-ab7c-4834-c0d9-754184d3ab77.png)

### Before

以下のように作成日時を `Date` 型で持つようなMemoエンティティを作成したところ、動きませんでした…。どうやらRoomでは `Date` をそのまま扱えないようです。

“` kotlin:Memo.kt
@Entity(tableName = “me

元記事を表示

コルーチンの基礎

※ソース記事は[こちら](https://kotlinlang.org/docs/coroutines-basics.html)
この章では、基礎的なコルーチンの概要を範囲としている。
# 初めてのコルーチン
コルーチンは、中断可能な計算結果のインスタンスである。それはコードのブロックを、コードの残りと並列に動作させるという意味で、概念的にはスレッドに近い。しかし、コルーチンは特定のスレッドに結びついていない。あるスレッドで、実行を一時中断し、他のスレッドで再開することが可能である。
コルーチンは軽量なスレッドとして考えることができるが、現実の使い方において、スレッドとはかなり異なる、多くの重要な点が存在する。
初めての動作するコルーチンとして次のコードを実行してみる。
“`Kotlin
import kotlinx.coroutines.*

fun main() = runBlocking { // thisはCoroutineScope
launch { // 新しいコルーチンを起動して続行する
delay(1000L) // 1秒間ノンブロッキングな遅

元記事を表示

【Google/IO 2022】忙しい人のための「What’s new in app performance」

## はじめに
Google I/Oの [What’s new in app performance](https://www.youtube.com/watch?v=DYdHLqLVspY&t=12s)の要点をまとめます。

Androidフレームワークの改善のパートは割愛しておりますのでご了承ください。

## 01 ツール
![](https://i.imgur.com/rh2VSxn.png)

### Android Studio Profiler / Perfetto
– Android StduioのProfilerでトレースできる
– それを保存しチームに共有することもできる
– またPerfettoを使用することで、Android Studioがなくても詳細に分析できる。
– 相互運用可能。Profilerでトレースした内容は、Perfettoでも開ける

### Android Vitals
– Google PlayConsoleの一部
– 実際にデバイスを使用してくれている人のさまざまなパフォーマンスを情報を確認できるのがメリット

## 02 アプリの起

元記事を表示

Flutter環境構築メモ

## 前提
* Flutterの開発環境を構築した際のメモです。(2022/05/21時点)
* 使用しているPCのOSは Windows 10 Home
* PCのプロセッサは AMD Ryzen 7

## Flutter のインストール

* [Flutter](https://docs.flutter.dev/get-started/install) の公式サイトから Windows を選択し、「flutter_windows_3.0.1-stable.zip」を選択してダウンロード
* 「flutter_windows_3.0.1-stable.zip」を解凍し、任意の場所に置いておく(今回は C:\Users\UserName\Flutter\flutter_windows_3.0.1-stable に配置)
* 「環境変数の編集」から、変数:Path、値:C:\Users\UserName\Flutter\flutter_windows_3.0.1-stable\flutter\bin を設定する
* コマンドプロンプトから、Flutterのパスが正しく設定されていること

元記事を表示

MaterialButtonのthemeとか調べたことまとめ

MaterialButtonについ調べたことメモ。

環境 : `com.google.android.material:material:1.4.0`

# デフォルトで当たるstyle

## 結論

多くのThemeの場合、`@style/Widget.MaterialComponents.Button`

## 詳しく

### まず`MaterialButton`のコンストラクタを見てみる。
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245217/82930bd0-3cc8-8f03-39f5-7fb98a63dc8d.png)|
|–|

https://github.com/material-components/material-components-android/blob/1.4.0/lib/java/com/google/android/material/button/MaterialButton.java#L220

**→`R.attr.material

元記事を表示

Jetpack Compose をざっくりシバいてみた

## †混沌とした令和のAndroid界隈を照らす一筋の光†

レイアウトをKotlinで書くのって何それおいしいの?(旨味がなさそうの意)

「なんでこんなん使うんや」という疑問から軽く情報をさらってみた(具体的な実装にはほとんど触れません)

当方、知識不足という致命的なバグを抱えているので、解釈が間違っていたら優しく教えてくださいませ

### 命令的UIから宣言的UIへ
これが1番大きな違いである!(わかってない)

そもそも命令的だとか宣言的だとか、おおよそ日本で暮らしていて出会ったことのない単語なんだよな

あぁ~Reactとかのアレね、アレ!(わかってない)という粒度から始めていく

#### 命令的UI
* __何をするか__ という __命令的__ な処理でもって表示されたUI
* 表示させるUI自体ではなく、UIを表示する __過程を記述__ する
~~~ kotlin
val binding = HogeFragmentBinding.bind(view)
if(binding.hogeText.text == “Hello World!”)
bindi

元記事を表示

Flutterで作った簡単なメモアプリのソース公開

## 初めに
個人開発で2つのFlutterアプリを作りました。
![teslog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37929/806820bd-6e8c-0b05-25d0-0a7ce62f461d.png)
[テスト勉強用採点記録アプリ「てすろぐ」](https://play.google.com/store/apps/details?id=com.murapon.self_scoring_app)
![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37929/6c201dc3-ea55-0d30-76ed-0b9c785976fa.png)
[ハッシュタグキーパー](https://play.google.com/store/apps/details?id=com.murapon.hashtag_keeper_app)

それらのアプリのソースを元にして、fluterとfireba

元記事を表示

アプリリンクとディープリンクの違い

#
なんとなくアプリリンクはディープリンクの上位互換ぐらいにしか思ってなかったのですが、どう使い分けるの?と質問された時に答えられなかったので整理してみました。
実装方法についても備忘録的に書いてます。

# アプリリンクとディープリンクの違い
機能や実装方法はほぼ一緒ですが、アプリリンクを設定すると操作する端末のOSバージョンによって挙動が少し変化します。

ブラウザからhrefタグで対象のURLにアクセスした場合のデフォルト時の挙動の違いは以下のようになります。
| APIレベル | ディープリンク |アプリリンク |
| — | — | — |
| 23(6.0)未満 | リンクを開く先の選択肢が表示される |アプリリンク使用不可(ディープリンクと同じ挙動)|
| 23(6.0)以上 | リンクを開く先の選択肢が表示される |アプリへ遷移する
| 31(12.0)以上 |ブラウザへ遷移する |アプリへ遷移する

これらはあくまでもアプリをインストールした直後のデフォルトの挙動なので
アプリへの遷移を優先するかどうかはユーザーが任意に設定変更することが可能です。

元記事を表示

【Android Studio】RenderScriptが非推奨になったのでその対応策

# はじめに
[公式から対応策が出ている](https://developer.android.com/guide/topics/renderscript/migrate?hl=ja)が、ライブラリの追加方法に少し手間取ったので、そこを含めて説明。
公式では、
1: スクリプトを Vulkan に移行する
2: 置換ツールキットを使用して組み込み関数から移行する
方法の2つが書かれているが、ここでは2番目の方法について説明。

# 方法
1 [GitHubからプロジェクトをダウンロード。](https://github.com/android/renderscript-intrinsics-replacement-toolkit)

2 ビルドすると、以下の場所にaarファイルが作成される。
“`
renderscript-intrinsics-replacement-toolkit\renderscript-toolkit\build\outputs\aar\renderscript-toolkit-debug.aar
“`

3 組み込みたいプロジェクトの直下(appと同列部分

元記事を表示

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で接続

# やりたいこと
– Androidスマホ、タブレットから自前マイクラサーバに接続する。
– できればお金をかけたくない…
→古いスマホを活用!Webサーバーできるならやれるはず!

https://pc.watch.impress.co.jp/docs/column/nishikawa/1409411.html

# 環境
– 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

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事