Android関連のことを調べてみた2022年12月08日

Android関連のことを調べてみた2022年12月08日
目次

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: Button

override 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の

OTHERカテゴリの最新記事