- 1. Flutter・webViewで、Webサービスをモバイルアプリ上に実装し、個別通知機能を追加した話
- 2. UnityでAndroidアプリのメモリ使用量を軽量に取得する
- 3. 【Kotlinで学ぶCS】第1回 コルーチンを1から理解する
- 4. ModalBottomSheetLayoutの使い方とTips・トラブルシューティング
- 5. 2つ(以上)のAPI先をAndroid HiltでDIするときの備忘録
- 6. 始めてのAndroid
- 7. 無職の開発未経験者が、KotlinでAndroidアプリを独学でリリースするまでを振り返ってみた
- 8. 5G対応アプリをつくろうZ!Ⅱ
- 9. TextViewで文字列があふれたときに自動スクロールさせる
- 10. PagerDutyからの電話にマナーモードを貫通させる方法
- 11. EditTextでエンターキーが押されたらSWキーボードを閉じる
- 12. LinearLayoutで固定サイズの子ビューの残りを別の子供ビューに割り当てる
- 13. 【Jetpack Compose】Pagerを使った画面でもCollapsing Toolbarを実装したい
- 14. logcatを使ってバイナリデータを取り出すメモ
- 15. Android で LruCache
- 16. 【Flutter】keyboard_actionsでAndroidの実機のみ、bottomに固定されたままキーボードの下に隠れてしまう問題
- 17. RecyclerViewでListItemの位置に応じた角丸を設定する
- 18. PC,モバイル,VRに対応したマルチプラットフォームアプリのリリースフロー
- 19. iOS&AndroidのSDK開発で心がけていること
- 20. ターゲットがAndroid12でActivityのないアプリのServiceが起動できなくて試行錯誤した
Flutter・webViewで、Webサービスをモバイルアプリ上に実装し、個別通知機能を追加した話
# ? はじめに ?
アドベントカレンダー参加したいなということで・・・
今日は、「Flutter × webView で開発したサービスに個別通知機能を追加」した話をします。
同じような境遇の方がいたら、ぜひ実装方針参考にしてみてください。
また、他の方法がある方はアドバイスお願いします。# ? 背景 ?
現在、会員制ECサービス Pantrii のバックエンド兼クライアントエンジニアをやっています。
こちらのサービスは「オンライン版コストコ」というキャッチフレーズで活動しています。https://prtimes.jp/main/html/rd/p/000000005.000084659.html
こちらのECは主にアプリ利用をメインターゲットにしており、開発に Flutter を用いています。
是非、記事を読む際に、下記からアプリをダウンロードして触りながら読んでみてください。
– [iOS](https://apps.apple.com/jp/app/pantrii-%E3%83%91%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC-%E3%82
UnityでAndroidアプリのメモリ使用量を軽量に取得する
こんにちは、[グレンジ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/grenge)の10日目担当のmesshiです。
Advent Calendar駆動の発信となっていますが、今年もニッチな記事を書こうかなと思います。さて本記事は、Androidアプリのメモリ使用量を「 **軽量に** 」取得する方法について取り上げます。
Unityを前提とした記事とはなっていますが、取得方法に関してはAndroid OS共通の手法となります。# 背景
## よくある取得方法
UnityでAndroidのネイティブコードからプロセスのメモリ使用量を取得する方法は、パッと探しただけで以下の記事がありました。
– [標準Profilerだけに頼らないUnityのプロファイリングに挑んでみる](https://www.klab.com/jp/blog/tech/2015/1046552735.html)
– [【UnityAsset】FPSMemoryFriends – UnityでAndroid/iOSのFPSとメモリ使
【Kotlinで学ぶCS】第1回 コルーチンを1から理解する
# はじめに
みなさんこんにちは、[たかっしー](https://twitter.com/takashiho_2)と申します。
今月から毎月、「Kotlinで学ぶコンピュータサイエンス」という題目で、Kotlinの文法の深い理解とともに、コンピュータサイエンスへの知識を深めていくという目的で記事を執筆していきます。
かくいう私もCSについての深い理解があるわけではないので、記事を執筆しながら学ばせていただきます。誤植や間違いがありましたらご指摘の程よろしくお願い致します。第1回は「Corutineとは何者なのか」を1から理解するという記事になっています。
# 今回必要なコンピュータサイエンスの知識
それでは早速、コルーチンを理解する上で必要な知識の解説を行います。## CPUについて
私たちが普段使用しているPC、スマホにはCPUが入っています。
このCPUには、**コア**、**スレッド**というものが用意されており、これらによって処理が実行されています。ここで大事なことが、CPUの一つのスレッドは**ある瞬間に1つのタスクしか行うことができない**ということです。
そ
ModalBottomSheetLayoutの使い方とTips・トラブルシューティング
Android Advent Calendar 2022の10日目の記事です。
本記事では、[Compose Material](https://developer.android.com/jetpack/androidx/releases/compose-material) のライブラリで提供されている ModalBottomSheetLayout の使い方とTipsを紹介します。※ 2022年12月10日(ver 1.3.1)時点で ExperimentalMaterialApi であることから動作は今後変更される可能性があります。
# ModalBottomSheetLayoutについて
マテリアルデザインにおけるBottomSheetとしては、Standard, Modal, Expanded の3種類が紹介されており、その中のModalが本記事で紹介するLayoutに該当します。
Android Viewの中では [BottomSheetDialogFragment](https://developer.android.com/reference/com/googl
2つ(以上)のAPI先をAndroid HiltでDIするときの備忘録
Androidにて向き先が違うREST APIを1つのアプリで投げることがあると思います。
実際DIしようとしたらちょっとハマったので、その備忘録。
HiltはDaggerから発展したのでDaggerでも同じことができるかもしれません。# 結論
DIが競合しているので(この表現が正しいか分からないが)
@Namedアノテーションを利用して区別するだけ。# 例
他のライブラリ構成はRetrofit、okHttp、Gson
~~~ ApiModule.kt
@Module
@InstallIn(SingletonComponent::class)
object ApiModule {@Provides
@Singleton
fun provideApiOneRetrofit():Retrofit{
return Retrofit.Builder()
.baseUrl(REST_ONE_URL)
.client(provideApiOneHttpClient())
.a
始めてのAndroid
AndroidスマホとOBD2アダプターを使って車の内部情報を取得するのに「obd2-lib」を活用
https://qiita.com/naoto_deuxchats/items/33564ad8eec4ad310041
【Android】バックグラウンド(フォアグラウンド サービス)とマルチスレッド(Thread)の動きを簡単な事例で実験的に調査
https://qiita.com/naoto_deuxchats/items/447d609166bc639c9436
【Android】Variable is accessed from within inner class, needs to be final or effectively final
https://qiita.com/naoto_deuxchats/items/30be27ac368f8898ba6a
「状態ホイスティング」の説明
https://qiita.com/uhooi/items/6b3ccac83539576d20f3
Android UnitTestでR.stringのテストを劇的に
無職の開発未経験者が、KotlinでAndroidアプリを独学でリリースするまでを振り返ってみた
こんにちは。halkoです。
私は現在、駆け出しのAndroidエンジニア(志望…?)として日々個人開発をしている21歳女です。
**つい先日、KiNaという、単語帳を自作できるAndroidアプリをリリースしました。**
![feature_graffic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3026395/14f2eaa6-24aa-dfb5-3e68-9f6c5a631d2c.png)https://play.google.com/store/apps/details?id=com.koronnu.kina
開発というものに初めて触れたのは約1年前。
**スクールや教材などにはお金をかけずに、独学でリリースまでこぎつけました。**
開発未経験の状態から、リリースができるようになったまでの流れを、自分のため、そしてあわよくば同じように未経験からアプリリリースを目指している方のために、振り返ってみたいと思います。※(注)私は、現在無職無収入で、リリースしたKiNaの利用者は3人(ぜ
5G対応アプリをつくろうZ!Ⅱ
この投稿は、私が所属するKDDIテクノロジーで行っているアドベントカレンダーの9日目の記事となります。
モバイル通信の第5世代目の通信規格「5G」。対応エリアも広がり、5G端末を使っていれば、アンテナ横の「5G」のマークが点いていることも事も多くなりました。
しかし、まだまだ5Gは進化中です。
私の本日のアトレベントカレンダーでは、この「5GのアプリつくろうZ」の続きとして、前回紹介されてもらった機能をアプリ上でどのように実装するのか紹介させて頂きます。
# 前の記事
「5G対応アプリをつくろうZ!」
https://qiita.com/simdroid/items/4c755cac1357c6afe72c# 5Gエクスペリエンス機能を使おう
## 前回からの続き
前号では5Gの特徴とともに、大容量通信を実現する際に、配慮すべき「5Gエクスベエンス機能」の紹介をさせてもらいました。1 5Gエリア判定
2 5G通信速度の推定
3 従量課金の判定これらの判定や推定、従量期間判定を行う理由に対て紹介させてもらいました。
今回は具体的に、どのように設定するのかを紹介させて頂き
TextViewで文字列があふれたときに自動スクロールさせる
リソース側
“`
“`ソース側
“`
binding.textView.setOnClickListener {
it.isSelected = true
}
“`
PagerDutyからの電話にマナーモードを貫通させる方法
PagerDutyなどオンコールが深夜になったとき、スマホがマナーモードになっていた結果対応できなかった、ということはないですか?
しかし、オンコールに対応するためスマホのマナーモードを常に解除しておくとそれ以外の電話も音が鳴ってしまいます。# 問題
マナーモードがONでもPagerDutyからの電話だけは音を鳴らしたい。
# 解決法
PagerDutyの電話番号を特別な連絡先に追加して、マナーモードを貫通するようにしましょう。
## iPhoneの場合
[iPhoneで特定の人からの着信は常に音を鳴らす方法 \- 週刊アスキー](https://weekly.ascii.jp/elem/000/001/860/1860259/)
## Androidの場合
AndroidはOSによって方法が違う。
### Galaxy等の場合
お気に入りを使用する。
[Androidスマホの「サイレントモード」とは? 設定・解除からマナーモードとの違いまで解説 \| アプリオ](https://appllio.com/android-smartphone-quickly-tur
EditTextでエンターキーが押されたらSWキーボードを閉じる
“`
binding.editText.setOnEditorActionListener { _, actionId, keyEvent ->
val isPushedEnter = actionId == EditorInfo.IME_ACTION_SEARCH ||
actionId == EditorInfo.IME_ACTION_NEXT ||
actionId == EditorInfo.IME_ACTION_DONE ||
(keyEvent != null && keyEvent.action == KeyEvent.ACTION_DOWN &&
keyEvent.keyCode == KeyEvent.KEYCODE_ENTER)
if (isPushedEnter) {
// ソフトキーボードを消す
val imm = requireContext().getSystemService(Co
LinearLayoutで固定サイズの子ビューの残りを別の子供ビューに割り当てる
layout_heightに0dp、layout_weightを1にするだけ。
“`
【Jetpack Compose】Pagerを使った画面でもCollapsing Toolbarを実装したい この記事はand factory.inc Advent Calendar 2022 9日目の記事です。
昨日は @KKusumi さんの 【Android】Android StudioのPullRequest機能が便利すぎるので絶対使った方がいい【IDE】でした。## Jetpack Composeで折りたたみツールバーを実装したい
Android Viewで折りたたみツールバーを実装するときは、CoordinatorLayoutやCollapsingToolbarLayoutを使うことで実装することができました。
Jetpack Composeではまだそのようなものは用意されてはいません。
現時点で僕が今把握しているCollapsing処理を実装するにあたって参考になるものは以下のようなものがあります。### 1. Material3のTopAppBarでのcollapsingサポート
Material3の[TopAppBar](https://developer.android.com/reference/kotlin/androidx/compose/materia
logcatを使ってバイナリデータを取り出すメモ
すごく特殊な用途なので、普通は使わないと思うので本当にただのメモです。
普通はデバッグでファイルシステム使ってadb pullしたりとかいくらでもやり方はあると思います。
リリースだけ再現したりする現象があったりして、デバッグでは再現しない現象があってバイナリを確認したい場面があります。(ほぼない。)# logcatにデータを出力する
logcatに画像やら、protocol bufferのバイナリなどを流してそれを復元したいと思います。普通にtoString()などをして流すと文字化けしてしまい復元が難しい文字列になってしまうのでそれをなんとかするコードになります。
例えばRetrofit + OkHttpでpostしているデータをログに出すには以下のようにします。 (デバッグ用なので本番で使わないこと)
“`kotlin
.addNetworkInterceptor(Interceptor { chain ->
val request = chain.request()val sink = Buffer()
request.body?.writeTo(s
Android で LruCache
Android アプリ開発でキャッシュを実装した際に、メモリ(キャッシュサイズ)管理が必要になり、[LruCache](https://developer.android.com/reference/android/util/LruCache)の導入を検討した際の調査内容です。
# LruCache とは
最近最も使われていないデータを最初に捨てるアルゴリズム LRU(Least Recently Used)のキャッシュ。
LruCache 内部では Map を持っており、Map と同様に Key-Value で値を保持できる。# 使い方
基本的な使い方としては、インスタンス生成時に、キャッシュサイズの上限を指定し、使用するだけ。
デフォルトのキャッシュサイズは、要素数を表します。
また、キャッシュサイズは resize メソッドで変更可能です。
“`kotlin
@Test
fun testPut() {
val map1To3 = mapOf(1 to “one”, 2 to “two”, 3 to “three”)
// キ
【Flutter】keyboard_actionsでAndroidの実機のみ、bottomに固定されたままキーボードの下に隠れてしまう問題
どうも個人でアプリ開発をしているYuKiOです。
今回紹介するバグは、特殊な状況だと思いますが、原因を発見するためにかなり悩まされたので記録として残しておきます。
どなたかの役に立てば。## 実現したかったこと。
今回アプリの入力フォーム使用時に、キーボードにボタンを導入したかったため、keyboard_actionsを導入しました。このpubを使えば、簡単にキーボード上部にボタンを追加できます。
https://pub.dev/packages/keyboard_actions## バグの内容
導入自体は問題なかったのですが、Androidの実機だけkeyboard_actionsで追加したメニューバーが下部に固定されたまま、キーボードの下に張り付いてしまう現象がありました。## 原因
android/app/src/main/res/values フォルダーのstyles.xmlに以下を追加していたのが原因でした。“`styles.xml
- true
“`
おそらくAndr
RecyclerViewでListItemの位置に応じた角丸を設定する
RecyclerViewでリストを角丸にしたくなる場合があります。
安直にはRecyclerView全体を角丸にしてしまう方法もありますが、以下のように、リスト全体の上下左右以外も角丸にしたい場合、各要素の位置に応じて角丸を設定する必要があります。|||
|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/596d3c94-e5bd-7684-ec88-deb15daca1df.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/cafc8381-8769-9cef-b5a4-3cf41e50975e.png)|角丸の付け方はいろいろあると思いますが、制限はあるもののbackgroundに設定するdrawableを変更するのが簡単でしょうか。
GradientDrawableで角丸とマージン要素含めて定義しておいて、背景のdrawableを切り替えるだけで良いようにしてみま
PC,モバイル,VRに対応したマルチプラットフォームアプリのリリースフロー
この記事は [クラスター Advent Calendar 2022](https://qiita.com/advent-calendar/2022/cluster) 8日目の記事です。
昨日は @UnlimitedBuildWorks さんの [私とEyePhoneの出会い](https://qiita.com/UnlimitedBuildWorks/items/0952ad190f0052d532bb) でした。
30年前からHMDが存在していたのに驚きですね!!こんにちは!クラスター株式会社でSoftware Engineerをしているizumiです。
私は現在主にiOS/Unityの開発と、アプリのリリース担当をしています。# clusterの対応プラットフォーム
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117503/6a1a6686-e1a9-0030-9a32-c53a5f979c43.png)「cluster」は、VRからスマホまでどこからでも遊べるメタバー
iOS&AndroidのSDK開発で心がけていること
## はじめに
:::note info
この記事は、[Supershipグループ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/supership) 8日目の記事になります。
:::
## 自己紹介![logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608850/18517075-7d09-448b-6704-5a9a23b69b94.png)
[Ad Generation](https://supership.jp/business/adgeneration/)というプロダクトで、
iOS/Androidアプリ向けのSDKを開発している、 @napo と申します。普段は .xcframeworkと.aarを開発して過ごしています。
## なんの記事?
業務で、「モバイルアプリ向けのライブラリを開発する」という、あまり馴染みの少ないポジションについて、
日々、どんなことをやっていて、どんな気付きがあるか、
ターゲットがAndroid12でActivityのないアプリのServiceが起動できなくて試行錯誤した
# はじめに
アプリのtargetSdkを31に上げた場合に[サービスの起動条件](https://developer.android.com/about/versions/12/behavior-changes-12?hl=ja#foreground-service-launch-restrictions)がさらに厳しくなりました。
Serviceを起動する場合は[特殊なケース](https://developer.android.com/guide/components/foreground-services?hl=ja#background-start-restriction-exemptions)に該当しない場合は、たとえstartForegroundService()を実行したとしてもバックグラウンドからServiceを起動すると例外が発生するようになりました。# やりたかったこと
– 他のアプリから呼び出されたあと、フォアグラウンドサービスのように処理を待機させること。
– Serviceの持つonStartCommand()のようにインスタンスが存在した状態で処理でき