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

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

【kotlin】CoroutineContextとは(自分用メモ)

# はじめに
今回は 前回に引き続きCoroutine内のCoroutineContextについて勉強したものを自分用のメモがわりに記事にしていきます

# CoroutineContextとは
CoroutineContext とは、コルーチンの状態を表す値の集まりの事。
“Job”や “CoroutineDispatcher” などの要素を使い動作を行うことができます。

要素を以下にまとめました

# CoroutineContext要素表
|要素|内容|
|:—|:—|
|job|コルーチンのライフサイクルを制御する|
|CoroutineDispatcher|適切なスレッドに処理を送信する|
|CoroutineName|コルーチンの名前、デバッグに役立つ|
|CoroutineExceptionHandler|キャッチされない例外を処理する|

# 参考
[図で理解する Kotlin Coroutine](https://qiita.com/kawmra/items/d024f9ab32ffe0604d39)
[Developers](https://develop

元記事を表示

AndroidでRecyclerViewの縦方向の自動拡大、縮小

# RecyclerViewの上下にViewを挟んだ場合のRecyclerViewの縦方向のサイズ
RecyclerViewが真ん中にあります。その上下にView(例えばTextView)を配置して、そのViewのvisibilityをView.GONEにした場合、RecyclerViewの縦サイズが自動拡大するかどうかをやってみました。

例えば、こんな画面を作ります。

真ん中がRecyclerView。
RecyclerViewの上にTextViewを2個配置。
RecyclerViewの下にTextViewを2個配置。
レイアウトエディタで見ると、こうなっています。
![Screenshot_20221127_204957.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

スマートウォッチをリマインダ代わりにバイブレーションさせる

題名みても、よくわからないような気がしますが、やりたいことは、普段つけているスマートウォッチ「Xiaomi Mi Band 3」に、自分で好きなメッセージを、自分の好きな時に通知して、スマートウォッチをバイブレーションさせます。
で、特にXiaomi Mi Band 3である必要はなく、一般的なスマートウォッチでよいです。
私は、LINEとXiaomi Mi Band 3を連携させているので、LINE通知が来ると、Xiaomi Mi Band 3がバイブレーションするようになっていますが、LINEとは関係なく、自分で好きなメッセージを、自分の好きな時にバイブレーションさせようというのが今回の趣旨です。
対象のスマホはAndroidです。

もろもろのソースコードは以下のGitHubに上げてあります。

poruruba/NotificationManager

https://github.com/poruruba/NotificationManager

# 対象のスマートウォッチ

適用可能なスマートウォッチは、アプリ連携できるアプリを選べるスマートウォッチです。
おそらく、たいて

元記事を表示

INMO AIRの開発者向けオプションを有効にする

INMO AIRは、それ単体で動作するスマートグラスの中でも軽量で普通のメガネの見た目にかなり近く、一般的なメガネ屋さん(筆者はメガネスーパーを利用しました)で処方レンズに変えることができるデバイスです。
通常のAndroidの機能は隠蔽されていますが、開発者向けオプション(Developer options)を有効にすることで、(非公式ですが)通常のAndroid 10デバイスのように開発することが可能です。

![処方レンズを取り付けたINMO AIR](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43450/65a38c51-a1cc-ad24-b7bc-74206a36335f.jpeg)

## 注意事項

本手順は、公式に提供されているものではなく、操作ミスなどにより通常の機能が利用できなくなる可能性があります。何らかの不具合が発生しても対応できませんので、自己責任で操作を行ってください。また、開発元や販売元に問い合わせることもご遠慮ください。

## 手順

1. まず、本体の言語を英語に変更しま

元記事を表示

JetpackComposeでSnackbarの実装方法

JetpackComposeの知識を深めるために、今回はSnackbarを実装を試してみたいと思います。

# リファレンス

https://foso.github.io/Jetpack-Compose-Playground/material/snackbar/

# 実装方法

“`SnackbarView.kt
@Composable
fun SnackbarView() {
Column {
val snackbarVisibleState = remember { mutableStateOf(false) }
Button(modifier = Modifier.padding(16.dp),
onClick = { snackbarVisibleState.value = true }) {
Text(“スナックバー表示”)
}
if (snackbarVisibleState.value) {
Snackbar(

元記事を表示

Androidで設定画面を作ってみる

# Andoroidでシステム設定のような設定画面を作ってみる
Androidのアプリで設定画面を持っているものが有ります。AndroidX Preference Libraryを使って、Andoroid OSのシステム設定のような設定画面をアプリ内に作ってみましょう。

参考URL
本家Android develpers [設定](https://developer.android.com/guide/topics/ui/settings?hl=ja)
# どんな設定画面を作るか?
とりあえず、こんな設定画面を作ってみましょう。

設定値として色々な型が可能ですが、
* 文字列(何でも入力可)
* 文字列(数値のみ)
* リスト形式
* チェックボックス形式
* スィッチ形式(ON/OFF、YES/NO、True/False)

元記事を表示

AndroidでRoomを使ってデータベース

# AndroidでRoomを使ってデータベースを実現
Androidでは色々なデータの管理方法があります。単純なファイル、key-valueストア、等など。ちょっと複雑な処理になると単純なテキストファイル、key-valueストアではすぐ限界になってしまいます。
Androidでは以前からRDBとしてSQLiteが使用可能でしたが、roomは更にそれらを抽象化して使いやすくしています。ORマッパーと同じ概念です。

公式ホームページでは
> Room 永続ライブラリは SQLite 全体に抽象化レイヤを提供することで、データベースへのスムーズなアクセスを可能にし、SQLite を最大限に活用できるようにします。特に、Room には次のようなメリットがあります。
>
> ・SQL クエリのコンパイル時検証。
> ・繰り返しが多く間違いを犯しやすいボイラープレート コードを最小限に抑える便利なアノテーション。
> ・効率的なデータベース移行パス。
>
> こうしたことから、SQLite API を直接使用するのではなく、Room を使用することを強くおすすめします。

と書かれています。

元記事を表示

Android Studio内のみで完結させるパッケージ名の変更

# はじめに
個人開発中のアプリでFirebaseと接続させるときに適当なパッケージ名でプロジェクトを作成してしまっていたので変更させました。
結構面倒だったので記しておきます。

## 直接ファイル内部を弄る場所
– appレベルのbuild.gradleのapplicationId
– Android Manifestのpackage
– settings.gradleのrootProject.name
-> Gradle Sync

## 一括変更場所
![スクリーンショット 2022-11-26 13.33.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501570/54cfe17e-ff75-448f-08a4-678dfeea3204.png)

AndroidStudio左上のTabからAndroidを選択

– com.example.application のapplication部分の変更
java以下のフォルダを右クリックして
Refactor -> Rename -> Do

元記事を表示

Androidでスプラッシュ・スクリーンを出してみる

# スプラッシュ・スクリーンって?
スプラッシュ・スクリーンとはAndroidのアプリを起動して、アプリが完全に起動するまでの間、別な画面を表示するアレです。よくあるのはゲーム等で「Now loading…」とか「起動中です・・・」とか表示するやつです。
Android12かはら標準で、アプリアイコンがスプラッシュ・スクリーンになっていますが、それ以前は自前で組み込まないといけません。ここではAndroid11で自前で組み込む方法を説明します。

参考URL:
本家Android Develppers[スプラッシュ画面](https://developer.android.com/guide/topics/ui/splash-screen?hl=ja) (Android11まで)
[Splash画面を実装する方法](https://qiita.com/karass/items/bcb50607c0b9fc21f183)

まず、やり方には2通りあって
* Activityのテーマを変更する方法
* 別なActivityを用意する方法

があります。ゲームのようなより複雑、動きのある

元記事を表示

Flutter入門 サイト

https://udemy.benesse.co.jp/development/app/flutter-intro.html

https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/01_chapter0_aboutme

https://qiita.com/mkosuke/items/7957e71968aefc6558be

https://qiita.com/ekzemplaro/items/3c57e66460f76a664e87

元記事を表示

Androidで色々なDialogを出してみる

# Androidで色々なDialogって何があるの?
AndroidでDialogをだすとなると、AlertDialogが一般的ですが他にも色々あります。
参考URL
本家Android Developpers:[ダイアログ](https://developer.android.com/guide/topics/ui/dialogs?hl=ja)
# AlertDialog
一般的なこんなやつです。アクションボタンに3つの選択肢があります。
| アクションボタン | 意味 |
|:-:|:-:|
| setPositiveButton | アクションを受け入れて続行する場合に使用します(「OK」アクション)。 |
| setNegativeButton | アクションをキャンセルする場合に使用します。 |
| setNeutralButton | どちらでもない。後で、とか。 |

AndroidでASP.NET Coreを動かす

# はじめに

AndroidにはTermuxというLinuxのターミナルエミュレーターがあります。
今回はこの子にPRoot経由でUbuntuをインストールして、そのうえでASP.NET Coreを動かしてみようと思います。

# Termux と F-Droid

[最新版のTermux](https://f-droid.org/packages/com.termux/)は[F-Droid](https://f-droid.org/)で配信されています。
PlayストアでもTermuxは配布されていますが、2020年ごろに更新が停止され現在は一部機能が動作していません。
F-Droidは非公式ストアになるため、不明なアプリのインストールに許可する必要があるので注意してください。

インストールが完了すると次のようなターミナルが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36535/736a9edf-002f-5a8a-1b16-a7d875bb34ff.png)

元記事を表示

ActionBarをカスタマイズしてみる

# ActionBarって表示されるだけど、正直利用価値ない
AndroidのActivityのクラスでAppCompatActivityを継承すると自動的に実行時のアプリの上部にActionBarが表示されますが、アプリケーション名が表示されているだけで、何の飾りもありません。消すこともできるんですが、このActionBarをカスタマイズして、もっと色々なことにつかえるようにしてみましょう。

参考:
公式ホームページ:[アプリバーの追加](https://developer.android.com/training/appbar?hl=ja)
# どんなカスタマイズをするか?
* ActionBarの色がデフォルトで紫色なので色を変えてみます。
* ActionBarに表示されているタイトルを自由な文字列に変えてみます。
*

元記事を表示

近年変化しつつあるアプリ開発者とプラットフォーマーの関係

# はじめに
ここ数年アプリ業界では大きな変化が色々とありました。
今まで絶対的なルールを課していたAppleとGoogleというプラットフォーマーが、近年は少しずつ規制を緩めたり撤廃したりと相次いでいます:open_mouth:

その流れを今回は大まかにまとめてみました!

# まずアプリ課金の手数料っていくら?
課金の種類と仕組み、手数料などはAppleとGoogleでほぼ同じです。

課金の種類は大きく分けると2種類あり、微妙に手数料に違いがあります。

## 購入型
ゲームなどでよくあるタイプの課金。

手数料は以下の通り
・「年間収益が100万ドル以内の小規模事業者」は15%(おもに企業規模で)
・それ以外は30%

## サブスクリプション
その名の通り定期購入のタイプ。コンテンツを閲覧するだけの「リーダーアプリ」でよくあるやつ。

手数料は以下の通り
### Apple
・最初の1年間は30%
・サブスクリプション登録者の有料サービスの日数が1年分累積されると、それ以降は15%

### Google
・初日から15%

# 安くなったり規制が緩和されたのは20

元記事を表示

Jetpack ComposeのPreviewにある便利な機能

# 初めに
今回は、Jetpack Composeで絶対に使う@Previewにある便利な機能について紹介していきます
### 本文
早速紹介していきます。
`name`にはプレビュー表示している左上にどのパーツなのかが分かりやすいように表示することができる名前です。
`device`は`Devices`の中にある端末から表示させたい端末を選択することができます。
`showSystemUi`はプレビュー内にステータスバーとアクションバーを表示することができます。
`showBackground`は本来プレビューは透明の背景が適応されてますが、背景を表示することができるようになります。
背景色を変えたい場合は`backgroundColor`に対してARGBの値を代入することで変更することができます。
“`kotlin
@Preview(
name = “画面名”,
device = Devices.PIXEL,
showSystemUi = true,
showBackground = true,
)
“`
### 最後に
他にも便利なのはたくさん

元記事を表示

AndroidでHTMLの

Jetpack Compose で ripple を丸にする

そもそも ripple 効果は丸なのですが、この記事では ripple 効果が Composable の全体ではなくて円形で見えることを目指します。

# 領域を無視する方法

Jetpack Compose の ripple は `indication` に `rememberRipple` を指定することでカスタマイズできます。(指定する場合 `InteractionSource` も同時に指定する必要があります)

領域外までに ripple 効果を見せるには `rememberRipple` の `bound` を false にすることでできます。

“`kotlin
Box(
modifier = Modifier
.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(bounded = false),
enabled = true

元記事を表示

Android Jetpack の Navigationを使ってみた

Androidで画面をたくさんある場合、その画面の数分layout.xmlとFragmentを作成することになるが、どのFragmentからどのFramgmentへ、何の条件のときに遷移するかを制御するのがコードでベタベタになってしまいます。

Android Jetpack の Navigationを使うとその辺がスッキリします。
# 参考URL
[本家Android developers](https://developer.android.com/guide/navigation?hl=ja)
[[Android] 10分で作る、Navigationによる画面遷移](https://qiita.com/tktktks10/items/7df56b4795d907a4cd31)
[Navigation Componentの使い方(概要〜画面遷移〜データの受け渡し編)](https://qiita.com/naoi/items/8384561d30111c8704b3)

簡単に手順だけ説明しますので詳細はgitHubに上がっているソースを見てください。
[gitHub](https

元記事を表示

リリース済みのAndroidアプリをリファクタリングしてみた

これまで、個人開発で製作してきたAndroidアプリ「[書籍管理ができる巻数メモ](https://play.google.com/store/apps/details?id=com.highcom.comicmemo)」は継続的に機能追加するアップデートは行ってきたものの、リファクタリングによって刷新するような事はしてきませんでした。
仕事でもAndroidアプリを開発するようになり、知識も少しずつ増えてきたので、思い切ってリファクタリングをしてみることにしました。

# なぜリファクタリング?
個人開発をしていると、ゼロから作ったり、どんどん機能を追加したりすることはよくありますが、既存機能をリファクタリングするというのは、やろう!って思わないとなかなかやらないと思います。
リファクタリングの難しいところは、

– 変更後も既存と同等の機能を実現する
– 変更前のデータも引き継ぐ
etc…

既にサービスを提供しているものをそのまま継続して利用できるようにしなければなりません。なので、リファクタリングをするということも新しい技術的な知識が習得できると思ったのが背景にあります。

元記事を表示

AndroidのDeepLinkを手軽にdebugする

**「DeepLink」**
モバイル開発においてよく使う機能であり、ユーザとしても便利なものであり、そしてdebugがやりづらい。という開発においては苦しいもの。というイメージが個人的にはありました。(本番環境や開発環境でURL違うなど準備もそこそこある)
それを解決する方法を本記事では紹介します。

# DeepLinkについてざっくりと

– iOSのユニバーサルリンクと似ている
– httpも使用可能
– カスタムURLスキームと似ているが微妙に異なる
– タップすると設定されたアプリが起動される
– 特定の画面を表示させることも可能

# 解決したいこと
– DeepLinkのためにサーバやドメインなどを準備したくない
– 手早く動作確認したい

# Android Studioでの設定
## AndroidManifestにfilterを設定

“`xml


元記事を表示

OTHERカテゴリの最新記事