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

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

THETA XでBuletooth機器のマイクを利用する。

## はじめに

リコーの @KA-2 です。

弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA V, RICOH THETA Z1, RICOH THETA Xは、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます(詳細は本記事の末尾を参照)。

RICOH THETA Xは、[以前の記事の以下引用](https://qiita.com/KA-2/items/35d7ef550d2aead50cb4#bluetooth%E3%81%AE%E3%83%9A%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%8C%E6%A5%BD%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F)

>A2DP, AVRCP,HSPのプロ

元記事を表示

【Android/Kotlin】FirestoreのデータをFlowで簡単に返す方法

# はじめに
FirestoreでFlowを返したいときcallbackFlowを独自で実装するケースは多いと思います。

しかしながらFirebase Android BoMのバージョン`30.5.0`以上(firestore-ktxのバージョン`24.3.1`以上)であれば、便利な拡張関数が提供されています。

firestore-ktxが提供する拡張関数を使用することでわずか数行で記述することができます。

# 方法の比較
Repositoryのコードを例としてBefore(callbackFlowを実装する方法)とAfter(Firestore-ktxの拡張関数を使用する方法)を比べてみます。

“`kotlin
class HogeRepositoryImpl @Inject constructor(
private val db: FirebaseFirestore,
) : HogeRepository {

companion object {
private const val COLLECTION_PATH = “hoge”

元記事を表示

「Compose を用いた Android アプリ開発の基礎」をやっていく①

# 何をするか/書くか
[Compose を用いた Android アプリ開発の基礎]:https://developer.android.com/courses/android-basics-compose/course?hl=ja

Androidアプリ開発の公式チュートリアルである、 [Compose を用いた Android アプリ開発の基礎] をやっていく。
上記リンク先に書いてある内容を基本的にはなぞっていく(ので、公式に書いてあることをもう一度書きはしない)が、躓いたところとか手順にないけどやってこととかを書いていく。
解決方法というよりも、メモというか、記録というか、そういう側面が強いです。

# Kotlinの概要
[Kotlin によるプログラミングの概要]: https://developer.android.com/courses/pathways/android-basics-compose-unit-1-pathway-1?hl=ja

[Kotlin によるプログラミングの概要]
躓きというか、感想。
* “`Unit は、他の言語の void という戻

元記事を表示

N予備校 Android アプリで SharedPreferences から DataStore に移行した話

#

[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1) チームでテックリードをしている鎌田です。

`N予備校` Android チームでは、[SharedPreferences](https://developer.android.com/training/data-storage/shared-preferences) から [DataStore(Preferences DataStore)](https://developer.android.com/topic/libraries/architecture/datastore) に移行しました。

Preferences DataStore とは、SharedPreferences の後継となるデータストレージで、SharedPreferences からの移行に対応しています。

DataStore には 二種類あって Proto DataStore もありますが、こちらは使用しなかった

元記事を表示

OpenGLでの動画フィルターを作成してみた

# はじめに

本田技研工業 RoadMovies+チームのテックリードを担当している松野と申します。
RoadMovies+の概要説明はTechブログ第二弾に記載していますので、ぜひご覧ください。

https://qiita.com/RintaroKo/items/4e1994efbd1d73c29236#roadmovies%E3%81%A8%E3%81%AF%E5%AE%A3%E4%BC%9D

今回はTechブログ第八弾の投稿となります。
RoadMovies+はiOS版が先行してリリースしており、後発のAndroid版では未実装の動画フィルターがあります。
今回はこれらのフィルターを作成した上で得た、Graphics API等に関する知見を共有したいと思います。

# TL;DR
– RoadMovies+のフィルターはiOSではMetal、AndroidではOpenGLを利用している
– レンダリングパイプラインを理解することで、フィルター作成の流れが理解できる
– フィルターをエディタ上で確認できるようにすることで、開発効率を向上した

# RoadMovies+のフィ

元記事を表示

【工事中】Ionic capacitor プロジェクトでandroidビルド

【工事中】
ionic build  //distフォルダ生成
ionic capacitor add android  //androidフォルダ生成
ionic capacitor sync android
ionic capacitor copy android
ionic capacitor open android //android Studio起動

angular.json
“options”: {
“outputPath”: “dist”,にする。

capacitor.config.ts
webDIr distにする。

元記事を表示

【Flutter】TextFieldのカウンターを消す方法

`TextField`に`maxLength`を指定した際に、デフォルトでフォームの右下に入力した文字数のカウンターが表示されます。
これいらないんだよね。。ってときの対処法を教えます。

## 結論

`TextField`の`decoration`プロパティに、`InputDecoration(counterText: ”)`を渡すだけ!!超簡単!!

“`dart
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(‘Sample’),
),
body: const Padding(
padding: EdgeInsets.symmetric(horizontal: 30.0),
child: Center(
child: TextField(
maxLength: 10,

元記事を表示

【Android】Bluetoothについて | Bluetooth Classicのいろいろ

## Androidには、二種類のBluetoothが組み込まれている

– AndroidのBluetoothには、 `Bluetooth Classic` と、 `Bluetooth Low Energy(BLE)` の二種類がある。

### Bluetooth Classic の特徴
– Bluetoot Classic は、高速なデータの転送が可能、音声や動画のストリーミングなどの用途に適している 
– Bluetoot Classicは、スマホとワイヤレスイヤホンをペアリングするのに使われる

:point_up: 生活の中でよく聞くBluetoothは Bluetooth Classic を指しているのね

### Bluetooth Low Energy(BLE)の特徴
– Bluetoothと言われるより、BLE(びーえるいー)と言われることが多い
– 省電力生が高く、小さなデータの送受信に適している
– 小型のデバイスでも長時間の動作が可能
– センサーによる温度や、湿度の収集に使用される
– ビーコンによる場所情報の提供に使用される

:point_up: BL

元記事を表示

同じUnityプロジェクトで複数のandroidアプリをインストール

Unityでandroidアプリをビルドする際にProjectSettingのPlayerからCompanyNameとProductNameを変えれば別アプリとしてandroid端末にインストール出来ると思っていましたが、そのままでは一つのUnityプロジェクトからは一つのandroidアプリしかインストールできませんでした。一つのUnityプロジェクトで複数のアプリをインストールするための方法の忘備録です。

まず完成したアプリを**ビルド**ではなく**エクスポート**します。
BuldSettingの”Export Project”にチェックを入れると、BuildボタンがExportに変わりエクスポートできます。
![Android_export.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1146955/56859e49-28c4-a0f4-ba0e-603ce8af54cc.png)

エクスポートするとファイルで表示されるので、エクスポート先のフォルダからluncher/build.gra

元記事を表示

Flutter Android API レベルを上げる方法

# はじめに
![Screenshot 2023-08-28 at 19.13.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/97d8aa61-7bf8-8f7d-fe71-b712a857e539.png)
Androidで公開しているアプリに対して、以下のような警告が届いた。

>古いバージョンの Android を対象にしているアプリが 2 個あることが判明しました。Google Play では、ユーザーに安全で保護されたエクスペリエンスを提供するため、すべてのアプリについて 2023/08/31までに対象 API レベル要件に準拠することを義務付けています。

https://developer.android.com/google/play/requirements/target-sdk?hl=ja

アプリを更新して Android 13 を対象にしないといけないようです:sweat:

# ターゲットとなるAndroidのOSバージョン(APIレベル)を変更する

元記事を表示

jetpack compose navigationを使って楽に値付き遷移処理を実装する

# はじめに
今回は`jetpack compose navigation`を使って値付き遷移処理を実装するときに意識すると楽になることを紹介していきます
### 本文
まずは下記のように一箇所のファイルに***遷移用のルート***、***遷移宣言処理***、***表示処理***の3つをまとめておきます。
下記のようにすることで画面数が把握しやすい上に、どの画面からでも該当画面に遷移させるときは該当の遷移処理を呼び出すのみになります。
また、表示処理をまとめておくことで1つのファイル内を検索すれば何を引数として渡していてどの遷移処理がよばれるときにどの画面が表示されるのかが把握しやすくなります。
“`kotlin:HogeNavigation
object HogeNav {
// routeを一箇所にまとめておく
const val hoge = “hoge_view/{id}”
}

// 遷移宣言用の処理を実装して引数のみを渡せばいいようにしておく
fun NavController.navigateToHogeView(id: Int) {
this.navi

元記事を表示

apollo-kotlin の compose サポートを試してみる (その1)

https://github.com/apollographql/apollo-kotlin/releases/tag/v3.8.0

apollo-kotlin 3.8.0 から experimental ですが、
Jetpack Compose で Apollo のクエリが使いやすくなる拡張サポートが入りました。

どんな使い心地か試してみようと思います。

## セットアップ

適当なサンプルの GraphQL API を探してきます。ちょうど Apollo のブログ記事にデモに使える GraphQL API の紹介があるのでみてみます:

https://www.apollographql.com/blog/community/backend/8-free-to-use-graphql-apis-for-your-projects-and-demos/

ポケモンずかんとかアニメのリストの公開 API があって面白いですね。よく使われているスターウォーズの API を使ってみます:

https://swapi-graphql.netlify.app/.netlify/fun

元記事を表示

【Flutter】リップルエフェクトを無効にする

# リップルエフェクトってなに?

アクションがつくWidgetを長押しした時に出てくる波紋あるじゃないですか??
あれです。

08182023171430.gif

でも、リップルエフェクトが不要の場合ってありますよね。
と言うわけで、今回はリップルエフェクトを無効にする方法を3パターンご紹介します!

# なぜ出てくる??

マテリアルデザインにデフォルトで搭載されている機能みたい。
基本的に、アクションがついているWidgetに有効になっている機能のように思います。

# プロジェクト全体でリップルエフェクトを無効にする方法

ひとつ目は、プロジェクト全体でリップルエフェクトが不要な際、
デフォルトでリップルエフェクトを無効にする方法です。

“`dart
MaterialApp(
title:

元記事を表示

AndroidのJUnitテストは超ムズい(4)

# API 34でrobolectricが失敗して起動しなくなる。
“`kotlin:build.gradle.kts
android {
・・・
compileSdk = 34
defaultConfig {
・・・
targetSdk = 34
“`
でlocal testを実行すると
“`
Package targetSdkVersion=34 > maxSdkVersion=33
at org.robolectric.RobolectricTestRunner.getChildren(RobolectricTestRunner.java:259)
“`

robolectricはまだAPI 34(Android 14)には対応してないようです。
[Support for sdk 34 #8404](https://github.com/robolectric/robolectric/issues/8404)

API 34に上げるのはまだ待ちましょう。

元記事を表示

Android WebViewのダークモード

# はじめに
AndroidはChromeで強制ダークモードが使えるため、
WebViewも可能だろうと思い調べてみたところ、
設定が思いのほか複雑だったので、まとめてみました

# 設定方法
SDK Versionとダークモードの適用方法(ダークモード対応サイトのみ、強制ダークモード)によって、設定を分類しています

## SDK Version 33

– [Theme_isLightTheme](https://developer.android.com/reference/android/R.styleable#Theme_isLightTheme)
– [setAlgorithmicDarkeningAllowed()](https://developer.android.com/reference/androidx/webkit/WebSettingsCompat#setAlgorithmicDarkeningAllowed(android.webkit.WebSettings,%20boolean))
– `androidx.webkit:webkit:1.5.0`の

元記事を表示

【Android】アニメーションの後の動きや速度を制御するinterpolatorについて【Kotlin】

# はじめに
今回は、Androidアプリ開発中の中でアニメーション時に出てきた __interpolator__について気になったので、調べて記事にしました。
それぞれ どんな感じなのか動画にして残しておきます。
# 一覧表

|クラス|説明(Android developersから抜粋)|
|:—|:—|
|AccelerateDecelerateInterpolator|開始時と終了時にはゆっくりで、途中で加速|
|AccelerateInterpolator|開始時はゆっくりで、その後加速|
|AnticipateOvershootInterpolator|逆戻りしてからはずみを付けて進み、目的の値を過ぎてから最終値に落ち着く|
|BounceInterpolator|終了時にバウンド|
|CycleInterpolator|指定した回数だけアニメーションを繰り返す|
|DecelerateInterpolator|最初は速くて、減速する|
|LinearInterpolator|速度は一定|
|OvershootInterpolator|はずみを付けて進んで、最終

元記事を表示

[備忘録] Androidアプリに Google Map を追加する

## 前提
これをやったんだ

https://developers.google.com/codelabs/maps-platform/maps-platform-101-android?hl=ja

## 大まかな手順
1. Google Maps Platfrom にて **API Key** と **Map ID** を設定する
2. Viewファイルを作成
3. 処理部分の記述

## Google Maps Platform にて **API Key** と **Map ID** を設定する
### API Keyの設定
こちらを参考に設定した。

https://developers.google.com/maps/gmp-get-started?hl=ja#create-project

API Key をViewファイルなどにハードコードで書き込むとセキュリティ上問題があるため、今回はAndroidプロジェクト内に存

元記事を表示

Android 端末の Bootloader を BIOS との対比で説明する

:::note warn
この文書は私論です。多少間違っていても怒らないでください。
:::

「BIOS は分かるが Bootloader はよく分からない」という過去の自分のために書いておきます。

Android 端末であっても基本的な起動シーケンスは PC と変わりません。
「BIOS とは何ぞや」という人を対象にしたものではないです。

## 目次

– [1次ブートローダーと2次ブートローダー](#1次ブートローダーと2次ブートローダー)
– [起動シーケンスの種類](#起動シーケンスの種類)
– [レガシー BIOS の起動シーケンス](#レガシーbiosの起動シーケンス)
– [Android 端末における Bootloader や UEFI の起動シーケンス](#android端末におけるbootloaderやuefiの起動シーケンス)
– [なぜ混乱するのか](#なぜ混乱するのか)
– [まとめ](#まとめ)
– [Android 端末における Bootloader の実態は UEFI](#android端末におけるbootloaderの実態はuefi)

元記事を表示

jetpack composeのLazy系でいつもド忘れすることまとめてみた

# はじめに
今回は普段自分が`jetpack compose`を実装していて`Lazy`系のド忘れしてしまうことを備忘録程度にまとめていこうと思います
### 本文
***contentPadding***
まずは`contentPadding`について、名前的にアイテム間の間隔なのかなって思うけど実は最初と最後に対する`padding`
`LazyRow`を使ってのチップ実装時に最初と最後にだけ余白を開けたいとか`LazyColumn`で最後にだけ余白を開けたい時に使います

***コンテンツ間の間隔***
ではコンテンツ間の間隔はどう開ければいいのかって話ですよね
これについては`Lazy`の`View`に対して`Arrangement = Arrangement.spacedBy(8.dp),`を設定するようにしましょう
`LazyColumn`か`LazyRow`かによって`verticalArrangement`か`horizontalArrangement`かが変わってきます

***最大値の設定***
これに関してはクラッシュに関わるので最重要と言っても過言じゃないです

元記事を表示

[Android] Media3を使って.mp4の容量を減らす2

前回の[[Android] Media3を使って.mp4の容量を減らす](https://qiita.com/shirahon/items/9133c1c392058217ee52″)
にて動画ファイルの容量ダウンを図りました。

あれからライブラリが更新されたため、実装方法がちょこっと変わりました。

今回はその実装変更点の備忘録を残します。

### 実装
“`build.gradle
def media3_version = “1.1.1”
implementation “androidx.media3:media3-transformer:$media3_version”
implementation “androidx.media3:media3-common:$media3_version”
implementation “androidx.media3:media3-effect:$media3_version”
“`

バージョン変更はもちろんですが、新しくmedia3-effectを追加利用します。
利用内容については後述。

元記事を表示

OTHERカテゴリの最新記事