- 1. AndroidでRoomを使ってデータベース
- 2. Android Studio内のみで完結させるパッケージ名の変更
- 3. Androidでスプラッシュ・スクリーンを出してみる
- 4. Flutter入門 サイト
- 5. Androidで色々なDialogを出してみる
- 6. AndroidでASP.NET Coreを動かす
- 7. ActionBarをカスタマイズしてみる
- 8. 近年変化しつつあるアプリ開発者とプラットフォーマーの関係
- 9. Jetpack ComposeのPreviewにある便利な機能
- 10. AndroidでHTMLの…のように名前と値を対比してSpinnerを表示する
- 11. Jetpack Compose で ripple を丸にする
- 12. Android Jetpack の Navigationを使ってみた
- 13. リリース済みのAndroidアプリをリファクタリングしてみた
- 14. AndroidのDeepLinkを手軽にdebugする
- 15. StreamFab6とAndroid版が登場!
- 16. Jetpack Compose1.2.0で追加されたmovableContentOfを使ってみた
- 17. 【Android】CoroutineのJobについて【Kotlin】
- 18. 【Android】Unknown FragmentsでXMLプレビューが表示されない場合の対処法
- 19. Androidテンプレートレポジトリ作ったので晒す
- 20. AndroidとiOSでSuicaを読み取る
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には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%
・初日から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の
# Androidのドロップダウンリストって名称しか持てないの?
Androidのドロップダウンリスト(spinner)は普通に書くと名称しかドロップダウンリストに持てません。
ドロップダウンリストから選択すると上の例だと「ひとつめ」、「ふたつめ」、「みっつめ」、「よっつめ」のいずれかがリスナAdapterView.OnItemSelectedListener#onItemSelectedに渡されます。ここでやりたいのは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
StreamFab6とAndroid版が登場!
Jetpack Compose1.2.0で追加されたmovableContentOfを使ってみた今回は、Jetpack Compose1.2.0で追加された`movableContentOf`について解説していきたいと思います。
1.2.0で追加されたのですが、自分は完全に見落としていました。
1.3.0で追加された`LookaheadLayout`と合わせて使うと、
これまでComposeで実現しづらかった、Shared Element Transitionを実現できるみたいです。本記事では、まず`movableContentOf`について見ていきたいと思います。
## movableContentOfとは何か
`movableContentOf`とは何かというと、公式サイトによれば
https://developer.android.com/jetpack/androidx/releases/compose-runtime?hl=ja#1.2.0
> コンポーザブル ラムダを別のラムダに変換します。変換されたラムダは、状態および対応するノードを呼び出された新しい場所に移動します。前の呼び出しがコンポジションから出ると状態は一時的に保持され、ラムダへの新しい呼び出し【Android】CoroutineのJobについて【Kotlin】
# はじめに
今回はCoroutineのJobという機能について調べたものを記事にします
箇条書きにしていてわかりにくいとは思いますが、使いながら理解を深めていこうと思っているのでご容赦ください# まとめ内容
Jobのできることを箇条書きにしてまとめたものです
・親子階層で配置することができ、親が取り消されると 子のロジックも取り消される
・SupervisorJobを使用してカスタマイズできる機能で、CancellationException以外の例外で子が失敗するとその親がキャンセルされる(結果 全ての子がキャンセルされる)
・基本的にはJob を実行しても値を出すことはできない・Jobの状態は New,Active,Completing,Cancelling(キャンセル中),Cancelled (キャンセル済み),Completed の6つの状態が存在する
・Jobはアクティブな状態で作成され開始されます。
・またstartまたはjoinを呼び出すことによってアクティブにすることもできます。
“`
job.start()
job.join()
“`
・コルーチンが動【Android】Unknown FragmentsでXMLプレビューが表示されない場合の対処法
# はじめに
Jetpack Compose登場してからじわじわと浸透が進んでいる現在ですが、まだXMLを使用した開発は現役ですよね。
そんな中XML上でfragmentコンポーネントを使用しているとエラーが発生し、プレビューが表示されない問題があります。
この問題の対処法を備忘録的にまとめておこうと思います。# 対処法
まずエラー内容は以下になります。
![スクリーンショット 2022-11-20 17.03.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/9e214d08-f05d-1dd8-2581-6acf4874254c.png)こちらのエラーは主にfragmentタグを使用している場合などが当てはまりますね。
メッセージにもヒントがあるのですが、原因としてはfragmentは実行時に挿入されるため、対象のコンポーネントをIDEが認識できないことです。そのため、対応方法としては以下のようにtoolsを使用してエラーの対象であるコンポーネントに対してレイアウトを設定
Androidテンプレートレポジトリ作ったので晒す
# はじめに
こんにちは!Androidエンジニア3年目のgotlinです。
今回はAndroidのテンプレートレポジトリを作ってみたので、晒してみます。
[チームで育てるAndroidアプリ設計](https://peaks.cc/books/architecture_with_team)を読んでからずっとAndroidのテンプレートレポジトリを作りたかったのですが、どの機能までをテンプレートにいれるか結構悩んだりしてて、最近まぁこのくらいでいいかっていうのが、見えてきたところです。個人開発レベルのテンプレートリポジトリなので、そぎ落としている部分もあります。
作成したリポジトリは以下です。
https://github.com/goutarouh/BaseAndroidProject/tree/main
移植時の方法もREADMEにあるので良かったら使ってみてください!
# 設定したこと
## Gradle設定周り
### バージョンカタログ
設定は[こちら](https://github.com/goutarouh/BaseAndroidProject/blobAndroidとiOSでSuicaを読み取る
ICOCA やねんけどね
# 概要
– **今回の目的**
Android と iOS で Suica を読み取ります。
– **将来の目的**
Suica は NFC TypeF でマイナンバーカードは TypeB だそうです。役所系の案件を獲得できるかも知れません。## 用語
– **NFC**
Near field communication の略で近距離無線通信と訳されています。主に非接触型カードに搭載され、近年のスマートフォンにも搭載されています。
– **Type**
運転免許証やマイナンバーカードなどに使用されています。
– **Type F (FeliCa)**
Suica PASMO Edy nanaco などに使用されています。
– **IDm**
カード固有の ID です。スマートフォンをピッって当てるだけで読み取れ関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた