- 1. iOS&AndroidのSDK開発で心がけていること
- 2. ターゲットがAndroid12でActivityのないアプリのServiceが起動できなくて試行錯誤した
- 3. Jetpack Composeでプレゼン資料を作ってみた
- 4. 【Android】Android StudioのPullRequest機能が便利すぎるので絶対使った方がいい【IDE】
- 5. Preferences DataStoreを使用して設定値を更新するときの注意点
- 6. AndroidスマホとOBD2アダプターを使って車の内部情報を取得するのに「obd2-lib」を活用
- 7. Obbで0埋めファイルができてしまう時の備忘録
- 8. a-2-5.モーダル表示(DialogFragment)
- 9. 店舗BGMアプリ『Simple BGM』課金ユーザーの非自発的解約防止のためプッシュ通知を実装した件
- 10. DELETE APIにBodyが必要な時の実装方法
- 11. AppsFlyerとそのアトリビューションの仕組み
- 12. 『Relay』Figmaを用いてAndroidUIを作成する方法 [JetpackCompose]
- 13. Unity初心者向け3Dキャラを動かす方法(おまけでAR化)
- 14. Unrecognized Android Studioから始まった連続エラー解決への道
- 15. Androidのラジオボタンも名前と値のペアで定義する方法
- 16. FlowRowを利用したGridViewのようなUIについて
- 17. Androidの「CDD」と「CTS」を理解する
- 18. Android互換のOSを雑多に理解する
- 19. ion-searchbarでcloseボタンのアクションをユーザフレンドリーにする方法
- 20. Jetpack Compose + MVVM + Hilt で高田健志の伝説アプリを作りたい
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()のようにインスタンスが存在した状態で処理でき
Jetpack Composeでプレゼン資料を作ってみた
この記事は[NTTテクノクロス Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ntt-tx)の8日目です。
こんにちは、NTTテクノクロスの戸部@etctaroと申します。
普段は社内でモバイルアプリ開発関連の技術支援や社内向けのノウハウ記事執筆、社内研修講師活動、社内コミュニティ活動などを行なっています。
Jetpack ComposeはAndroid界隈では話題を大きく集めていますね。
DroidKaigiやAndroid Dev Summitなど、国内外含め各種カンファレンス、勉強会でも話題に事欠きません。ここ三年間Jetpack Composeについての記事を出していますので、今年も続けてJetpack Composeの記事を書いていきます。
なお、[技術書典13](https://techbookfest.org/event/tbf13)で宣言的UIに関する本を共同執筆し、自身はJetpack Composeを担当しました。
こちらもぜひお手にとっていただければと思います。
– [宣言的U
【Android】Android StudioのPullRequest機能が便利すぎるので絶対使った方がいい【IDE】
この記事はand factory.inc Advent Calendar 2022 8日目の記事です。
昨日は @ichikawa7ss さんの [【SwiftUI】明示的アニメーションと暗黙的アニメーションを理解して使い分けよう](https://qiita.com/ichikawa7ss/items/164a2dfd3c3ab2b1eae8)でした。# はじめに
いつのバージョンからかわからないけれど、AndroidStudioのPullRequestのタブが追加されてた。(元からあった??)
全然気にしないでいたけど、いざ使ってみたらブラウザとAndroidStudioを行き来しなくてよくなってめちゃくちゃ便利だったので、使い方を紹介するよ。# 使い方
## 事前準備
まずはAndroidStudioでサインインする。
右上のアカウントのボタンを押して、Googleアカウントで認証を行うとサインインできる。![スクリーンショット 2022-10-04 16.46.35.png](https://qiita-image-store.s3.ap-northeast-
Preferences DataStoreを使用して設定値を更新するときの注意点
# Preferences DataStoreを使用して設定値を更新するときの注意点
### やりたいこと
・Preferences DataStoreに設定値を保存する
・設定値を呼び出し、他の設定値を更新する### 躓いたこと
・処理が無限ループになる同様のエラーで困っている方の助けになれば幸いです。
2022/12現在、`Preferences DataStore` は`SharedPreferences` に代わるものとして改善された新しいデータ ストレージ ソリューションとされています。
参考
https://developer.android.com/codelabs/android-preferences-datastore?hl=ja#0
簡単な例としてトークン(String)、リフレッシュトークン(String)、有効期限(Long)の3情報を保存している
`DataStore`があるとします。`DataStore`を扱う`UserLocalDataSource`クラスは以下の実装になります。“`UserLocalDataSource.kt
AndroidスマホとOBD2アダプターを使って車の内部情報を取得するのに「obd2-lib」を活用
# はじめに
bluetooth対応のOBD2アダプターを車のOBD(故障診断)コネクターと接続し、車の内部情報を取得するAndroidスマホアプリを作りたいと思います。類似のアプリは多数ありますが、自分なりに確認したり点や、改造したいところがあったので、自作を考えました。
OBD2アダプターの多くは「ELM327」というチップを使っているようで、車の内部情報を取得するにはOBD2アダプターに、[「ELM327 datasheet」](https://www.elmelectronics.com/wp-content/uploads/2016/07/ELM327DSF.pdf)にあるような手順でATコマンドを送信し、プロトコルの設定や車側の対応の有無のチェックし、対応している情報をリクエスト、データ受信、物理的な値に変換すればよさそうです。
OBD2に関するライブラリーも多くあるようですが、google検索でたまたま見つけた[「obd2-lib」](https://android.googlesource.com/platform/packages/services/Car/+
Obbで0埋めファイルができてしまう時の備忘録
AndroidStudioにもあるjobb.exe
[JOBBツール](https://developer.android.com/studio/command-line/jobb?hl=ja)はAndroid SDKのインストールフォルダにあります。
\tools\bin\jobb.bat (Windowsの場合) # これの問題ではまったので備忘録
Androidでobbをマウントしようとしたら処理が止まった
obbもあるし、ファイルもサイズがあるので、不審なところはないと思ったところ
obbの中身が全部0で埋まっている謎ファイルができていたのだった。
# 対応策
(a) obb生成後に先頭4バイトを見て0で埋まっていたらNGにする。
なお、こういうファイルを生成していてもjobbは正常終了のコードを返してくる(ひどい)(b) 適当なファイルを追加してサイズが変わるようにする。
a-2-5.モーダル表示(DialogFragment)
### a-2-5.モーダル表示(DialogFragment)
#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)#### 課題
3. DialogFragmentを利用してダイアログを表示できるか。
3. DialogFragmentからActivityへ入力内容を共有できるか。#### Github
https://github.com/rwakizaka7/AndroidTest
#### テスト実装
“`kotlin:DialogFragmentTestActivity.kt
class DialogFragmentTestActivity : AppCompatActivity(), View.OnClickListener,
DialogFragmentTestFragment.DialogListener {
private lateinit var displayButton: Buttonoverride fun onCreat
店舗BGMアプリ『Simple BGM』課金ユーザーの非自発的解約防止のためプッシュ通知を実装した件
# 概要
こんにちは![株式会社ワールドスケープ](https://world-scape.net/)のWakacchiと申します。
弊社は「実力あるアーティストが、公正に、経済的に評価される世界を作る」というミッションのもとに、[Frekul](https://frekul.com/)というアーティストの音楽活動をサポートするプラットフォームを中心としたWEB・スマートフォンアプリの自社サービス開発や受託開発を主な事業としています。今回、自社サービスの[Simple BGM](https://bgm.world-scape.net/)というアプリの、課金ユーザーの非自発的解約を防止するためのプッシュ通知を実装した件を紹介します。
まず”非自発的解約”について補足します。
Androidアプリの定期購読解約には自発的解約と非自発的解約の2パターンあります。自発的解約とは、ユーザーが自ら解約の意思をもってGooglePlayストアから解約したもの。
非自発的解約とは、ユーザーの支払いが完了しなかったために解約されたものです。(例:クレカの有効期限が切れていた、残高不足により決済
DELETE APIにBodyが必要な時の実装方法
# 初めに
今回、自分が地味に詰まったDELETE APIを叩く時にBodyが必要な時の実装方法を紹介していこうと思います
### 本文
早速ですが、実装方法は下記の通りになります
“`kotlin
@HTTP(method = “DELETE”, path = “api_path”, hasBody = true)
“`
DELETEオプションはリクエストの本文が存在しないため、URLのみで識別できる必要があります
そのため普段の@DELETEのみでは実装ができなくなってしまっているのです### 最後に
調べれば意外と出てきますが、日本語での記事がなく初心者エンジニア等が気付かない可能性があるので今回書かせていただきました
何かのお役に立てれば幸いです
AppsFlyerとそのアトリビューションの仕組み
この記事ではAppsFlyerと、その基本的な機能であるアトリビューションについて解説しています。
## AppsFlyerを一言で言うと・・・
[AppsFlyer](https://www.appsflyer.com/ja)はモバイルアプリのデータを収集・整理し、「アトリビューション」を行うことで、広告の効果を統一的に評価するためのプラットフォームを提供するサービスです。
このようなサービスは、モバイル計測パートナー(MMP; Mobile Measurement Patner)という名前でも知られていて、AppsFlyer以外の類似のサービスとしては adjust, branch, Kochava, singular, tenjin 等が挙げられます。
この中で、グローバルシェアがNo.1のサービスがAppsFlyerになります。![AF-logo_Horizontal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73759/eeb0ed79-45cd-6ea0-b1d6-000645
『Relay』Figmaを用いてAndroidUIを作成する方法 [JetpackCompose]
# すみません、まだ完成していません。
# はじめに
アドベントカレンダー7日目を担当します、愛知工業大学一年の牧野遥斗です。よろしくお願いします。
ずっと書く内容を考えていて、投稿が遅れてしまいました。すみません。ではみなさんは、Googleの新しいUiフレームJetpackComposeはご存知でしょうか?
>Jetpack Compose は、ネイティブ UI をビルドする際に推奨される Android の最新ツールキットです。Android での UI 開発を簡素化し、加速します。少ないコード、パワフルなツール、直感的な Kotlin API を使用してアプリをすぐに動かすことができます。
引用文献:https://developer.android.com/jetpack/compose?hl=jaということで、今までより便利にUIを作れるものです。
![スクリーンショット 2022-12-07 7.09.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1209385/705
Unity初心者向け3Dキャラを動かす方法(おまけでAR化)
この記事は、NTTテクノクロス Advent Calendar 2022 の7日目です。
初めまして。NTTテクノクロス田中です。
入社して2年、映像系の開発に携わってきました。
今回はUnity上での3Dモデルのアニメーション編集方法を調べてみました。
おまけで編集したアニメーションをARアプリで表示させてみようと思います。以下の手順で作ってみました。
1.Unityインストール
2.新しいプロジェクトの作成
3.3Dモデルインポート(ユニティちゃん)
4.アニメーションの編集
おまけ.ARアプリ作成
# 1.Unityインストール
・”Unity Hub”をインストール(バージョン:Unity Hub 3.3.0)https://unity.com/download
・インストールが完了したら”Unity Hub”を起動
・”Unityエディターをインストール”をクリック(バージョン:2021.3.14f1)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981449/
Unrecognized Android Studioから始まった連続エラー解決への道
# はじめに
Androidアプリをビルドできなくなり、そこから「1つ解決するとまだ別のエラーが発生」するような状態になってしまいました。。。その過程をせっかくなんでまとめてみました。
# Android Studioをアップグレード
久々にAndroidアプリをビルドしてみると?のようなエラーに遭遇しました。“`console
Unrecognized Android Studio (or Android Support plugin for IntelliJ IDEA) version ‘202.7660.26.42.7486908’, please retry with version 2021.2.1 or newer.
“`Android Studioのバージョンを下げるか最新にしろという事ですね。
https://developer.android.com/studio/intro/update?hl=ja
なぜか` [Android Studio]>[Preferences]>[Appearance & Behavior]>[System Sett
Androidのラジオボタンも名前と値のペアで定義する方法
# え・・・Androidってラジオボタンも名前と値をペアで持っていないの?
[AndroidでHTMLのと、いうことでHTMLのラジオボタンと同じようなことを実現するにはどうするか?考えてみました。
# ラジオボタンの値を取得する
## 取り敢えず、ラジオボタンの名称でやってみる?
とりあえず、こんな画面を考えてみます。ボタンを押した時にラジオボタンのどっちが選択されているかを取得して、
ラジオ1だったら → 1
ラジオ2だったら → 2
をDBに更新するとか、HTTPでサーバに送るとか・・・そんな
FlowRowを利用したGridViewのようなUIについて
### はじめに
FlowLayoutとはGoogleのAccompanistが提供している中の一つのライブラリです。
画面幅に対して折り返していくようなUIを提供しています。`FlowRow`と`FlowColumn`というComposableが提供されております。この記事では水平方向に折り返していく`FlowRow`を使ったGirdViewのようなUIを表現してみたいと思います。### やりたいこと
ComposeでGridView的な表現をしたい場合、`LazyVerticalGrid`がありますが、リストの長さが可変の場合や、スクロールの中でリスト表示以外のUIを差し込みたい場合、`LazyVerticalGrid`だと簡単ではなさそうだなと思い、`FlowRow`をつかってみました。イメージとしては以下のような2列の可変長リストとそれ以外のUIが混ざったようなスクロールできるUIを実装してみたいと思います。
![sankou2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218011/9
Androidの「CDD」と「CTS」を理解する
Androidが広く普及してきました。
今やスマートフォンだけでなく、
様々な製品に搭載されていますが、
その中にはAndroidの互換性の承認を受けている物と
そうでない物があります。**例)**
**Amazon :Fire OS(互換性の承認なし)**
**SAMSUNG:One UI(互換性の承認あり)**今回はAndroidの互換性の承認があるデバイスについて記載したいと思います。
## Android互換性の承認
Android互換性を承認されたデバイスを作成するには、
「CDD」に準拠し「CTS」に合格する必要があります。それ以外のデバイスは「Fire OS」の様に非互換のOSという事になります。
## CDD
「CDD」という言葉が出てきましたが、「CDD」とは何でしょう?「CDD」(Compatibility Definition Document)
日本語で言うと「互換性定義ドキュメント」ですね。#### Androidの互換性を証明する内容は「CDD」にて記載されています
「CDD」は、正規のAndroidと互換性を満たす為
Android互換のOSを雑多に理解する
世に広くAndroidが普及してきました。
スマートフォンのOSとしてだけではなく、テレビ、冷蔵庫、自動車・カーナビ等
(他にもありますが多すぎるので割愛)
さまざまな製品に搭載されています。それらの製品に搭載されているのは
Android OSなのですが、純粋なAndroid OSではありません。それぞれの製品用にカスタマイズされたAndroid互換OSになります。
## Android互換OS
スマートフォン用にカスタマイズされた一部の互換OSでは、
GooglePlayが使えたりして、通常のAndroid OSとほぼ変わらなかったりします。##### しかし、
TVやプロジェクタ等用にカスタマイズされたOSでは、
動画系のアプリを使用する事に特化し、GooglePlayも使用できません。それらのカスタマイズされたOS達と
純粋なAndroid OSの差は何処にあるのかを見て行きます。## ■Androidの構造
Android互換の有無の差を理解するために、まずはAndroidの構造を紹介したいと思います。
Androidの構造は大きく5層構造に
ion-searchbarでcloseボタンのアクションをユーザフレンドリーにする方法
Ionic Frameworkを使っていると、 `ion-searchbar` を利用する場面も多いでしょう。多くのリストから絞り込む用途に使われることがほとんどなのですが、実際ユーザとして使っているとひとつの問題があります。それは、closeボタンを押下しても、 `ion-searchbar` にフォーカスされたままの状態になることです。
![49f09cc0f0d654254dcda801df5f32aa.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100460/b32ff1ba-d2cf-be8c-1bac-2e22a7d9ad41.gif)
closeボタンを押下しても、カーソルが残っていることがわかるかと思います。これは外部キーボードを利用している時は問題になりませんが、モバイルデバイスでオンスクリーンキーボードを利用してる時は問題になります。
__closeボタンを押下してもオンスクリーンキーボードは立ち上がったままです。__
もちろんこれにはシナリオが2つあります。
– 入力内
Jetpack Compose + MVVM + Hilt で高田健志の伝説アプリを作りたい
はじめまして。
ひっそり未来大でM1やってます。ゆめと申します([Twitter](https://twitter.com/YkOxc), [Instagram](https://www.instagram.com/yume.223/))。
本記事は、[FUN Advent Calendar 2022 part2](https://adventar.org/calendars/7426)の5日目の記事です。アドカレに便乗して、初めての技術ブログを書きたいなと思い、参加させていただきました。最近触った技術の備忘録を書こうと思います()。
ブログを書くの初めて+Androidよわよわの人なので、不備や間違い等がありましたらご指摘いただけると喜びます。
# 1.はじめに
筆者は最近Jetpack Composeの勉強を始めました。
Composeで〜、MVVMで〜、API叩いて〜、それをRoomに保存して〜、なアプリを作ろうと手を動かしていると、「composeの場合、引数があるViewModelはどう実装するのだろう」と、悩んでしまいました。
色々なサイトを参照したのですが、**み