- 0.1. 【Android開発】Kotlin入門 Androidのディベロッパーガイドの分かりにくいところを書き直す#4
- 0.2. Kotlin-InjectによるDI(依存性注入)をやってみる
- 0.3. Android12以降でスプラッシュ画面のアイコンが表示されない場合がある
- 0.4. 【過去記事】How To Play Google Play Music On Alexa
- 0.5. 【Kotlin】Push通知のパラメータの効果的な活用方法【サンプルコード付き】
- 0.6. Roomが「DatabaseのVersionが違う」とクラッシュしてしまう原因パターン
- 0.7. [ReactNative] WebViewとアプリでデータをやりとりする
- 0.8. [ReactNative] アプリがフォアグラウンド・バックグラウンドにいった場合をハンドリングするメモ
- 0.9. 秘匿情報を gradle.properties で管理する
- 0.10. FlutterでAndroidビルド時の「 Execution failed for task ‘:app:compileDebugKotlin’.(Kotlinでの)Compilation error. See log for more details(コンパイルエラー)」について
- 0.11. 安全かつ簡単に: Excel から Android デバイスに電話番号を転送する
- 1. 1. Googleフォーマットを使用してCSVファイルを取得する
- 1.1. Navigation railってなんだっけ?
- 1.2. [Android] Camera And Storage
- 1.3. java.lang.NullPointerException: uriStringというエラーの対応
- 1.4. ViewGroup全体をお手軽に角丸にする
- 1.5. 個人開発のAndroidアプリにアニメーションを導入してみた【種族値クイズ】
- 1.6. 【Android】Gradle8から有効になったR8を無効にする方法
- 1.7. 背景にぼかし(Blur)をかける
- 1.8. BottomSheetBehaviorを使った画面のEdgeToEdge対応
- 1.9. Andriod Studio ワイヤレスデバッグ覚え書き
【Android開発】Kotlin入門 Androidのディベロッパーガイドの分かりにくいところを書き直す#4
[フラグメント](https://developer.android.com/guide/fragments?hl=ja#samples)と
[インテントとインテント フィルタ ](https://developer.android.com/guide/components/intents-filters?hl=ja)
### 知らないこと
フラグメント
モジュール性
インテントとインテントフィルタ
インテントのユースケース
インテントのタイプ
Intent に含まれる主な情報#### Fragment
+ アプリのUIの再利用可能な部分#### モジュール性
+ UIを独立した部品(モジュール)に分割し、それらを組み合わせて全体のUIを構成する
+ 再利用性、保守性、柔軟性がある#### インテントのユースケース
+ アクティビティの開始
+ サービスの開始
+ ブロードキャストの配信#### インテントのタイプ
+ 明示的インテント
+ 暗黙的インテント#### Intent に含まれる主な情報
+ コンポーネント名
+ 起動するコンポーネントの名前
Kotlin-InjectによるDI(依存性注入)をやってみる
依存性注入(以降DI)ライブラリはDagger HiltあるいはKoinがよく用いられるが、今回はkotlin-injectを用いてComposeアプリにDIしていく。
## evant氏のkotlin-injectについて軽く
https://github.com/evant/kotlin-inject
KSPによるコード自動生成技術を用いたDIライブラリ。
Kotlin Multiplatform(以下KMP)に対応している。
詳しい使い方はGitHubのREADMEにて確認できる。### Androidでの運用について
https://github.com/evant/kotlin-inject/blob/main/docs/android.md
### KMPでの運用について
https://github.com/evant/kotlin-inject/blob/main/docs/multiplatform.md
### 公式サンプル
https://github.com/evant/kotlin-inject-samples
### 同ライブラリを用い
Android12以降でスプラッシュ画面のアイコンが表示されない場合がある
:::note info
SplashScreen API ([androidx.core.splashscreen](https://developer.android.com/reference/kotlin/androidx/core/splashscreen/SplashScreen)) を利用したスプラッシュ画面の実装を前提とします
:::Android 12 以降において `startActivity() + Intent.FLAG_ACTIVITY_NEW_TASK`で Activity を新たに起動する場合、スプラッシュ画面のアイコンが表示されません。
| before | after |
|:—:|:—-:|
|![splash_demo_before.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440643/aeb5d83e-1ccf-f16a-a6c8-32ded83151b8.gif)|![splash_demo_after.gif](https://qi
【過去記事】How To Play Google Play Music On Alexa
## はじめに
– この記事は、Qiitaアカウントの整理のため、別のアカウントで投稿した過去の記事を移行してきたものです。全く同様の記事があるかもしれませんが、盗作等ではありませんのであしからずご容赦ください。
– 過去記事 投稿日:2019年03月26日# How To Play Google Play Music On Alexa
我が家にもやってきたAlexa、有効活用したいけどなかなか使い道が・・・
Amazon Music契約すれば音楽再生に使えそうだけど、いろいろあってGoogle Play Musicから離れられない・・・
AlexaからGoogle Play Musicを流せないものか・・・で調べてたらYouTubeにこんなぴったりのタイトルの動画がありました。
[How To Play Google Play Music On Alexa](https://www.youtube.com/watch?v=nFzhZbmhFCQ)英語なので手順書き起こしてみます。
# やってること
Amazon Echoと自分のAndroid端末がBluetoothでつ
【Kotlin】Push通知のパラメータの効果的な活用方法【サンプルコード付き】
## はじめに
Push通知は表示されるテキストや画像だけではなく、それ以外に任意のパラメータを付与することができることはご存知でしょうか?
このパラメータを利用することで、サーバから任意のタイミングでアプリ側に処理をさせたり、Push通知からの起動の際に特別な処理を行うことが可能です。
今回はこのパラメータの効果的な活用方法をコードと一緒にご紹介できればと思います。Push通知の実装方法自体はこちらの記事をご参考ください。
https://qiita.com/bsj-y-tomaru/items/77f51c06e9b03ca84452
## カスタムパラメータの受け取り方
“`MyFirebaseMessagingService.kt
class MyFirebaseMessagingService : FirebaseMessagingService() {override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remote
Roomが「DatabaseのVersionが違う」とクラッシュしてしまう原因パターン
# Roomが「DatabaseのVersionが違う」とクラッシュしてしまう原因パターン
[パターン1:新規開発もしくは、初めてDBに変更を加える](#パターン1新規開発もしくは初めてdbに変更を加える)
[パターン2:DB修正後とかに、再度DBに修正を加える](#パターン2db修正後とかに再度dbに修正を加える)# パターン1:新規開発もしくは、初めてDBに変更を加える
**例**
①開発環境(Android Studio)で、初めてDBに修正を入れてDBバージョンを1→2に上げた
②実機(Android端末)から、アプリ(←DBバージョン1)を**アンインストールせず**に、アプリを再インストール(←DBバージョン2)
③マイグレーションが実行される
(DBバージョンが上がっているアプリを再インストールされたため、マイグレーションが実行される)
**★ここで例外が出て(クラッシュして)しまうとダメ!!
ここでクラッシュするのはヤバいので、要調査&要対応!!**# パターン2:DB修正後とかに、再度DBに修正を加える
**例**
①開発環境(Android Studio
[ReactNative] WebViewとアプリでデータをやりとりする
## 前提
– [react-native-webview](https://github.com/react-native-webview/react-native-webview/blob/master/docs/Reference.md)ライブラリを使用
– `react-native`: `0.72.10`## WebViewで表示している画面の操作をアプリでハンドリングしたい
ネイティブアプリケーションを開発していると、どうしてもWebViewを使用せざるを得ないことって多くないでしょうか?例えば、ECのアプリで決済周りの部分がAPI開発すると色々面倒なので、WebViewでそのまま表示させるとか、スクラッチで作ると工数がかかるから一部分はWebViewにする…などなど。
そんな時に、「WebView内でのイベントをキャッチしてアプリ側でハンドリングしたい」なんてことがしばしばあるかと思います。(モーダル出すとか、アプリの画面に遷移させるとか)
今回はそんな時に、どのようにしてやりとりを行うか説明していきます。## 流れ
1. [react-native-webv
[ReactNative] アプリがフォアグラウンド・バックグラウンドにいった場合をハンドリングするメモ
### ユースケース
[react-native-webview](https://github.com/react-native-webview/react-native-webview/blob/master/docs/Reference.md)を使用していて、アプリをバックグラウンドで起動した状態で放置していると、画面が真っ白になる現象が発生した。
コンポーネントなのか、webviewで表示しているオリジンの問題なのかわからなかったが、とりあえず解決するために、アプリがフォアグラウンドにきたことを検知してリロードを挟むことで対処した。
この方法他にも使えそうなので、メモとして残しておく。公式↓
https://reactnative.dev/docs/appstate
### 実装
“`Sample.tsx
import { AppState } from ‘react-native’;export const Sample = () => {
const appState = useRef(AppState.currentState);
useEff
秘匿情報を gradle.properties で管理する
## 目的
外部 Webサービスの APIキーなどをソースコード中に入れておくと、うっかり githubへ pushしたときなどに悲惨なことになる。 大事な情報は gitignoreしたファイルで管理し、ビルド時にそれを参照するようにすると安全。## 方法
### app/gradle.propertiesを作成
API KEYなど重要な情報を管理するファイル。 このファイルは .gitignoreに追加して gitの管理外にしておく。
“`gradle.properties
API_KEY=”xxxxxxxxxx”
“`### app/build.gradle.kts
“`build.gradle.kts
android {
defaultConfig {
buildConfigField(“String”, “SECRET_API_KEY”, project.properties[“API_KEY”] as String) // 追加
}buildFeatures {
buildConfig = tr
FlutterでAndroidビルド時の「 Execution failed for task ‘:app:compileDebugKotlin’.(Kotlinでの)Compilation error. See log for more details(コンパイルエラー)」について
こんにちわ、だいちです。
約1週間悩まされたAndroidのビルドエラーがやっと解決しました!!
関連記事も少なく、
Flutterが詳しい方に聞いたりChat-GPTに聞いたり
参考文献を読み漁りと時間がかかったのでこちらに載せておきます。## 目次
[-開発環境](#開発環境)
[-1.経緯](#1経緯)
[-2.原因](#2原因)
[-3.Androidビルドエラー①_android/build.gradleのバージョン変更](#3androidビルドエラー_androidbuildgradleのバージョン変更)
[-4.Androidビルドエラー②_android/settings.gradleでバージョン指定](#4androidビルドエラー_androidsettingsgradleでバージョン指定)
[-5.Androidビルドエラー③_android/app/build.gradleで削除・追加処理](#5androidビルドエラー_androidappbuildgradleで削除追加処理)
[-6.Androidビルドエラー④_androidディレクトリでキャ
安全かつ簡単に: Excel から Android デバイスに電話番号を転送する
要約: Excel の連絡先を VCF ファイルに変換するための最良のオンライン オプションを探していましたが、まだ見つけられていませんか? 時間を無駄にしたくない場合は、このブログ投稿全体を読んで、Excel の連絡先を VCF ファイルに変換するための最良の方法を見つけてください。Excel の連絡先を VCF ファイル形式に簡単に変換するには、説明されている方法をお読みください。
まず、手動の手順について説明します。
手順 1: Google アカウントを使用して、Excel から Android に電話番号をインポートします。
最初に、Google の一般的な形式の CSV ファイルが必要です。まだお持ちでない場合は、次の手順に従って入手できます。1. Googleフォーマットを使用してCSVファイルを取得する
- ウェブブラウザを開き、Google アカウントにサインインします。ログイン
Navigation railってなんだっけ?
# はじめに
先日のGoogle I/Oで[Compose マテリアル 3 アダプティブライブラリ](https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive)が発表されましたね。今回のGoogle I/Oはアダプティブ関連の話題が多めだったり、[Car ready mobile appsプログラム](https://developer.android.com/training/cars/car-ready-mobile-apps)で大画面対応済みモバイルアプリの自動車向けAndroidプラットフォーム進出が推進されていたりで、GoogleのAdaptive対応意向を強めに感じました。
アダプティブライブラリで追加されたNavigationSuiteScaffoldは、
「モバイルの場合はNavigationBar、タブレットの場合はNavigationRail」など、画面サイズに応じて最適なNavigationを切り替えてくれるComposableのようですが、**「
[Android] Camera And Storage
![ezgif.com-resize.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3639815/8167328d-59b5-c057-fbd1-e90f1a4e32c2.gif)
# *カメラアプリ*
カメラアプリを実行して写真を撮影すると、その写真が外部ファイルアプリに保存されます。そして、ファイルアプリを開くボタンを押すと、その写真を取り出して画像をダイアログでプレビュー表示する機能を作業しました。この部分をサンプルとして作成しました。
## Manifest 定義
カメラおよびストレージを使用するための定義“`xml
java.lang.NullPointerException: uriStringというエラーの対応 https://qiita.com/usayuki/items/9083136819cf33147887
こちらの記事を参考に実装したところ以下のエラーが出ました。
“`
java.lang.NullPointerException: uriString
“`こちらを解決した際の内容をかるく紹介しておき、
今後のために記事に残しておきます。# 解決方法
“` diff
for (int i = 0; i < count; i++) { val bytes = ByteArrayOutputStream() bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes) - val path = MediaStore.Images.Media.insertImage(context.getContentResolver(), + val path = MediaStore.Images.Media.insertImage(context.getContentResolver(), bitm
ViewGroup全体をお手軽に角丸にする
Viewに角丸をつける方法は様々あります。
以下のように、複雑なレイアウトを角丸に切り取って表示する方法を紹介します。|Layout|角丸化|
|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/c9b4d224-94a4-36b6-7db1-0b21133d331d.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/b6b2235d-115e-a37a-5adf-46ab4c469b48.png)|ViewGroupを継承してdraw処理をoverrideしてしまえば何でもありになります。
ただ、手間も大きいため、これ以外の方法を考えてみます。# CardViewで囲む
お手軽な方法としてはこれですね。CardViewはこのような角丸なViewを作るためのViewなので、以下のように指定して、角丸にしたいレイアウト全体を囲めば最初の例にあるような角丸をつけることが
個人開発のAndroidアプリにアニメーションを導入してみた【種族値クイズ】
# はじめに
こんにちは。新卒2年目のAndroidアプリエンジニアやってます。
なぐも[@southcloud_7960](https://x.com/southcloud_7960)というハンドルネームで活動しているものです。
今回は個人開発をしているアプリにアニメーションを導入してみたので、その経緯とできあがりについて紹介の記事を書こうと思います。リリースしたアプリがこちらになります!
https://play.google.com/store/apps/details?id=com.nagumoapps.pokemonstatsquiz&pcampaignid=web_share
# この記事の対象
– AndroidアプリやiOSアプリを開発している人
– 個人開発をしている人
– アニメーションを使ったアプリの開発に興味がある人# 開発しているアプリ
私が開発している種族値クイズ(1.1.0)のアプリがこんな感じです。
今回は詳細な説明を省きますが、以下のような基本機能を備えています。
– 問題の出題範囲を選ぶ
– 問題が出題される
– 入力して回答する
– ボ
【Android】Gradle8から有効になったR8を無効にする方法
# はじめに
Gradle8がリリースされたのが約1年ほど前ですが、Gradle8よりR8がデフォルトで有効になり、今でも8以降に上げると大体不具合の温床になり得るのがR8の設定かと思います。
主にライブラリが干渉することでクラッシュしたりするわけですが、その度プロガードに設定を追加したりして中々しんどいですよね。
そこで一時的にR8の設定を無効にする方法を備忘録的にまとめておこうと思います。# R8とは?
R8はGradleのビルドシステムの一つで、Android用のProGuardの後継ツールになります。
アプリケーションのサイズを削減し、最適化するためのコードシュリンカーとオブフスケーターになります。# R8を無効化する方法
無効化する方法は簡単で、gradle.propertiesに以下を追記するだけです。“`gradle.properties
android.enableR8.fullMode=false
“`設定は以上になります。
他にもGradle8より追加になったパラメータがあるので、ご自身のプロジェクトに設定がマッチしているかは確認してもらえればと
背景にぼかし(Blur)をかける
# やること
![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566351/c3b2fae2-40e3-e59f-5729-131d31067131.png)こんな感じで背景画像にぼかしをかけてエモい感じにしたい
# やり方
### RenderEffect.createBlurEffectを使用する
### 実装例
・activity_main.xml
“`xml
BottomSheetBehaviorを使った画面のEdgeToEdge対応 BottomSheetBehaviorを使った画面をAndroid 15(VanillaIceCream)のEdgeToEdge対応をしようとして苦労しました。
簡単に今となっては少しレガシーな感じのViewベースのレイアウトの画面の変化を見てみます“`xml
Andriod Studio ワイヤレスデバッグ覚え書き
Androidアプリのデバッグをするときに、USBケーブルを使わずにワイヤレスでデバッグする方法です。
Android実機の開発者モードがオンになっていることが前提です。
Andrio Studioから設定できるっぽいボタンはあるのですが、一度もできた試しがないので毎度この方法でやっています。
何かいい方法があればご教授頂きたいです。## ペア
ワイヤレスデバッグの画面を開いて、
以下のコマンドをPC側で実行します。
“`shell
$ adb pair 192.168.100.14:39929>> Enter pairing code: 431596 <- ここにAndroidに表示されている数字を入力 Successfully paired to 192.168.100.14:39929 [guid=a