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

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

AAudioの実力を測る

 Googleが開示しているAndroid開発ガイドによれば、AAudioの章で、「GitHubで入手可能なオープンソースoboeライブラリの使用」を推奨?していたので、oboeを下敷きにして音声アプリを作った。その結果、以前に使用したことのある「AudioRecord/AudioTrack」というAPIと比較して格段にレイテンシが改善されていることを確認した。下図に示す通り、マイク入力→イヤホン出力までの時間を計測すると、一桁改善していることがわかる。
 当方のアプリは、音声をトランペットの音に変換するもの、すなわちメロディ系の楽音を生成するものなので、演奏のリアルタイム性の観点では、「まあ及第点はあげられるかな」という感触である。しかし、ドラムやピアノなどのリズムセクション系の楽音は、数msecオーダーに改善する必要があるだろう。
![AAudioの実力.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659855/21183a0e-bdb0-a280-a783-5a43c7653fcd.png)

元記事を表示

MutableStateFlowのupdate()とvalueの違いについて

こんにちは。
bitFlyerのAdvent Calendar 4日目の記事です。

当日に締め切りに気付いて大慌てでKMMについて書こうとしたのですが、iOSの環境構築(M1へのpodの導入、実機デバイスへのインストールなど)でどハマりしてしまい・・・
なんとか解決したのですが気付いた頃には現在21時、題材変更を決めました。

今回は __MutableStateFlowのupdate()とvalueの違いについて__ 書きたいと思います。

皆さんはStateFlowを使ったことはありますでしょうか。
実は私はずっとLiveDataを使っていて、初めて使ったのは一年半前だったりします。

ところで、LiveDataの値を書き換えるときは
“`kotlin
_liveData.value = “updated value”
“`
こんな風に書きますよね。
でもメインスレッド以外でこれをやると落ちるので
“`kotlin
_liveData.postValue(“updated value”)
“`

こんな風に書いたりした記憶があります。

でもStateFlowなら簡単!

元記事を表示

急遽Androidエンジニアになった時にインプットすべき内容について

[ディップ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/dip-dev) 4日目の記事です。

# はじめに
筆者は現在Androidエンジニアです。
なった経緯は前職でiOSエンジニアとして採用されたが、入社4日目に
「Androidエンジニアとして働いてくれないか」
と言われ、言語含め全く未経験の状態から転向したというものになります。
当時はキャッチアップの時間やフォローの体制がない中プロダクトのソースコードと作業指示を与えられ、どう進めて行けば良いのかわからず困り果てていた記憶があります。

「今の自分なら喰らいついて生き残るには、何をどうキャッチアップするだろうか」を記事にします。

# ターゲット
– 実務独学問わず別分野の開発経験はあるが、Androidは全くの未経験の人。
会社により環境が異なりますが、ここでは
「キャッチアップの時間をほとんど与えられておらず、自分でなんとかしないといけない」
状況を想定。

– (サブターゲット)モバイルエンジニア未経験者として実務で何をインプットすれば良いか

元記事を表示

[Android] Github Actions + PythonでGoogle Playの段階リリース状態をチェックする

この記事はand factory.inc Advent Calendar 2022 4日目の記事です。
昨日は @ticktakclock さんの [【Jetpack Compose】特定の条件のときだけModifierを追加したい](https://qiita.com/ticktakclock/items/9998a94e92c7c13df70a) でした。  

# 背景
AndroidアプリのアップデートをGoogle Playへ公開する際、[段階的な公開](https://support.google.com/googleplay/android-developer/answer/6346149?hl=ja)を利用して一定の割合のユーザーにのみアップデートを提供し、その割合を徐々に上げていくリリース方法をとるプロダクトは少なくないと思います。
Google Playの段階的な公開の割合は手動で変更する必要があるため、短いサイクルで頻繁にリリースを行っていると割合の変更をつい忘れてしまうことがありました。

現在公開されているアプリの状態は[Google Play Andr

元記事を表示

アクセシビリティに配慮したモバイルアプリの作り方(開発視点)

# 初めに

**アクセシビリティは開発で無視されがち**ですが、やり方がわかれば、アクセシビリティに配慮するのはそこまで難しいことではありません。

この記事ではアクセシビリティに配慮したアプリの作り方を例を交えながら説明します。

# アクセシビリティに関して

## アクセシビリティの定義

この記事で言うアクセシビリティに配慮するというのは、**スクリーンリーダー(TalkBack / VoiceOver)による読み上げと操作**に対応することを指します。

正確に言えば、認識しやすい色の使い方や小さすぎない文字サイズなどもアクセシビリティに含まれますが、デザインに関わる部分はここでは取り上げません。

## アクセシビリティの基本原則

### 1. 説明の文字がないかつ意味を持つ要素に対しては説明ラベルを指定する

説明の文字がないですが、その要素自体は意味を持つ場合は説明ラベル

– Android: contentDescription
– iOS: label / accessibilityLabel

を指定すべきです。

注意する必要があるのは、要素自体が意味を

元記事を表示

今話題のChatGPTと一緒にAndroidアプリを作ろう!

これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー Vol.2 の 4 日目の記事です。
昨日の投稿は @ssssota さんの「[JSON SchemaのanyOfをTypeScriptの型で表現する](https://qiita.com/ssssota/items/7e05f05b57e71dfe1cf9)」でした。

[ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) をご覧のみなのもの〜!
おはこんハロチャオ~!ZOZOでAndroidアプリ開発を担当しております。 @umsys です。

お察しの通り最近はポケットモンスタースカーレット・バイオレットにハマっています。
ナンジャモさんかわいいですね。

さて、今回は今話題の[ChatGPT](https://openai.com/blog/chatgpt/)と一緒にAndroidアプリを作ってみました!
AIによる仕事の

元記事を表示

[Android][ADB] adb devices unauthorized の修正法

# 概要

Android 実機をmacに繋ぎ 実機debugしようとしたが
adb に認識されない ( 以下

“`
$ adb devices
List of devices attached
R58NC0HZ64J unauthorized
“`

# 原因

一般にAndroid実機に繋ぐと `USB接続を許可しますか` dialogが出る

(なんらかの理由で) 今回はそれが出てない

# 解決法

とりあえず以下をやってみる:

“`
rm ~/.android/adbkey
adb kill-server
adb start-server
“`

でUSB繋ぎ直してみる…

->
Android実機のSettings -> developer options

で `allow USB debug` を許可済み 確認をし
`Revoke USB debugging authorization`
でrevoke もしてみる

それでもだめなら
`Developer options` 自体をoff
にする

私(今回)の場合、
onにしたところ再度許諾のd

元記事を表示

Androidのレイアウト、バリア(barrier)の使い方

# barrierとは?
今回はAndroidのレイアウトの編集でバリア(barrier)の使い方について説明します。
例えばこんなレイアウトがあったとします。
![Screenshot_20221203_210115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933408/5f7f41d3-3a0b-9f3c-0f6d-3ea6d3523b95.png)
タイトル1に対して、なんかの値1
タイトル2に対して、なんかの値2
があって、これらを全部DBや設定ファイル、あるいはHTTPで他から取ってきて表示するとします。
今上の画面はタイトル1がタイトル2より長いので、タイトル1に合わせて、その右側のなんかの値1、なんかの値2の位置を決めています。

しかし、状況によってはタイトル1とタイトル2の長さが逆転する場合があります。こんな風に・・・
![Screenshot_20221203_210200.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

5G対応アプリをつくろうZ!

この投稿は、私が所属するKDDIテクノロジーで行っているアドベントカレンダーの3日目の記事となります。
モバイル通信の第五世代目の通信規格「5G」。対応エリアも広がり、5G端末を使っていれば、アンテナ横の「5G」のマークが点いていることも事も多くなりました。しかし、まだまだ5Gは進化中です。
私の本日のアトレベントカレンダーでは、この5Gの現在を読み物として紹介します。

# 5GアプリつくろうZ
「今のアプリを5G対応にしましょう」
「5Gのアプリを開発しましょう」
このようなコトバを発したとしたら「いやいやいや、アプリ関係ないでしょ、何もしなくても5Gで通信できているし」という声が聞こえてきそうです。That’s 正しいです。

5G通信を行うために、アプリが開発時に対応しなくてはならない開発項目はありません。スマートフォンが5G対応であり、かつ5Gの電波のエリア内にいれば、自動的に5Gの通信が開始してくれます。
普通にアプリを作れば5G通信ができる「5G対応アプリ」となっているわけで、5G対応できないアプリなんてものは無いのです。そういう意味でも「5G対応アプリ」という言葉を聞

元記事を表示

【Jetpack Compose】特定の条件のときだけModifierを追加したい

# はじめに
この記事はand factory.inc Advent Calendar 2022 2日目の記事です。
昨日は @doihei さんの [GitHub Apps + Dangerをやってみる](https://qiita.com/doihei/items/6dd338f2e55665cdaf28) でした。

# 特定の条件のときだけModifierを追加したい

jetpack compose で開発しているとちょいちょい
– hasRead(既読)のときだけ背景をグレーにしたい
– isRecommend(オススメ)のときだけ文字色を青にしたい

ということをしたいケースがあったりします。

“`kotlin
if (hasRead) {
Box(
modifier = Modifier.background(Color.Gray)
){
// 既読用のコンポーザブル
}
} else {
Box(
modifier = Modifier.background(Color.Gray)
){
// 未読用のコンポー

元記事を表示

言葉はまるで雪の結晶、溶けていって消えてしまう、Androidチャットアプリ

[クソアプリ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kuso-app) 4日目の記事です。

Official髭男dismの「Subtitle」という曲が心にとても沁みます。
歌詞の一部を引用します。

>言葉はまるで雪の結晶
君にプレゼントしたとして
時間が経ってしまえば大抵
記憶からこぼれ落ちて溶けていって
消えてしまう

うっかりしたことが、フジテレビ系ドラマ「silent」を見逃してしまったこと。なんでも「泣けるドラマ」だそうで話題ですね。このドラマの主題歌でもあります。

何度も聴いているうちに、思い付いたのがこんなAndroidアプリです。

![animation (2)-min.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100612/c41a0beb-dca4-9681-7ec2-15df14caacdc.gif)

相手のメッセージが溶けて消えるチャット

元記事を表示

JetpackComposeでFloatingActionButtonの中央にアイコンを表示する実装方法

今回はJetpackComposeでFloatingActionButtonの中央にアイコンを表示する実装を行いたいと思います。

単純なFloatingActionButtonでアイコンだけ表示させたい時に、中心ではなく左寄せで表示されてしまっていたので、中央にアイコンだけ表示させたい場合の実装方法です。

# 実装方法

こちらはそのまま`icon`に設定した場合です
“`ExtendedFloatingActionButtonView.kt
@Composable
fun ExtendedFloatingActionButtonView() {
Column {
ExtendedFloatingActionButton(
icon = { Icon(Icons.Filled.Favorite, “Favorite”) },
text = { Text(“”) },
onClick = { /*今回は説明に必要ないので省略します。*/ },
elevation

元記事を表示

【Jetpack Compose】Composeとxml形式のレイアウトを共存させる

## 概要
xml で作成したレイアウトの一部を Compose に置き換える方法と、反対に Compose で作成した View に xml 形式のレイアウトを組み込む方法をご紹介します。

## 環境
Android Studio verion: Android Studio Dolphin | 2021.3.1 Patch 1
kotlin version: 1.7.10
compose version: 1.3.1

## xml の一部を Compose に置き換える
Compose をレイアウトの一部にだけ導入したい場合は、xml の “`ComposeView“` タグを使います。

“` activity_replace_layout.xml
Fragment上にTabLayoutを実装する方法[Kotlin][Android][アプリ開発]

当記事でわかること

・Fragment上にTabLayoutを実装する方法
・Fragment上にFragmentを重ね、Fragmentを切り替える方法

背景

アプリ制作中にイマドキアプリにありがちな一つの画面内にて、
スワイプで切り替えてコンテンツの表示を制御する実装(例:TwitterのHOME)を行いたく、
調査したが意外と行っている人が少なかったため、
備忘録として残したくなりました。
こちらの記事を参考することで以下の画像のようなレイアウトを作成することができます。

スクリーンショット 2022-11-16 13.30.24.png

大前提(必読)

Fragmentとは、Activity上にあるラ

元記事を表示

setup & sample run android app with appium + python in Mac

# Outline

先日、webのtest自動化するための構築,sample codeを記載した
[Set up] Robot framework – python in mac
Selenium WebDriver Java Simple Program – Login

今回は、NativeAPPをテストするための第一歩までを記述する。

# Condition

| APP, OS | Version 等 |
|:———–|:————|
| Mac | Monterey version 12.4 |
| Python | 3.9.6 |
| Appium | 1.22.3 |

# Setup

### Install Appium

appiumのinstal

元記事を表示

React Nativeを利用したアプリ開発でライブラリのライセンスをJSXで表示したい

# モチベーション

React Nativeを利用した開発で利用しているライブラリをAndroid, iOSごとにjson形式でまとめて、React NativeのViewから表示させたい。この仕組みを、できるところは自動化をさせたい。その手順や躓きポイントをまとめた。

### この記事について

[Unipos Advent Calendar 2022](https://qiita.com/advent-calendar/2022/unipos)の2日目の記事です。

## 用意するもの

### ライセンス出力で利用
– [react-native-oss-license](https://github.com/k-tomoyasu/react-native-oss-license)
– [LicensePlist](https://github.com/mono0926/LicensePlist)
– [LicenseToolsPlugin](https://github.com/cookpad/LicenseToolsPlugin)

※LicenseToolsPlugin

元記事を表示

javaでスプレッドシート

現在AndroidStudioでアプリ開発をしています。その際に、javaを使用してAndroidStudio→スプレッドシート→AndroidStudioというようにデータを送りたいのですがどのようにすればいいかわかりません。
設定方法など細く教えていただけるとありがたいです

元記事を表示

ReactNative+ExpoでAndroidアプリをリリース

# はじめに
この記事は [Google Developer Student Clubs Japan Advent Calendar 2022](https://qiita.com/advent-calendar/2022/gdsc-jp) 2日目の記事です。
はじめまして!GDSC HitotsubashiのLeadをやっております、oreoです。
一橋大学法学部に在籍中で、エンジニアインターンではReactを使ったwebアプリ開発に参加しています。
個人では、GDSC Hitotsubashiに所属しているメンバーとReactNativeでモバイルアプリの開発もしており、先日Androidアプリをリリースしました。リリースする際にExpoが便利だと感じたので記事にしました。
# ReactNativeとは
Expoの説明に入る前にReactNativeの説明をします。
ReactNativeはモバイルアプリケーションフレームワークです。iOSとAndroidの両方で動作するクロスプラットフォーム開発が可能です。同じクロスプラットフォームアプリ開発のフレームワークとしては、Googl

元記事を表示

Android アプリの各通信処理を Retrofit に移行するためにやったこと

[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1)チームの鎌田です。

N予備校 Android チームでは、アプリの各通信処理を[Retrofit](https://square.github.io/retrofit/)に移行しました。

本記事では、コード例を交えてこれまでの実装からどのように Retrofit に移行したかの経緯、移行にあたってつまづいたポイントについてまとめます。

また、Retrofit の細かい解説に関してはしませんのでご承知ください。

# これまでの実装

これまでは、OkHttp をベースにした独自の`ApiClient`クラスを作成し、以下のように実装していました。

“`kotlin:ExampleRepository.kt
class ExampleRepository(private val apiClient: ApiClient) {
fun postExampleInfo(id: Stri

元記事を表示

Android UnitTestでR.stringのテストを劇的に見やすくする

# 概要

Android で普通の Unit Test (Android Test/Instrument Test じゃない方のテスト) で R.string.xxx についての Assert を実行すると下記のような謎の数値のエラーになっちゃうんですよね。

“`kotlin:テストコード
val actual = hoge.getTextId()
assertEquals(R.string.xxx, actual)
“`

出力されるエラー:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29899/8ea79e11-6778-a335-43b7-8f1ca14a5655.png)

こうだしたいですよね:
“`
expected: but was:
Expected:R.string.xxx
Actual :R.string.yyy

java.jang … (

元記事を表示

OTHERカテゴリの最新記事