- 1. AndroidでNavigationを使ったDeep Linkの実装Part2
- 2. 【断念】Androidの標準機能で音声認識(Oculus)を試す
- 3. Github ActionsでFirebase Test Labを使ってAndroidアプリの自動テストを行う環境の構築
- 4. React Native で OS判定 を実装する方法
- 5. React Native | fastlane コマンド実行時に README.md が自動生成されないようにしたい
- 6. 【Android】Jetpack Compose でThemeを設定する【Kotlin】
- 7. 【Android】複雑怪奇なNFCを、ちょうぜつやさしく読み書きする【Jetpack Compose】
- 8. buildSrcにKoltinで処理を書きGradle Tasksとして実行する
- 9. 5G対応アプリをつくろうZ!Ⅲ 5G SAの低遅延・同時多接続アプリを作る?作れる?
- 10. Github Actionsで自動的にAndroidアプリをビルドした後にFirebase App Distributionに配布する
- 11. Jetpack Compose tvのCarouselを使う
- 12. Kotlinの命名規則を再確認する
- 13. 個人的Androidアプリ開発学習リソース
- 14. Androidでミュートの解除/設定をする
- 15. AndroidでVolleyを使ってMultipart/form-data形式で送信してみる
- 16. ブロードキャストでAndroidのシステム情報を取得する
- 17. Composeのテストを試す
- 18. Kotlin のマルチプラットフォームモバイル開発の話
- 19. 【Kotlin】 わからなかったCoroutineScopeを、なるべく短く理解する
- 20. React Native のログを Cloud Watch Logs に送信する方法
AndroidでNavigationを使ったDeep Linkの実装Part2
# 初めに
今回は届いた通知からDeep Linkを取り出す方法を紹介していきます
### 本文
`FirebaseMessagingService`を継承したクラス内部で下記のように実装することでFcmから受け取った通知に入っている`DeepLink`を取得することができます。
ついでに、通知のタイトルやメッセージの取得方法も載せておきます
“`kotlin
override fun onMessageReceived(remoteMessage: RemoteMessage) {
val deepLink = Deeplink.from(remoteMessage = remoteMessage)
val title = remoteMessage.notification?.title ?: return
val body = remoteMessage.notification?.body ?: return
}
“`
### 最後に
今回は、届いた通知に入っているDeepLinkの取得方法を紹介しました
次回の記事は
【断念】Androidの標準機能で音声認識(Oculus)を試す
少し気になっていた以下の記事を元に、Android自体の機能で
Oculusの音声認識ができるかを試します。http://fantom1x.blog130.fc2.com/blog-entry-273.html
ダウンロードはこちらから。
https://booth.pm/ja/items/1556439
毎回思うのですが、先達は本当にすごいなと(感謝
早速、Oculus用にカスタマイズを行ってみます。## サンプルのチェックを実施
ボタンがUnityのボタンでしたので、Oculusインテグレーションを導入して試したのですが
上手くボタンが押せず断念。構成を確認したうえで、いったんMRTK3を入れて
動作をチェックすることにしました。
→やはり移動などの画面処理ができない状態に…## コード解読に時間を要するようです…
マニフェストの問題が挙げられるようで、ますはその書き換えが必要とのことです。
http://fantom1x.blog130.fc2.com/blog-entry-284.html#fantomPlugin_SpeechReconize
Github ActionsでFirebase Test Labを使ってAndroidアプリの自動テストを行う環境の構築
Androidアプリの開発において [Github Actionsにて自動的にビルドする環境作成](https://qiita.com/taptappun/items/92ec63b7e89e53b68efa) について紹介しました。
またビルドが完了した後に[Firebase App Distribution](https://firebase.google.com/docs/app-distribution)にアプリを配布する方法については[Github Actionsで自動的にAndroidアプリをビルドした後にFirebase App Distributionに配布する](https://qiita.com/taptappun/items/50555bbe66e4135ece15)にて紹介しています。
今回は[Firebase Test Lab](https://firebase.google.com/products/test-lab) を使用して、開発したAndroidアプリのテストを自動的に行う環境(CI環境)の構築について紹介していきます。
実際に自動テストを行なってい
React Native で OS判定 を実装する方法
## やりたいこと
React Native で OS判定 を行い
iOS と Android で処理を出し分けたい## 使用技術
– react : 18.1.0
– react-native : 0.70.2
– @types/react-native : 0.70.0
– typescript : 4.8.3## 実現方法
[React Native Platform](https://reactnative.dev/docs/platform) を使用すれば
iOS と Android で処理を分けることは実現可能以下に、実際のサンプルコードを記載しておきます。
### iOS判定をしたい場合
`Platform.OS === ‘ios’` で判定を行う
“`tsx
import { Platform } from ‘react-native’;
const isIOS = Platform.OS === ‘ios’
console.log(isIOS)
// expected output : iOSの場合`true`になる。Androidの
React Native | fastlane コマンド実行時に README.md が自動生成されないようにしたい
## やりたいこと
ローカルPCから `fastlane` コマンドを実行したときに
fastlaneディレクトリ配下に `README.md` が自動生成されないようにしたい## なぜ、この作業をやりたいと考えたのか?
fastlaneディレクトリ配下の `README.md` を独自で編集していたので、fastlaneコマンドを実行するたびに `README.md` に Gitの差分が出るのが面倒だったから
## なぜ、毎回 README.md が作成されるのか?
デフォルトの設定では`fastlane`コマンドを実行時に
`fastlane/README.md`が自動で作成される仕様だから## 実現方法
`fastlaneディレクトリ` の Fastfile に `before_each` block を追加する
Android も iOS も追加する処理は同様の処理で問題ない。
### Android の場合
“`ruby
# android / fastlane / Fastfiledefault_platform(:android)
【Android】Jetpack Compose でThemeを設定する【Kotlin】
# はじめに
今回はJetpackCompose について勉強する機会があったので、使わないで忘れてしまう前に記事にしておこうと思います# Themeの要素
Themeではcolors、typography、shapesをそれぞれ設定できます
colorsは テーマに使う色
typographyは 文字のフォント・太さ・サイズなど(スタイル)
shapesは 形(角を切り落としたりできる)それぞれ設定できる
# 使用例
>Codelab より引用
“`
@Composable
fun MaterialTheme(
colors: Colors,
typography: Typography,
shapes: Shapes,
content: @Composable () -> Unit
) {
“`
こうしてテーマを作成しておくことで
“`
@Composable
fun MyTheme(content: @Composable () -> Unit) {
MaterialTheme(content = content)
}
“`
【Android】複雑怪奇なNFCを、ちょうぜつやさしく読み書きする【Jetpack Compose】
# この記事を書こうと思ったきっかけ
最初、NFCタグにデータを書き込んだり読み取ったりしてみたいと思った時、何から手をつけて良いのかわかりませんでした。
公式ドキュメントを読んでも、NDEFやらタグ・ディスパッチシステムやらと用語が全く理解できず、「もう無理〜」という感想しか抱くことができませんでした。そして、色々記事を探したり、サンプルコードを読み込んでも、ほとんどがActivityやFragmentを基準としたコードになっていて、Jetpack Composeで実装する場合はどのようにしたらよいのかを参考にできるソースを見つけることができませんでした。
そこで今回は、NFCタグに関する処理をJetpack Composeを通して行なってみたいけど、NFCもよくわからないし、JetpackComposeでやるとなると尚更よくわからないという方向けに、超絶やさしくわかりやすく、記事としてまとめておこうと思いたち、筆を取りました。
※NFCに関する規格などの詳細については解説を省きますのでご了承ください。あくまでJetpack ComposeでNFCタグにデータを読み書きする
buildSrcにKoltinで処理を書きGradle Tasksとして実行する
この記事は[Android Advent Calendar 2022](https://qiita.com/advent-calendar/2022/android)のカレンダー2の12月25日の記事となります。
私はAndroidアプリのビルド処理の際にassetsファイルなどをapiから自動で取得したりといった処理をbuild.gradle(.kts)にtasksとして直接書いていました。
ただこの方法だと普段KotlinやJavaでやっているようなpackageやファイルの分割などが難しくてコードの整理ができず、ぐちゃぐちゃな状態になっていました。
これを普段KotlinやJavaで書いているようにできると便利だなと思い調べてみました。いろいろ応用が効きそうで便利なため使ってみてください。
# 前準備(任意)
* `settings.gradle`, `projectroot/build.gradle`, `app/build.gradle`をそれぞれkts化(kts化することを何と呼べばいいかわからない)しておく
* 必須ではないですが本記事ではkts化前提
5G対応アプリをつくろうZ!Ⅲ 5G SAの低遅延・同時多接続アプリを作る?作れる?
この投稿は、私が所属するKDDIテクノロジーで行っているアドベントカレンダーの25日目(最終日)の記事となります。
モバイル通信の第5世代目の通信規格「5G」。対応エリアも広がり、5G端末を使っていれば、アンテナ横の「5G」のマークが点いていることも事も多くなりました。しかし、まだまだ5Gは進化中ですし、その機能を使ったスマートフォンのアプリの進化も継続中です。今年の私のアトレベントカレンダーでは「5Gのアプリを作ろう」として、次の投稿行ってきました。
– [「5G対応アプリをつくろうZ!」5Gの大容量通信に対応した機能](https://qiita.com/simdroid/items/4c755cac1357c6afe72c)【←3日目】
– [「5G対応アプリをつくろうZ!Ⅱ」5Gの大容量通信対応のアプリの作り方](https://qiita.com/simdroid/items/f35d986120288704ba59)【←9日目】
– 「5G対応アプリをつくろうZ!Ⅲ」5G SAの低遅延・同時多接続アプリを作る?作れる?【←今回!!!】今回は「5Gのアプリつくろう
Github Actionsで自動的にAndroidアプリをビルドした後にFirebase App Distributionに配布する
Androidアプリの開発において [Github Actionsにて自動的にビルドする環境作成](https://qiita.com/taptappun/items/92ec63b7e89e53b68efa) について紹介しました。
今回ビルドが完了した後、[Firebase App Distribution](https://firebase.google.com/docs/app-distribution)にアプリを配布する方法(CD環境の構築)について紹介していきます。
具体的に実際にアプリを自動的に配布している様子は以下のプロジェクトで公開しています。
[github-actions-examples](https://github.com/TakuKobayashi/github-actions-examples)
実際にGithub Actionsで自動的に配布を行なっている実行フローについてはこちらに記述しています。* [android-release-build.yml](https://github.com/TakuKobayashi/github-action
Jetpack Compose tvのCarouselを使う
# 概要
Jetpack Compose tvにあるCarouselを使うことで、以下のような、自動で画面が切り替わるUIが実現できます。
![Jetpack Compose tvでCarouselを使ったUI](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687960/a474fb2c-7e3b-e852-cffb-942284f86bde.gif)# Jetpack Compose tvについて
Jetpack Compose tvは2022/10/05にリリースされた、テレビ用のアプリを作成するためのComposeになります。
今回紹介するCarousel以外の、`TvLazyRow` や `ImmersiveList`などのAPIに関しては[以前投稿した記事](https://qiita.com/hyuga_amazia/items/492ea43c4cf7ee225332)がありますので、そちらを参照してください。# 下準備
[tv](https://developer.android.com
Kotlinの命名規則を再確認する
# はじめに
こちらは、株式会社 RetailAI X Advent Calendar 2022 の 25日目(最終日)の記事になります
24日目は、@k-yoshigaiさんの「[Go の Workspace を試す](https://qiita.com/k-yoshigai/private/cb094cf5ba0a26013f56)」でした# 概要
普段使用している言語である _**Kotlin**_ の難解な技術や知識に関することを書こうかと思っていました
が、そんなことよりも基本的なことなのに未だに理解しきれていない **命名規則** について再確認しながら書いていこうと思います# Kotlinの命名規則について(基本)
まずは基本
[公式](https://kotlinlang.org/docs/coding-conventions.html#naming-rules)の情報を要約して確認しましょう
– パッケージ名
– 小文字で「 _(アンダースコア)」は使用しない
– 複数の単語を使うことは非推奨である
– どうしても複数の単語が必要な場合は、
個人的Androidアプリ開発学習リソース
2022年ZOZOアドベントカレンダー2回目の投稿となります。まさです!
本記事は ZOZO Advent Calendar 2022 カレンダー Vol.3 の24日目の記事です。明日はいよいよクリスマスですね?皆さんの準備は終わりましたでしょうか?
本記事では、振り返りとまとめの意味を込めて、普段Android開発の学習をする上で私個人がよくお世話になっているウェブサイト達や、それらをより効率的に活用できるようにサポートしてくれるツールの数々をできるかぎる紹介をしていこうと思います。また、これらのツールやサイトを`「Android技術学習・開発用」`、`「Android関連情報収集用」`および`「内容まとめ用」`の3つのジャンルで紹介していこうと思いますので、ぜひ少しでも皆さんの新しい発見や興味に繋がるキッカケになれれば幸いです。
_※特に紹介する順番などには意味はありませんので、ご了承お願いいたしします_# ?Android技術学習・開発用サイトとツール
## Android Developers
http
Androidでミュートの解除/設定をする
# はじめに
この記事は[Android Advent Calendar 2022](https://qiita.com/advent-calendar/2022/android) 24日目の記事です。やりたかったことはAndroidで強制的に音を鳴らすことだったのですが、ミュート解除周りでハマったのでその時の話を書きます。
# コードからミュートを解除する
## adjustStreamVolumeを使う
コードからミュートを解除するには[AudioManager](https://developer.android.com/reference/kotlin/android/media/AudioManager)のメソッドである`adjustStreamVolume`を使うとできます。このメソッドは音量を調節するためのメソッドですが、ミュートとアンミュートを指定することができます。
第一引数には使用したいストリームを指定します。今回はアラーム音のためのストリームである`STREAM_ALARM`を使用します。第2引数には音量を上げるか下げるかを指定することができます。この第2引
AndroidでVolleyを使ってMultipart/form-data形式で送信してみる
# AndroidでMultipart/form-dataを送信するには・・・?
Multipart/form-dataとはHTMLでファイルのアップロードと同時にテキストのデータも送信する方式です。一般的に、HTMLで書くと
“`HTML
“`
のような感じになります。このHTMLで送信するのと同じことをAndroidから発射してみようと言うわけです。ネットワーク上に流れるHTTPのデータとしてはこ
ブロードキャストでAndroidのシステム情報を取得する
# ブロードキャストとは
[公式ドキュメント](https://developer.android.com/guide/components/broadcasts?hl=ja)には以下のように書かれています。
> たとえば、システムの起動、デバイスの充電の開始など、さまざまなシステム イベントが発生したときに、Android システムがブロードキャストを送信します。
>
このようにブロードキャストを用いることで、Androidシステムの情報を取得することができるようになります。# システム情報を取得する際の注意点
プライバシーの問題からシステム情報を取得する方法は刻一刻と変化しています。
特にAndroidのアップデートの際は、取得する方法が変わっていないか注意しましょう。## OSのバージョンによる制限
OSのバージョンによって取得できる情報が制限されるようになっています。#### Android9以降
Android9以降のデバイスでは、プライバシーの観点から以下の情報が取得できなくなっています。
> – 位置情報や個人を特定できるデータを受信しなくなっています。
>
Composeのテストを試す
### はじめに
– この記事はand factory.inc Advent Calendar 2022 24日目の記事です。
昨日は @ykkd さんの 「[OperationQueueを活用して、前処理,後処理,キャンセル処理が必要なタスクをバックグラウンドで行う](https://qiita.com/ykkd/items/f1cb5807f8c5733fd37e)」でした。– モチベーションはUIのリグレッションテストの自動化です :shield:
### 依存の追加
“`
androidTestImplementation(“androidx.compose.ui:ui-test-junit4:$compose_version”)
“`今回は、”androidx.compose.ui:ui-test-manifest:$compose_version” は使わないので追加していません。
こちらはアクティビティにアクセスする場合に使うようです。( [JetChat](https://github.com/android/compose-samples/bl
Kotlin のマルチプラットフォームモバイル開発の話
# はじめに!
今年久しぶりに ACCESS Advent Calendar 2022 参加させていただきます!
こちらはACCESS Advent calendarの24日目の記事となります。
今回の記事のテーマは **Kotlin のマルチプラットフォームモバイル開発** を試してみた記事です。
書かれていたコードは全部サンプルプロジェクト作ったら生成されているので、興味がありましたら、是非参考のリンクを辿って、試してみてください。# Kotlin Multiplatform Mobile (KMM) とは?
Kotlin Multiplatform Mobile (KMM) は Android と iOS を開発するための Kotlin の SDK です。
以下の図を見ると、ビジネスロジックは共通することができますが、View は各 OS の実装になります。
Shared Code は Kotlin で書きます。
【Kotlin】 わからなかったCoroutineScopeを、なるべく短く理解する# CoroutineScopeをざっくりと説明
コルーチンを起動するには、どのスコープで起動するかを指定する必要があります。このスコープこそがCoroutineScopeです。# コルーチンビルダーはCoroutineScopeの拡張関数
コルーチンを起動するにはコルーチンビルダーを使用します。このコルーチンビルダーには`launch()`や`async()`といった関数が存在しますが、これらはすべて**CoroutineScopeの拡張関数**として定義されています。
そしてすべてのsuspend関数はコルーチンで実行しないといけないので、普段ViewModelでsuspend関数を呼び出し、UiStateを更新する場合は次のように書いたりします。
“`kotlin
viewModelScope.launch {
val result = repository.getActivities()
viewModelState.update {
it.copy(
…
)
}
}
“`#
React Native のログを Cloud Watch Logs に送信する方法
私が実装するうえで大変苦労した React Native アプリのログを Cloud Watch Logs に直接送信する方法をご紹介します。
とは言っても、 React Native アプリから直接ログを送信したい場合は稀かもしれませんが…# 前提
この記事では以下の環境で実装を行なっております。
* OS:MacOS Monterey 12.6.1の M1チップ
* Android Studio:Chipmunk 2021.2.1
* Node.js:16.16.0
* DB:Firestore# 苦労した理由
1. React Native のライブラリで Cloud Watch Logsと連携するものが少ない
2. ライブラリがあったとしても、ログを送信するものではなくログを取得するもの
4. Firestore へ書き込み、読み込み、削除したときのデータと Cloud Watch Logs に送信されたデータの順番や値が合わない
5. そもそも技術力が不足している3について、データは送信した順番で受信されるとは限らないことが勉強となりました。
# 使用