- 1. Unity Android 画面設定 ナビゲーションバーの表示
- 2. [Java]Android Fragment間のデータ受け渡し Bundle vs ViewModel
- 3. 2021食べチョクAndroidが取り入れた技術まわりを振り返っていく
- 4. なぜ、Couchbaseなのか?〜モバイル/エッジコンピューティングプラットフォームとしての観点から
- 5. Navigation SDK v2 for Androidを試してみる (インストール編)
- 6. アプリ作成1日目〜要件定義編〜
- 7. 【Jetpack Compose】ColumnとRowで知っていると便利なこと3選
- 8. 我が家のスーパーIoTハウス化が完了したので紹介します
- 9. android端末をひかり電話の子機に設定する
- 10. カメラ映像を出さずに画像データを取得&画像解析
- 11. withLockで楽しい排他制御ライフを!
- 12. Remote Configurationの使い方
- 13. launchWhen〇〇〇は止めてrepeatOnLifecycleを使おう!
- 14. 【Jetpack Compose】Composeをオーバーレイ表示する
- 15. Android Studio Gradleのセッティング
- 16. Google codelabs Android DataBinding のコードのつながりをふわ~っと確認
- 17. 【Android】Modifier.requiredXXXについて、モヤモヤしなくなるくらいに理解する【Jetpack Compose】
- 18. ktlint を導入した話
- 19. Android12 targetSDKVersion31にしたら起きること
- 20. アプリで対応する必要があった項目
- 21. 【Android】マルチモジュールって何?
Unity Android 画面設定 ナビゲーションバーの表示
##0.0 はじめに
Unityで作ったアプリのデフォルト設定はナビゲーションバーが表示されません。ナビゲーションバーとは下に出てくる丸や三角や四角のボタンです。この設定では下からスワイプすることで表示はできますが、しばらくすると消えてしまいます。この記事では最初からナビゲーションバーを表示する方法、ナビゲーションバーを保持する方法を書いています。##1.0 ナビゲーションバー常時表示
下記を最初のシーン入れます。これでアプリが立ち上がったらすぐにナビゲーションバーが表示されます。“`C#:Test.cs
void Awake(){
Screen.fullScreen = false;
}
“`##2.0 戻るボタンの有効化(◁ボタン)
戻るボタンは1.0を設定しただけでは有効になりません。下記を各シーンに入れると戻るボタンを有効にして、アプリを終了させることができるようになります。“`C#:Test.cs
void Start () {
Input.backButtonLeavesApp = true;
}
“`
[Java]Android Fragment間のデータ受け渡し Bundle vs ViewModel
# 目的
Android, Javaで開発するにあたり、Fragment間のデータ受け渡しにBundleとViewModelどちらを使うべきか指標を明示する。
※ただしデータの値は変更しない前提です。# 結論
Bundle:Fragment間で受け渡すデータ数が少ない場合
ViewModel:Fragment間で受け渡すデータ数が多い場合
のように使い分けるのが良いと思います。# はじめに
初めてAndroid開発をしたときに、Fragmentから別Fragmentにデータを受け渡すとき、メジャーな方法としてBundleとViewModelがあると知りました。
両方使ってみて、それぞれの利点・欠点が少し分かったので、まとめてみます。
ちなみに筆者は最初はBundleを使いまくっていたのですが、以下に記載する欠点により、ViewModelをメインで使うようになりました。# Bundle vs ViewModel
BundleとViewModelの利点・欠点をまとめます。| |Bundle|ViewModel|
|—|—|—|
|利点|データの定義が不要
2021食べチョクAndroidが取り入れた技術まわりを振り返っていく
この記事は [ビビッドガーデン Advent Calendar 2021](https://qiita.com/advent-calendar/2021/vivid-garden) の1日目です。
## 食べチョクAndroidアプリは1周年を迎えました?
https://play.google.com/store/apps/details?id=com.tabechoku.android
2020/11/2にリリースした食べチョクAndroidアプリは先日1歳のお誕生日を迎えました?
1stリリースへの開発期間は3ヶ月ととても短く、更に先行していたiOSアプリに追いつくためにもリリースから一定期間は機能開発に集中する時間が続いていました。
そんな食べチョクAndroidにおいてもリリースから半年を過ぎた頃から少しずつではありますがモダンな開発に近づけていく努力を行っていけるようになりました。今回はそんな食べチョクAndroidアプリの1年間の軌跡を振り返っていきたいと思います。
## リリース前(~2020/11)
### Bitrisehttps://www.bit
なぜ、Couchbaseなのか?〜モバイル/エッジコンピューティングプラットフォームとしての観点から
## はじめに
Couchbaseは、NoSQLドキュメント指向データベースです。この表現は間違ってはいませんが、若干正確性を欠いてもいます。つまり、Couchbaseという名前を持つデータベースには、Couchbase ServerとCouchbase Liteというふたつが存在します。
ここではCouchbaseについて、そのモバイル/エッジコンピューティングプラットフォームとしての側面について解説します。この側面においては、Couchbase ServerとCouchbase Liteの両方が重要な役割を持ちます。
以下、上述の本題に進む前にいくつか基本的な部分を整理します。
### NoSQLドキュメント指向データベースについて
NoSQLドキュメント指向データベースについては、パブリッククラウドが提供する独自のテクノロジーを除くと、代表的なものとして以下の3つをあげることができます。
– MongoDB
– Apache CouchDB
– Couchbase Server### Couchbase Serverについて
Couchbase Serverにつ
Navigation SDK v2 for Androidを試してみる (インストール編)
## はじめに
いよいよ、待ちに待った[Mapbox Navigation SDK v2](https://www.mapbox.com/navigation/)がリリースされました!そこで、ここでは公式サイトの手順にしたがってまずはAndroidのナビゲーションアプリを動かしてみたいと思います。
### v1との違い
v2はMaps SDK v10をベースにナビゲーション機能を提供します。それに伴い、カメラ周りの実装などが大きく変更されました。特にAndroidはUI周りの変更が顕著です。
例えば、v1では`View`を継承した`NavigationView`が実装されていました。これを使うことで、全部入りのナビゲーションは[このサンプル](https://github.com/mapbox/mapbox-navigation-android/blob/v1.6.2/examples/src/main/java/com/mapbox/navigation/examples/ui/NavigationViewActivity.kt)のように少ない記述量で作成することができまし
アプリ作成1日目〜要件定義編〜
この記事は [赤ちゃんは25日でアプリの設計から開発まで遂行できるのか][link1]の1日目の記事です。
今回アドベントカレンダー初挑戦なのですが、とりあえず暫定25日でアプリの設計から開発までどの程度できるのか挑戦してみたいと思いカレンダーを作成しました。
アプリを作ろうと思った動悸や目的についてはカレンダー概要を見てください。## 自分のスペック
* UI/UXデザイナーに異世界転生しようとして失敗したエンジニア赤ちゃん(4年目)
* Android勢(Appleアンチ)
* KotlinよりJava派(Java歴6年目)Swiftは一切書けない
* コーディング能力に関しては完全素人の赤ちゃん
* Gitに対しての苦手意識が強いためGitイヤイヤ期から抜け出せない
* UI設計はXDでのみ経験あり(XD歴2年ちょい)[link1]:https://qiita.com/advent-calendar/2021/baby-challenge
## アプリ概要
「オタ活を全面的にサポートするスケジュール管理アプリ」
スマートフォン(Android)向けアプリケーション
【Jetpack Compose】ColumnとRowで知っていると便利なこと3選
## はじめに
本記事は [with Advent Calendar 2021](https://qiita.com/advent-calendar/2021/with) 1日目の記事です。
こんにちは [with](https://with.is/welcome) でAndroid エンジニアをしている石田です。withでは Jetpack Compose を段階的にプロダクトに導入しています。
本記事では、Compose の基本レイアウトである ColumnとRow で個人的によく使う **便利だなと感じたユースケースを3つ** 紹介します。
## Weightを設定しつつ可能ならば詰めてレイアウトする
![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56635/71f764c2-8ffb-76d7-a805-4cf9714798d3.png)
Column/Row のスコープでは `Modifier.weight` で Weight を指定することができ、指定した値の比
我が家のスーパーIoTハウス化が完了したので紹介します
#モチベーション
私は10年近く、工業分野のIT化に取り組んでおりますが、以前から
**「世の中の商用向けIoTサービス、高すぎない?」**
と感じてきました。・センサでデータを取得して遠隔から見られるようにする
たったこれだけなのに、ウン十万円~ウン千万円といったオーダーの費用が掛かります。
そこで、**家庭向けの製品を組み合わせて、安価にIoTシステムを構築できないか**
ということを、まずは我が家で試してみました。
結論から言うと、**低コストでも完成度の高いおうちIoTシステムを構築できた**と感じています。
![summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/d9850898-d768-8199-fac3-601101ef4e76.png)#おうちIoTシステムの要件
###IoTとは?
まず、「IoTとは何か?」というところをハッキリさせます。[総務省のホームページには](https://www.soumu.go.jp/johotsusinto
android端末をひかり電話の子機に設定する
不要になったandroid端末をひかり電話の子機に設定した話(備忘録)
## ホームゲートウェイ/ひかり電話ルーターの設定
### 使ったルーター
PR-500MI### 設定
電話回線>内線設定 で未登録の内線番号の[編集]をクリック– 内線番号:メモする
– ニックネーム:わかりやすいように端末名などを設定
– 端末属性:[音声専用端末]に設定([通常端末]でもよいと思う)
– MACアドレス:端末のMACアドレスを設定(設定しなくてもよい)
– ダイジェスト認証:[行う]に設定
– ユーザID:メモする
– パスワード:メモする(変更してもよい)## android端末の設定
### 使った端末
zenfone 4 Max### 設定
設定>通話設定>通話アカウント>SIPアカウント で[+]をタップして編集画面を開く– ユーザ名:メモした内線番号を設定
– パスワード:メモしたパスワードを設定
– サーバー:ホームゲートウェイ/ひかり電話ルータのIPアドレスを設定
– オプション設定を開く
– 認証ユーザ名:メモしたユーザIDを設定
– ポート番号:506
カメラ映像を出さずに画像データを取得&画像解析
本記事は[Android Advent Calendar 2021](https://qiita.com/advent-calendar/2021/android)の2021/12/01分です。
# はじめに
最近流行りの**AI[^1]を用いスマホのカメラから取得した映像に対して処理するアプリ**を作りたいときに、サンプルを探すと基本的にカメラで撮影した映像に処理結果をオーバーレイした画面が表示されたものばかりでてきます。
しかし、スマホのディスプレイにメインコンテンツ(≠カメラ映像)を映しつつスマホのカメラで撮影した映像をAIで処理したいというニーズもそこそこあると思います。
あやふやな記憶なんですが、5,6年ほど前はカメラを使用する際にはカメラから取得した映像を画面に表示することが必須で、表示しない場合はカメラ機能は使えず仕方なく画面に1pxだけ表示する`SurfaceView`を使ったりしたような記憶があります。
しかしこのAI[^1]全盛時代においてさすがにカメラ映像を出さずにも使えるだろうと思い試してみました。# 結論
CameraX APIの`ImageAnalys
withLockで楽しい排他制御ライフを!
初めて遭遇し焦ったものの、使い方自体はさほど難しくないwithLockについてまとめました。
Javaのパッケージが関連しているためJavaで調べると欲しい情報が見つけやすいこと、早めに気づきたかったです。##仕様
与えられた処理をロック下で実行するための関数です。
引数にロック下で行いたい処理 actionをとり、actionの戻り値を返します。
action実行前に自動でロックされた後actionを実行し、その後自動でロックが解除されます。“`kotlin
inline funLock.withLock(action: () -> T): T
“`ロック下とは、排他制御下であるという意味です。
排他制御とは、同じ資源を同時に利用すると不都合が起きる場合に、同時アクセスを禁止して整合性を保つ仕組みを指します。
例えば、共同で使用している銀行口座から同時に2人がお金をおろしてしまうと残高が合わなくなる、そのようなことを防ぐために使われている仕組みです。
![排他制御_例.png](https://qiita-image-store.s3.ap-northeas
Remote Configurationの使い方
# Remote Configurationとは
パラメータをリモート(サーバー)に持たせることで、リモート側の変更のみで、新しいアプリをリリースせずに、アプリの見た目や動作を変更します。# Remote Configurationの使い方
## 前準備
(1) Huaweu Developerを登録します。(2) AppGallery Connectでアプリのプロジェクトを登録します。
launchWhen〇〇〇は止めてrepeatOnLifecycleを使おう!
# はじめに
皆さんはlaunchWhenCreated, launchWhenStarted, launchWhenResumedを使ってますか?coroutinesでライフサイクルを意識して書く場合、必須とでも言うべきメソッドです。
ですが、Flowでこれらを利用するのは避けたほうが良いです。なぜか?
launchWhen〇〇〇ではFlowが完全には停止せず、リソースが消費される可能性があるからです。https://developer.android.com/topic/libraries/architecture/coroutines
> Lifecycle が STOPPED の場合、前者の API はコルーチンをキャンセルするのではなく停止するため、アップストリーム フローはバックグラウンドでアクティブのままにされ、新しいアイテムが出力される可能性やリソースが浪費される可能性があります。
## launchWhen〇〇〇は将来的に廃止予定
また、launchWhen〇〇〇は将来的に下記リンクにある通りで`This API will be removed in a
【Jetpack Compose】Composeをオーバーレイ表示する
要素の上に半透明で表示するオーバーレイ表示をしてみました。
サイズが固定の場合はとても簡単なのですが、サイズが不定の場合はちょっとコツ(?)が必要でした。オーバーレイ表示はこんな感じのものです。
## 固定サイズの場合
固定サイズの場合は、そのComposeの上に `fillMaxSize()` で半透明のComposeを重ねるだけです。
例えば、こんなカード表示のComposeの場合です。
横幅は引数のModifierで指定できますが、縦幅は80dpで固定指定になっています。“`kotlin
@Composable
fun Card(modifier: Modifier = Modifier) {
Card(modifier = modifier.height(80.dp), shape = Rou
Android Studio Gradleのセッティング
Could not install gradle distribution from XXXが表示された場合の対処法をマイ忘備録として記載します。
こちらも参考
https://note.com/yvonne8823/n/n80214762a8d4file>close projectでいったん編集中のプロジェクトを閉じる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312214/a37e3f35-585b-a756-d9f1-77be1572a4ab.png)
カスタマイズから、All settings…を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312214/8e029eef-48f2-8a17-b947-a7e3c7afa362.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.am
Google codelabs Android DataBinding のコードのつながりをふわ~っと確認
最近、Databindingを理解するために、[Google codelabs Android DataBinding](https://developer.android.com/codelabs/android-databinding#0)で学習してみたのですが、~~思考停止で~~書かれている通りに実装したところ、Databindingは実装できたものの、**どのコードと、どのコードが関連して動作しているのかが、いまいちピンときていなかったので**、コード同士のつながりを確認することにしました。
この記事はその確認結果のまとめです。#Google codelabs Android DataBindingで作るもの
このCodelabsでは以下のようなものを作ります。(ほぼ完成しているものが準備されている)
![アプリ動作.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599060/501929d5-b208-1749-774e-5e827a532d58.gif)LIKEボタンをポチポチすると
【Android】Modifier.requiredXXXについて、モヤモヤしなくなるくらいに理解する【Jetpack Compose】
# はじめに
Modifierでサイズを指定するとき、`width`と`requiredWidth`、`height`と`requiredHeight`、`size`と`requiredSize`があるよね。
[Composeの公式ドキュメント](https://developer.android.com/jetpack/compose/layout?hl=ja)を読めば言いたいことは大体理解できる。
親レイアウトが指定したサイズを無視して、子レイアウトのサイズを決定したい場合に`requiredXXX`を使うよってことよね。これはわかる。
わかるんだけど、いざコードのコメントを和訳して読んでみると、—
*requireSize
コンテンツのサイズを正確に[size] dpの幅と高さになるように宣言します。 着信測定[制約]はこの値を上書きしません。
コンテンツが着信[制約]を満たさないサイズを選択した場合、親レイアウトは[制約]で強制されたサイズとして報告され、コンテンツの位置は、割り当てられたスペースを中心に自動的にオフセットされます。
[制約]が尊重されること
ktlint を導入した話
## はじめに
今更ながら ktlint を導入する機会があったので、その手順などをまとめました。
> 参考:ktlint とは?
ざっくり、[Kotlin Style Guide](https://developer.android.com/kotlin/style-guide) を元にコードスタイルのチェックをしてくれたり、lint で検出した部分にフォーマットをかけてくれたりしてくれる Kotlin 用の静的コード解析ツールになります。
> 公式ページ
[ktlint HP](https://ktlint.github.io/)
> サンプルソース
– GitHub
[simple-ktlint-android](https://github.com/ngkr327/simple-ktlint-android)## 導入
### 1. やりたいこと
– ktlint でコードをフォーマットしたい
– さらに、ビルド時にフォーマットが走るようにしたい### 2. 準備
Android Studio: `3.4.1`
ktlint: `0.4.0`##
Android12 targetSDKVersion31にしたら起きること
今働いている会社でそろそろtargetSDKVersion31への移行を行なっていく必要があり調査していて、発生したことをメモ書きしていきます。
https://developer.android.com/about/versions/12/behavior-changes-12?hl=ja
アプリで対応する必要があった項目
・コンポーネントのエクスポートの安全性を改善
・ペンディング インテントの可変性コンポーネントのエクスポートの安全性を改善
インテントフィルタの設定が入っている場合にはexportedのフラグ設定が必須になりました。元々デフォルトでインテントフィルタ設定がされてたらONになっていたがそれを明示的に指定するように。
そもそも内部でしか利用しないようなパターンがあったときに、勝手にONになっていたため知らず知らずのうちにアプリを公開してしまうっていうのを防ぐのが目的っぽい。ビルド時にエラーで怒られます。対象のAndroidManifest.xmlのタブで「Marged Manifest」をタップするとエラー確認できます
【Android】マルチモジュールって何?
# この記事は
マルチモジュールって何だろうと思い、恥を忍んでAndroidのお師匠さんに聞いてみた私が、「マルチモジュール完全に理解した」になるまでの物語である。# 先生、マルチモジュールって何ですか?
これまでpackageとして管理していたある機能を持つまとまりを、モジュールとしてライブラリのように切り離して扱う方法のこと。…ハァ?
# あの…モジュールって何ですか…?
ていうか、パッケージって何…(小声)– packageとは
`app->com.ウンニャラカンニャラ`の下にあるフォルダ(?)
以下の画像における`view`や`viewModel`がパッケージとなる
![スクリーンショット 2021-11-25 16.46.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/94682283-3a77-7d74-27fa-b4fd99e0d97a.png)– moduleとは
かの有名な[どすこい先生](https://twitter.com