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

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

Jetpack Compose tvのCarouselを使う

# 概要
Jetpack Compose tvにあるCarouselを使うことで、以下のような、自動で画面が切り替わるUIが実現できます。
![Jetpack Compose tvでCarouselを使ったUI](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687960/a474fb2c-7e3b-e852-cffb-942284f86bde.gif)

# Jetpack Compose tvについて
Jetpack Compose tvは2022/10/05にリリースされた、テレビ用のアプリを作成するためのComposeになります。
今回紹介するCarousel以外の、`TvLazyRow` や `ImmersiveList`などのAPIに関しては[以前投稿した記事](https://qiita.com/hyuga_amazia/items/492ea43c4cf7ee225332)がありますので、そちらを参照してください。

# 下準備
[tv](https://developer.android.com

元記事を表示

Kotlinの命名規則を再確認する

# はじめに
こちらは、株式会社 RetailAI X Advent Calendar 2022 の 25日目(最終日)の記事になります
24日目は、@k-yoshigaiさんの「[Go の Workspace を試す](https://qiita.com/k-yoshigai/private/cb094cf5ba0a26013f56)」でした

# 概要
普段使用している言語である _**Kotlin**_ の難解な技術や知識に関することを書こうかと思っていました
が、そんなことよりも基本的なことなのに未だに理解しきれていない **命名規則** について再確認しながら書いていこうと思います

# Kotlinの命名規則について(基本)
まずは基本
[公式](https://kotlinlang.org/docs/coding-conventions.html#naming-rules)の情報を要約して確認しましょう
– パッケージ名
– 小文字で「 _(アンダースコア)」は使用しない
– 複数の単語を使うことは非推奨である
– どうしても複数の単語が必要な場合は、

元記事を表示

個人的Androidアプリ開発学習リソース

2022年ZOZOアドベントカレンダー2回目の投稿となります。まさです!
本記事は ZOZO Advent Calendar 2022 カレンダー Vol.3 の24日目の記事です。

明日はいよいよクリスマスですね?皆さんの準備は終わりましたでしょうか?

本記事では、振り返りとまとめの意味を込めて、普段Android開発の学習をする上で私個人がよくお世話になっているウェブサイト達や、それらをより効率的に活用できるようにサポートしてくれるツールの数々をできるかぎる紹介をしていこうと思います。また、これらのツールやサイトを`「Android技術学習・開発用」`、`「Android関連情報収集用」`および`「内容まとめ用」`の3つのジャンルで紹介していこうと思いますので、ぜひ少しでも皆さんの新しい発見や興味に繋がるキッカケになれれば幸いです。
_※特に紹介する順番などには意味はありませんので、ご了承お願いいたしします_

# ?Android技術学習・開発用サイトとツール

## Android Developers
http

元記事を表示

Androidでミュートの解除/設定をする

# はじめに
この記事は[Android Advent Calendar 2022](https://qiita.com/advent-calendar/2022/android) 24日目の記事です。

やりたかったことはAndroidで強制的に音を鳴らすことだったのですが、ミュート解除周りでハマったのでその時の話を書きます。

# コードからミュートを解除する
## adjustStreamVolumeを使う
コードからミュートを解除するには[AudioManager](https://developer.android.com/reference/kotlin/android/media/AudioManager)のメソッドである`adjustStreamVolume`を使うとできます。このメソッドは音量を調節するためのメソッドですが、ミュートとアンミュートを指定することができます。
第一引数には使用したいストリームを指定します。今回はアラーム音のためのストリームである`STREAM_ALARM`を使用します。第2引数には音量を上げるか下げるかを指定することができます。この第2引

元記事を表示

AndroidでVolleyを使ってMultipart/form-data形式で送信してみる

# AndroidでMultipart/form-dataを送信するには・・・?

Multipart/form-dataとはHTMLでファイルのアップロードと同時にテキストのデータも送信する方式です。一般的に、HTMLで書くと
“`HTML






“`
のような感じになります。このHTMLで送信するのと同じことをAndroidから発射してみようと言うわけです。ネットワーク上に流れるHTTPのデータとしてはこ

元記事を表示

ブロードキャストでAndroidのシステム情報を取得する

# ブロードキャストとは
[公式ドキュメント](https://developer.android.com/guide/components/broadcasts?hl=ja)には以下のように書かれています。
> たとえば、システムの起動、デバイスの充電の開始など、さまざまなシステム イベントが発生したときに、Android システムがブロードキャストを送信します。
>
このようにブロードキャストを用いることで、Androidシステムの情報を取得することができるようになります。

# システム情報を取得する際の注意点
プライバシーの問題からシステム情報を取得する方法は刻一刻と変化しています。
特にAndroidのアップデートの際は、取得する方法が変わっていないか注意しましょう。

## OSのバージョンによる制限
OSのバージョンによって取得できる情報が制限されるようになっています。

#### Android9以降
Android9以降のデバイスでは、プライバシーの観点から以下の情報が取得できなくなっています。
> – 位置情報や個人を特定できるデータを受信しなくなっています。
>

元記事を表示

Composeのテストを試す

### はじめに
– この記事はand factory.inc Advent Calendar 2022 24日目の記事です。
昨日は @ykkd さんの 「[OperationQueueを活用して、前処理,後処理,キャンセル処理が必要なタスクをバックグラウンドで行う](https://qiita.com/ykkd/items/f1cb5807f8c5733fd37e)」でした。

– モチベーションはUIのリグレッションテストの自動化です :shield:

### 依存の追加

“`
androidTestImplementation(“androidx.compose.ui:ui-test-junit4:$compose_version”)
“`

今回は、”androidx.compose.ui:ui-test-manifest:$compose_version” は使わないので追加していません。
こちらはアクティビティにアクセスする場合に使うようです。( [JetChat](https://github.com/android/compose-samples/bl

元記事を表示

Kotlin のマルチプラットフォームモバイル開発の話

# はじめに!

今年久しぶりに ACCESS Advent Calendar 2022 参加させていただきます!
こちらはACCESS Advent calendarの24日目の記事となります。
今回の記事のテーマは **Kotlin のマルチプラットフォームモバイル開発** を試してみた記事です。
書かれていたコードは全部サンプルプロジェクト作ったら生成されているので、興味がありましたら、是非参考のリンクを辿って、試してみてください。

# Kotlin Multiplatform Mobile (KMM) とは?

Kotlin Multiplatform Mobile (KMM) は Android と iOS を開発するための Kotlin の SDK です。
以下の図を見ると、ビジネスロジックは共通することができますが、View は各 OS の実装になります。
Shared Code は Kotlin で書きます。
【Kotlin】 わからなかったCoroutineScopeを、なるべく短く理解する

# CoroutineScopeをざっくりと説明
コルーチンを起動するには、どのスコープで起動するかを指定する必要があります。このスコープこそがCoroutineScopeです。

# コルーチンビルダーはCoroutineScopeの拡張関数

コルーチンを起動するにはコルーチンビルダーを使用します。このコルーチンビルダーには`launch()`や`async()`といった関数が存在しますが、これらはすべて**CoroutineScopeの拡張関数**として定義されています。

そしてすべてのsuspend関数はコルーチンで実行しないといけないので、普段ViewModelでsuspend関数を呼び出し、UiStateを更新する場合は次のように書いたりします。

“`kotlin
viewModelScope.launch {
val result = repository.getActivities()
viewModelState.update {
it.copy(

)
}
}
“`

#

元記事を表示

React Native のログを Cloud Watch Logs に送信する方法

私が実装するうえで大変苦労した React Native アプリのログを Cloud Watch Logs に直接送信する方法をご紹介します。
とは言っても、 React Native アプリから直接ログを送信したい場合は稀かもしれませんが…

# 前提

この記事では以下の環境で実装を行なっております。
* OS:MacOS Monterey 12.6.1の M1チップ
* Android Studio:Chipmunk 2021.2.1
* Node.js:16.16.0
* DB:Firestore

# 苦労した理由

1. React Native のライブラリで Cloud Watch Logsと連携するものが少ない
2. ライブラリがあったとしても、ログを送信するものではなくログを取得するもの
4. Firestore へ書き込み、読み込み、削除したときのデータと Cloud Watch Logs に送信されたデータの順番や値が合わない
5. そもそも技術力が不足している

3について、データは送信した順番で受信されるとは限らないことが勉強となりました。

# 使用

元記事を表示

TargetSdkVersionを更新しないとどうなるのか

こんんにちは、メグリ株式会社でAndroidエンジニアをしている増田と申します。
少し前に約2年ほどTargetSdkVersionを更新していなかったアプリについて、アプリの公開にまつわる重要なお知らせがGoogleから来ていたので備忘録的にまとめたいと思います。

## 少しおさらい
TargetSdkVersionの対応期限について軽くおさらいです。
Android開発者であればおなじみのTargetSdkVersionの更新は、毎年Googleから通達があって、新規アプリの場合と既にストアで公開されているアプリで対応期限が異なります。

通例だと毎年、新規アプリの場合は8月1日、既にストアで公開されているアプリでは11月1日が対応期限となっており、それ以降は基準に満たないバージョンが指定されている apk/aab はplay consoleにアップロードできないようになっています。
![スクリーンショット 2022-12-22 20.11.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22

元記事を表示

(ESP32/MQTT/AWS)センサデータをAWSIoTCoreへ送信してTimestreamへ格納する

# はじめに
MQTTとはIoTデバイスでよく使用される軽量なデータ配信プロトコルです。
IoTCoreを経由することでDBへの格納やトリガーにも利用できます。
今回は勉強がてらに、温度/湿度データをAWSIoTCoreを経由してTimestreamに格納することをゴールにします。

# Timestreamの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342722/d3ccd59d-0c80-5f2d-9691-77fe2a06aa37.png)

### Database/Tableの作成

先に格納先のDBとtableを作成しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342722/a5ed9afa-205c-bb69-5b78-622345becd93.png)

“`
DB:esp32_test_database
table:esp32_test_tab

元記事を表示

casa-androidを使ってcatalogアプリを試しに作ってみた

[casa-android](https://github.com/google/casa-android) という catalog アプリを作れるフレームワークが新たに登場したので、どのようなことができるのか試しに使ってみました。

casa-android は 2022/12/22 時点で Ver 0.1.0 となっており、将来的に大きく実装が変わる可能性があります。

## 導入

基本的には https://github.com/google/casa-android#how-to-use-it に書かれている通りです。
ただし、Ver 0.1.0 ではいくつかハマりポイントがあります。

– パッケージ名が `com.google.android.catalog.framework:xxx:0.1.0` として配布されている
– README にある `com.google.android.casa` ではない
– [sample modules の設定](https://github.com/google/casa-android#create-sample-mod

元記事を表示

Android12以降でのAndroidアプリリンクの話

ブラウザや別アプリからアプリを起動したい時に
特定のURLに紐付けてアプリ起動させる内容

公式の内容
https://developer.android.com/training/app-links/verify-android-applinks?hl=ja

# 前提の各種情報

以下の情報をまずは把握します。

“`
**アプリのパッケージ名**
com.wakka0014.app

**ドメイン名**
wakka0014.ne

**アプリ公開鍵のSHA-256**
AA:BB:CC:DD……()
“`

**AndroidManifestの設定**

“`

元記事を表示

compose公式のswipeRefreshを使う

# 初めに
今回は、`jetpack compose`の公式からでた`1.4.0-alpha01`から使える`swipeRefresh`を実装していこうと思います
### 本文
実装自体はすごく単純で`awipeRefresh`をつけたい`Box`などに下記の設定を追加するだけです
“`kotlin
val pullRefreshState =
rememberPullRefreshState(refreshing = isRefreshing, onRefresh = { onRefreshed() })
Box(
modifier = Modifier
.pullRefresh(pullRefreshState)
.fillMaxSize()
) {

}

PullRefreshIndicator(
refreshing = isRefreshing,
state = pullRefreshState,
modifier = Modifi

元記事を表示

コード生成の力でsealed class/interfaceのwhen式のネストを浅くする

こんにちは!tkhsktです。

Kotlinのsealed class/interfaceは便利なんですが、when式でサブクラスの分岐を作るとネストが深くなりますよね…
この記事では、sealed class/interfaceのwhen式をフラットにするコードの生成方法を紹介します。

今回紹介する方法はライブラリとして公開しているので、気になる方はそちらもご参照ください?
https://github.com/tkhskt/shiirudo

## 「ネストが深くなる」とは

この記事では下記のようなsealed classについて考えます。

“`kotlin
sealed class Event {
object ShowModal : Event()
object DismissModal : Event()
data class ShowToast(val message: String) : Event()
}
“`

このsealed classのサブクラスをwhen式で分岐する場合、通常であれば下記のようになります。

“`kot

元記事を表示

【Android】楽曲情報の読み上げがしたい!

この記事はレコチョク [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/recochoku) の22日目の記事になります。

https://qiita.com/advent-calendar/2022/recochoku

# はじめに
株式会社レコチョクでAndroidアプリ開発をしている寺島です。
最近、ReoNaさんのお歌にハマっています。
(ReoNaさんが曲のことをお歌と言います)
気になったら、聴いてみてください。

最近思ってた事を解決すべく、挑戦した事を記事にしました!

# 最近思ってた事について
みなさん、音楽って聴きますか?
自分は移動中に聴くことや、ながら聴きをすることが多いです。

自分のように移動中に聴いたり、何かをしながら聴いたりする人は多いと思います。その場合、音楽を聴きながら何の曲を聴いているか知りたくなるときはないでしょうか?

自分はあります。
**『スマホで画面を確認せずに、今流れている曲の曲名やアーティスト名が分かればいいのにな~』**
と思うことが、多々あります。

元記事を表示

Flutterアプリをリリースするために僕が考えたブランチ戦略とデプロイ方法と仕組みについてまとめてみた!

# はじめに
この記事は[MIXI DEVELOPERS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/mixi) の22日の記事です。

# この記事はなに?
昨年からFlutterでアプリ(iOS/Android)開発をはじめ、今年の頭に初めてアプリをリリースしました!
リリースする際に考えたブランチ戦略、デプロイ方法と仕組みについてまとめてました!

## この記事で紹介すること
– ブランチ戦略について
– デプロイ方法と仕組みについて

上記について紹介します!

# 環境
今回の記事は以下の環境、ツールを使用しています。
– MacOS: monterey 12.6 2
– Flutter: 3.0.2
– Fastlane: 2.190.0
– GitHub
– DeployGate
– Bitrise

# ブランチ戦略について
まずはアプリをリリースするまでのブランチ戦略についてご紹介していきます!

## 具体的なリリース手順
以下の図でリリース作業を進めています。それぞれ解説してい

元記事を表示

【JetpackCompose】テキスト入力された最後の文字だけマスクを外したい

# はじめに
パスワードを入力する時に表示した文字をマスクして隠したいというのはよくあります。

それをJetpackComposeで実現する場合は、TextFieldのvisualTransformationに[PasswordVisualTransformation](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/input/PasswordVisualTransformation)を指定すれば入力した文字をマスクすることができます。
ただこちらの動きがViewシステムのEditTextの`android:inputType=”textPasssord”`とは微妙に異なっていました。

EditText | TextField
— | —
![edittext-demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953466/6fe353e8-b6f4-d4c7-95bf-b7be6cf7

元記事を表示

[Android] Splash画面の実装 コピペ可能

### コピペ可能でいけます!

アプリ起動時にいきなりアプリ画面を表示させるのではなく、LINEみたいに一旦起動中の画面を表示させたいですよね。
そんな時に使えるSplash画面。
コピペでいけるので、ぜひ試してください。
方法は超簡単です!

### まずは
“`build.gradle
dependencies {
// コルーチン設定
implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4’
}
“`
“`AndroidManifest.xml
// メインのActivityをSplashに




// メイン画面に遷移できるように追記

“`

### ソースコード
“`SplashActivity.kt
class SplashActivity : AppCompatActivity(

元記事を表示

OTHERカテゴリの最新記事