- 1. AndroidでNavigationを使ったDeep Linkの実装Part1
- 2. Ionic Frameworkを使ってモバイル画面の限られたスペースで複数のコンテンツを表示する4個の方法
- 3. 実務未経験者がAndroidアプリエンジニアとして転職するまでにやったこと
- 4. [Delphi] WorkArea / SafeArea / DisplayCutout に対応する
- 5. FlutterでHiveをいい感じに使う
- 6. AndroidのPush通知でFcmpush gemを使ってみた
- 7. 【個人開発】飲み会の後二次会会場を爆速で決定するiOS/Androidアプリ開発(Flutter)
- 8. Android 端末で VPS に SSH 接続する
- 9. AAudioを簡単に使う方法
- 10. UnityのAndroidビルドでAPIレベル31にしたらGradle地獄だった話
- 11. AndroidでTextViewを点滅(blink)
- 12. UnityのAndroidリリースビルドだけ起こったバグの話
- 13. AndroidでViewBindingを使ってみる
- 14. 【Jetpack Compose】変数宣言の方法とViewを更新する方法
- 15. 【kotlin】CoroutineContextとは(自分用メモ)
- 16. AndroidでRecyclerViewの縦方向の自動拡大、縮小
- 17. スマートウォッチをリマインダ代わりにバイブレーションさせる
- 18. INMO AIRの開発者向けオプションを有効にする
- 19. JetpackComposeでSnackbarの実装方法
- 20. Androidで設定画面を作ってみる
AndroidでNavigationを使ったDeep Linkの実装Part1
# 初めに
今回から、Navigationを使ったDeepLinkの実装を紹介していこうと思います
### 本文
まずは、Manifestの書き方からです
`scheme`はその名の通りスキームを設定します。
何も書かなかった場合は`http`と`https`が適用されます
`host`には送られてくるurlの頭部分を指定します
`pathPrefix`はurlに含まれるパスを指定します。
指定のパスが含まれてない場合は無効になります。
完全一致で指定したい場合は`pathPattern`を使いましょう。
“`xml
Ionic Frameworkを使ってモバイル画面の限られたスペースで複数のコンテンツを表示する4個の方法
この記事は、 [Ionic Framework / Capacitor / Stencil Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ionic_jp) の1日目の記事です。
さて、モバイル画面を設計していると、モバイル画面の限られたスペースに複数のコンテンツパターンを詰め込むことに悩むことも少なくないと思います。ハンバーガーメニューを用意して、縦にずらっとメニューを並べるようなことをすればその悩みからは開放されますが、逆にユーザからするとメニューが多すぎて何をどう使えばいいかわからないUIになります。そこで、タブをベースにしたメニューの考え方についてまとめようと思います。
# 整理のステップ
## 1. コンテンツを最大5つに絞り込む> Use the minimum number of tabs required to help people navigate your app. Each additional tab increases the complexity of your app,
実務未経験者がAndroidアプリエンジニアとして転職するまでにやったこと
私はwebやアプリの受託開発企業でAndroidアプリを作っています
今の会社に転職してから約1年経つので、実務未経験でAndroidアプリエンジニアとして転職するまでにやったことをまとめておきたいと思います
## この記事を読んでほしい人
業務未経験でモバイルアプリ(Android)の自社・受託開発企業への就職を目指している方向けの記事ですネットで調べると「業務未経験でweb系の会社に転職」という情報はたくさんヒットしますが、AndroidやiOSなどのモバイルアプリ開発になると、途端に情報が少なくなります
私も就職活動のときに、情報が少なくて何を勉強すればいいのかわからなくて苦労したので、この記事が役に立てば嬉しいです
:::note warn
転職市場やIT業界の動向、主流なプログラミング言語はその時々の状況によって変わるので、この記事はあくまで1つの具体例として参考にしてもらえればと思います
:::## 自己紹介
私について自己紹介しておきます
前の仕事を退職してから、8ヶ月の無職期間でプログラミングを勉強して転職しました**・前職を離職してから
[Delphi] WorkArea / SafeArea / DisplayCutout に対応する
# WorkArea / SafeArea / Display cutout とは
iPhone ではカメラ部分にノッチ(切り欠き)があり(iPhone 14 でパンチホールになったけど)そのエリアを避ける事が推奨されています。
そして iPhone で味を占めたのか MacBook にもノッチを導入。
さらに iPhone に追随したいくつかの Android のメーカーがノッチを導入。
また、Windows でも TaskBar がある部分はアプリを表示できません。ということで、どの OS でもアプリを表示できないエリアがあります。
その部分をそれぞれ WorkArea / SafeArea / DisplayCutout と呼びます。|OS|呼び方|説明|備考|
|—|—|—|—|
|Windows|WorkArea|表示可能なエリア|TaskBarを除いた部分|
|macOS|SafeArea|表示可能なエリア|MacBook Pro 2021 よりノッチ対応|
|iOS|SafeArea|表示可能なエリア|全ての元凶|
|Android|Displa
FlutterでHiveをいい感じに使う
# 基本実装
shared_preferencesを使っていたのだが、Hiveというpackageがあったのでこちらを使用してみました
shared_preferencesとは異なり様々な型が保存でき、速度も速いということで利便性はかなり高いかと思いますこちらが公式ページ
https://pub.dev/packages/hive
インストール用のコマンド
“`
flutter pub add hive
flutter pub add path_provider
“`keyの管理をenumを使って行う
“`
enum HiveBox {
string,
int,
double,
bool,
dynamic,
listString,
map,
}
“`
Hiveを利用するためにインスタンスを宣言する
何度も取得する必要はないので起動時にでもinitializeHiveを読んであげればいいかと思います
また、Hiveには保存場所を指定することができるのでpath_providerを使用して指定します
“`
/// Hiveのインスタンス
AndroidのPush通知でFcmpush gemを使ってみた
# はじめに
皆様、こんにちは!
佐久間まゆちゃんのプロデューサーの[@hiroki_tanaka](https://note.com/hiroki_tanaka)です。最近、Railsアプリから送信しているAndroidアプリ向けのPush通知をGCMからFCMに移行しました。
その際に[fcmpush](https://github.com/miyataka/fcmpush)というFCM送信処理を扱うGemを使用したので、使い方を紹介させてください。# 利用環境
– Ruby 2.7.2
– Rails 6.1.7# FCM通知とは
FCMとはFirebase Cloud Messagingのことで、サーバからAndroidアプリにPush通知を送信できるようにするサービスです。
FCMを使用してPush通知を送信することで、ユーザーにアプリのアピールやイベント毎のお知らせなどを行うことができ、アプリへの再訪率や定着率の向上に繋げることができます。FCMの前身としてGCMという通知処理がありましたが2019年4月にサポート終了しているため、2022年現在ではGCMの
【個人開発】飲み会の後二次会会場を爆速で決定するiOS/Androidアプリ開発(Flutter)
モバイルエンジニアのEtsuwoです。
この度、Flutterを使用してモバイルアプリ開発を行いAndroid・iOSの両方に対応したアプリをリリースしました!
今までSwiftやKotlinを使用したアプリ開発の経験はありましたが、Flutterは**全くの初心者**なので0スタートです。
しかしこのFlutter、個人開発ではかなり使い勝手が良く、発案から2ヶ月・実装開始から1ヶ月程度という短期間で開発が完了しアプリリリースを行うことができました。アプリ内容だけでなく、開発の流れや利用技術もざっくり記事にしています。
同じようにFlutterを使ってモバイル開発を考えている方に読んでいただけると嬉しいです。# アプリ概要
この世の全ての酒飲みが経験したことあると思うのですが、
「二次会行きたいけどこの辺のいい感じの居酒屋知らんな…」
「この時間開いてる店どっかあったっけ…」
「しゃーなしでいつものとこ行っとくか…」ってなることありませんか?
僕はこの寒空の下開いてる店を探すべくスマホをポチポチしてる時間が一番嫌いです。
でも二次会は行きたい。この
Android 端末で VPS に SSH 接続する
## 前提
* VPS が利用可能な状態であること
## 環境
* Termux
* Publisher: Fredrik Fornwall
* Version: 0.101
* Android
* Version: 12## 実施
1. Google Play ストアから [Termux](https://play.google.com/store/apps/details?id=com.termux&hl=ja&gl=US&pli=1) をインストール
2. Termux を起動
3. 以下コマンドを順に実行“`bash
$ pkg update
$ pkg install openssh
$ apt-get update
$ apt-get upgrade
$ ssh@
“`
AAudioを簡単に使う方法
今年の4月~、Androidスマホアプリのプログラミングに着手し、年明けにGooglePlayにリリースできるところまで漕ぎつけた。この開発を通じて、サウンド系やシューティングゲーム系アプリを、Android系のスマホ(GooglePixelなど)で作る場合、AAudioというAPIが必須となることがわかった。いわずもがな、iOS系のスマホ(iPhone)では不要だ。
さて、AAudioとは、音の発音遅延を数十m秒レベルに短縮(低レイテンシ化ともいう)するものであり、(遅きに失した感はあるが)Androidバージョン8から導入された。これを使うにあたり、AAudioのテンプレートとでもいうサンプル(oboe)が公開され、これを下敷にすれば、当方のようにアプリ系プログラム初挑戦者でも、低レイテンシのアプリが楽に作れてしまう。
このコラムでは、これからAndroidに挑戦される方に向けて、AAudioの簡単な使い方をまとめた。基本マニュアルは、やはりGoogle純正のサイトを教科書にした方がよい。ここには、アプリ開発ツールであるAndroidStudioのダウンロードの仕方から始
UnityのAndroidビルドでAPIレベル31にしたらGradle地獄だった話
![スクリーンショット 2022-11-28 23.50.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72960/87726bf8-2669-0b39-c4f7-e1c7bfd40e1a.png)
いやなダイアログだ。思わずため息が出る。Unity Android開発者は何度このダイアログに悩まされることになるのだろう。
## 環境
Unity Editor: Unity 2021.1.6f1
Platform: Android
OS: macOS Monterey(12.6)
Target API Level: Android 11 (API Level 30)(当初)
## [前回](https://qiita.com/warapuri/items/9f9b4e293bf52c7cd6fd)のあらすじリリースだけ起こるバグに遭遇したが、ProGuardの難読化が原因だったことがわかった。
proguard-user.txtに追記して、難読化を回避することでなんとかProGuardの罠を潜
AndroidでTextViewを点滅(blink)
# Androidでテキストの点滅って・・・簡単じゃなかった
今日、お客さんから
> 「ここの文字もっと大きくして、点滅させて目立たせたいんだよね・・・」と言われたので、たぶん、TextViewのプロパティを1箇所ポチってtrueにすればできるんじゃないか・・・てノリで探してみたが・・・
**あれ? ない・・・**
blinkとかが付く名前のプロパティが無いのである。えー、文字の点滅もできないの?Androidでどうやってやるんだろう?と色々調べてみました。
# Animationを使う
どうやら、AndroidではAnimationという仕組みを使わないといけないらしいです。
参考URL
本家 Android developer [アニメーションの概要](https://developer.android.com/training/animation/overview?hl=ja)
本家 Android developer [アニメーション リソース](https://developer.android.com/guide/topics/resources/animation
UnityのAndroidリリースビルドだけ起こったバグの話
## 環境
Unity Editor: Unity 2021.1.6f1
Platform: Android
OS: macOS Monterey(12.6)
Target API Level: Android 11 (API Level 30)(当初)
## リリースビルドだけ起こるバグUnityのAndroid版ゲームのビルドを作っているとき、Debugでは問題ないのだが、Releaseでビルドしたら進行不能バグに遭遇した。
logcatで内容を見てみると、いろんなことで以下の例外が出ている。“`
E/Unity: AndroidJavaException: java.lang.ClassNotFoundException:
“`「ClassNotFoundException」つまり、そのクラスが見つからないということ。しかし該当のファイルは存在するし、そもそもDebugでは問題なく動いている。
## 問題の洗い出し
どういうことかと調べたら、どうやら「ProGuard」という難読化ツールが名前を変更したから、らしい。
しかしそもそも「ProGuard」なんて
AndroidでViewBindingを使ってみる
# ViewBindingとは・・・?なんじゃんねぇ?
AndroidではLayout xmlとJavaかkotlinのソースが別々で、Layout xmlでは各Viewにidを振ります。
“`xml
android:id=”@+id/xxxbutton”
“`
それをJavaかkotlinのソース側から
“`kotlin
val button = findViewById(R.id.xxxbutton)
“`
といった風に参照します。AndroidではkotlinだとViewBindingという方法が使えます。参考:
公式Android developers [ビューバインディング](https://developer.android.com/topic/libraries/view-binding)
# ViewBindingのメリットは?
findViewById と ViewBindingを比較した場合のメリットは
* null の安全性が高まる。
* 無効なビュー ID によって NullPointerException が発生することがない。findView
【Jetpack Compose】変数宣言の方法とViewを更新する方法
## 概要
Jetpack Compose を使う上で基本となる、 View の状態を表す変数の宣言方法とそれを使った View の更新方法について説明します。詳しい仕組みについては他の方が書かれていますので、あくまで個人的な備忘録として残したいと思います。
## 環境
Android Studio version: Android Studio Dolphin 2021.3.1 Patch 1
kotlin version: 1.7.10
compose version: 1.3.1## 内容
Jetpack Compose を使って作成した View は Compose によってその状態を常に監視されており、状態が変化すると変化した部分を再描画する処理が行われます。
これを再コンポーズといい、Jetpack Compose で作成した View を更新する手段となっています。View の状態監視には “`State“` 型または “`MutableState“` 型の変数が用いられます。
この変数の宣言方法は大きく分けて3パターン存在し、定義方法に応じて V
【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)