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

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

汎用的なIndicatorDialog

# 汎用的なIndicatorDialog

Androidには、`ProgressBar`という標準で備わっているIndicatorのコンポーネントが存在します。

ですが、今回は、カスタム化されたIndicatorを表示したいという人のための記事になります。

## 目次
1. 素材を用意
2. レイアウト作成
3. themes.xmlの修正
4. ImageUtilクラス作成
5. カスタムDialogFragmentの作成
6. 使い方(呼び出し方)

### 1. 素材を用意
まず、表示させるためのIndicatorを用意します。
以下のIndicatorを作成するサイトがあるので、GIFなどで用意します。
https://loading.io/

![progress_indicator.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417396/98238978-c617-3d1d-bcb8-6ab3e73ca81e.gif)

`progress_indicator.gif`というファ

元記事を表示

Kotlinアプリケーション開発に、NoSQLドキュメント指向モバイルデータベースCouchbase Liteを使ってみる

## はじめに

本稿では、Kotlinアプリケーション開発に、NoSQLドキュメント指向モバイルデータベース Couchbase Liteを使うための具体的な方法について解説します。

本稿では、Couchbase Lite 3.0.0ベータ版をKotlinアプリケーションで利用する際の動作確認までを行います。

Couchbaseをモバイルアプリケーションで利用する意義については、以下の記事をご参考ください。

https://qiita.com/yoshiyuki_kono/items/3abd5e32801060a449d2

### 確認環境

– macOS Catalina Version 10.15.7
– Android Studio 4.1.3

## 実行手順

### プロジェクト作成・Couchbase Liteインストール

Android Studioで新しい「Empty Activity(空のアクティビティ)」プロジェクトを作成します

### `build.gradle`ファイル編集

新しく作成したプロジェクトで、アプリケーションレベルの`buil

元記事を表示

PokéAPI を使ってポケモン図鑑の Android を作ってみた

この記事は,[フラー株式会社 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/fuller-inc/) の 9 日目の記事です。

8 日目の記事は [@inoriko711](https://qiita.com/inoriko711/) さんによる [きらめく星(の力で憧れの私)描くよ](https://qiita.com/inoriko711/items/289766bd1088faa406d8/) でした。

## はじめに

僕は [フラー株式会社](https://www.fuller-inc.com/) で Android エンジニアのアルバイトのオンボーディング(研修)期間中に PokéAPI を使ったポケモン図鑑アプリ作りました。[これ](https://github.com/Daiji256/MyPokedex/) がそのアプリです。恥ずかしいからみないでください。MVVM とかあまりよくわからないまま適当に作ったと思います。

もう,バイトを始めて 8 ヶ月くらい経ちました[^schedule

元記事を表示

Unity Asset Storeでアセットを販売してみました

## 概要
[KLab Engineer Advent Calendar 2021](https://qiita.com/advent-calendar/2021/klab) 12月9日の記事です。
開発推進部の庄司です。お仕事では、スマートフォンゲーム開発案件のサポートをしています。

「MIDI Plugin for Mobile Devices」というUnityアセットを作成して、アセットストアにリリースしてみましたので、その経緯や手順を共有します。

https://assetstore.unity.com/packages/tools/audio/midi-plugin-for-mobile-devices-198917

### MIDIについて
いきなりの余談ですが、「MIDI」ってご存知でしょうか? とってもレガシーな規格(1983年)です。Music Instruments Digital Interfaceの略で、要は楽器同士や、楽器とコンピュータとを接続するための規格です。時代がかった規格ではありますが、現在でもいろんなところで使われています。ゲームサウンドの制作

元記事を表示

今年度上半期で感動した学びBest3

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

## 自己紹介
はじめまして、株式会社レコチョク所属の寺島です。
新卒3年目のエンジニアで、Androidアプリの開発に携わっています。

株式会社レコチョクは音楽サービスの企業という事で、唐突に音楽に関する余談です。

私は、ゲーム好き・アニメ好きが高じて、声優さんに興味があります。
最近は鬼滅の刃で有名な鬼頭明里さんが気になっています。
先日、鬼頭明里さんのライブにも参加してきました!

鬼頭明里さんの曲で、最近のお気に入りは「Dive to World」です。気になった方はぜひ聴いてみてください!
[Dive to World / 鬼頭明里](https://www.youtube.com/watch?v=8CTiSroCm-0)

それでは本題に入っていこうと思います。

## 何について書くか?
Androidアプリ開発でよく使う技術のうち、
2021年度上半

元記事を表示

AndroidXのSnaphostで遊んでみる

こんにちは
最近Widgetにハマっているどすこいです

先日のAndroid Dev Summitで大きなアップデートがあったWidget

https://blog.kyash.co/entry/2021/11/19/125319

僕はせっかちなのでalpha版になる前から遊びたいのです
早く遊びたいなぁと思ってたらSnapshot版で遊ぶ方法を見つけたので紹介します

## 遊び方
全てはここに詰まってます

https://androidx.dev/

“`build.gradle
allprojects {
repositories {
google()
jcenter()
maven { url ‘https://androidx.dev/snapshots/builds/[buildId]/artifacts/repository’ } // この一文を追加
}
}
“`

buildIdはこちらに載っています
一番上のものが最新なので一番上のものを使うといいと思います
https://android

元記事を表示

【Android✖️kotlin】ZOZOTOWNのホーム画面の上の方にある性別とかを切り替えできるタブを作ってみた

# 完成形
「性別とか切り替えできるタブ」とはこの部分です。
(なんかGIFに変換すると遅いな…)

動作の特徴としては以下が挙げられます。

– 男性・女性・子供のアイコンをクリックすると色が変化する
– 男性・女性・子供のアイコンをクリックするとサイズが大きくなる

ですので、今回のポイントは

1. 何のビューを利用して切り替えタブを実装するのか
2. クリック時のアニメーションのプログラムをどのように実装するのか

の大きく二つが挙げられるかと思います。

注:実は本物のZOZOTOWNの場合だとアイコンを二回連続タップすると全てのアイコンが選択状態になるというクソムズムーブ付きなのですが…今回は華麗にスルーしていきます(^^)

# 1. 何を利用して切り替えタブを実装するのか
TabLayoutとか色々考えまし

元記事を表示

Android UITest実行前にChromeのキャッシュを削除したい

## 結論

“`kotlin
UiDevice.getInstance(getInstrumentation()).executeShellCommand(“pm clear com.android.chrome”)
“`

こいつをsetUp時に呼ぶ

## 背景

https://developer.android.com/training/testing/ui-automator?hl=ja

UI Automatorを利用したAndroidのUITest実行時に**SNSログインなどのアプリ外の動作を検証するテストを作りたかった**

もちろん各SNS連携後のブラウザでの動作はUI Automatorを使って自動化することができるのですが、
FacebookやYahoo!ログインでは**ブラウザのキャッシュに残っている状況によってパスワード入力がスキップされたりメールアドレス入力が既に入力されている状態になったりと実行時によって動作が変わってしまう**

よって先にすべてのChromeブラウザのキャッシュを毎度クリアしてテスト実行しようとした

## 解説

“`kot

元記事を表示

adbで端末のスクリーンショットを撮っていい感じにリサイズして保存するコマンド

Macだったら、以下のコマンド一発でできました。Windowsの方はゴメンナサイ…

以下は最大サイズ640でscreen.pngにスクリーンショットを保存するコマンドです。

“`
adb exec-out screencap -p > screen.png && sips -Z 640 screen.png
“`

用途に応じてサイズやファイル名は適当に調整してください。

## 各コマンドについて

### sips

画像ファイルの処理ができるコマンドです。今回使用した`-Z`は、高さまたは幅の大きい方が指定した値になるように、アスペクト比を保ってリサイズするオプションです。
他にもいろいろなことができそうです。

“`
Usages:
sips [image-functions] imagefile …
sips [profile-functions] profile …

Profile query functions:
-g, –getProperty key
-X, –extractTag tag tag

元記事を表示

MVVMな感じのRecyclerViewを書く

# MVVMな感じのRecyclerViewを書く

サークルでアプリを作っているとき、どうやったらいいのかよく分からなかったのでまとめます。
作っていたのは学園祭の当日のパンフレットを代替する目的で作られたアプリで、マップ機能や企画の検索などの機能があります。
今回は企画を検索した際などに企画がリスト状に一覧表示される画面の作り方を載せます。

# 何を作るのか

イベントの会場情報が一覧で見れるページを作ります。機能としては、ブックマークの追加、削除などがあります。
イメージとしては以下のような感じです。
![ぼかしたやつ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281726/3330dbd2-048b-514f-9444-01cc10c45284.png)
※参加団体様の名前などが入っているためモザイクをかけています。

以下のテンプレートにサムネや企画名が入ったものがリスト表示されている感じです。
![リストのやつ.PNG](https://qiita-image-store.s3.ap

元記事を表示

Windows の Unreal Engine 4.27 で Android 用の開発環境を手動で設定する

公式記事には、`SetupAndroid.bat` を実行するようにかかれていますが、このスクリプトが相当な曲者で、10台ほど違うマシンで試しましたが、まともに動いたことは一度もなかったです。

しかも内部で `setx` で PATH の設定をしてたりして、場合によっては環境が破壊されかねなくて(実際、破壊されかけた)、なかなか危うい感じがするんですが、これで公式でいいんでしょうか・・・

とりあえず、UE のバージョンが変わったらうまくいくかわかりませんが、手動で安全にセットアップしたときのメモを書いておきます。

# Android Studio のインストールと設定

下記を見てインストールします。

– [Android Studio のインストール](https://developer.android.com/studio/install?hl=ja)

## SDK Manager で必要なツールをインストールする

インストールできたら、起動して SDK Manager を開きます。

![image.png](https://qiita-image-store.s3.

元記事を表示

flutterでOAuthのログイン機能を実装

flutterでOAuthなログイン機能を実装しました。

実装内容とシーケンスは下記の記事を参考にさせていただきました。
https://dev.classmethod.jp/articles/persistent-login-for-mobileapp/

また、バックエンド側は下記の記事を参考にしてください。
https://qiita.com/yufuku/items/b2b2b4d2eb46dba0476c

完成イメージは次になります。
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680074/3c9714c9-047b-dcb8-2fb4-aaa08fe1666c.gif)

コード全体は下記になります。
https://github.com/fu-yuta/authentication_frontend/tree/ce529eb931e8892fc003672540e792577abf13b7

#環境
“`shell
$ flutter

元記事を表示

[Kotlin] 加速度センサーで歩数カウント

###はじめに
学校の卒業制作でjavaの歩数によってgifが変わるアプリを作ったので、kotlinでリメイクしました。
Androidには歩数計センサーもありますがAndroid10以上かつ使用できる端末が限られていたので加速度センサーを使用しました。

歩数計算の方法はこちらの記事を参考にさせていただきました。
[[Android]歩数計アプリを作ってみた。](https://qiita.com/TsubasaSato/items/f83778965ae179fd3baf)

##**歩数カウント**
Android端末には3軸の加速度センサーが存在します。
この3軸のセンサーから得られる加速度を合成した値の増減を利用し、歩数をカウントします。

**3軸の加速度の合計**
![無題78_20211207184705.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1520502/2727c345-cb77-971c-e05d-44a2bf3d56b0.png)

“`
val sumAccele

元記事を表示

AndroidのJavaで任意関数を一定間隔で実行する方法

⚠ 昔書いた記事の流用です。

“`java
final int delayMilli = 10000; // 定期実行間隔をミリ秒で指定する.
final Handler handler = new Handler();
final Runnable r = new Runnable() {
@Override
public void run() {
// f(); 定期実行したい関数.
// invalidate(); 再描画する場合は,これを有効にする.
handler.postDelayed(this, delayMilli);
}
};
handler.post(r);
“`

元記事を表示

Android/iOSで他アプリに簡単な値を送る方法

# はじめに
AndroidやiOSアプリを開発していて、自分のアプリから他のアプリを開きたい、簡単なコードを送って連携したい、そういうことはないでしょうか?実装していてちょっと苦労したのでメモがわりに残しておこうと思いました

# Android
![Android-App-Transition.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/429ba76f-4a72-e91f-4391-91a27d361e1c.gif)

## 実装
### 送信側でやること

“`MainActivity.kt
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
// 送信先アプリに送りたい文字列
putExtra(Intent.EXTRA_TEXT, “C9C7BFC1-6397-4681-96CE-9C1BC1B

元記事を表示

Hiltを使ってみよう

今回の記事は[レコチョク Advent Calendar 2021](https://qiita.com/advent-calendar/2021/recochoku)の7日目の記事となります。

# はじめに

はじめまして!株式会社レコチョクでAndroid開発を担当しています、入社2年目の杉山です!
音楽が好きで普段からよくライブに行っています。特にアイドルが好きでメジャーアイドルからインディーズアイドルまで様々なグループを見たりしています!

そんな僕からはAndroid開発に参加するようになって触れたDIライブラリの**Hilt**について記事をまとめたいと思います!

# Hiltって、DIって何?
そもそもHiltってなんぞやって話になりますが、HiltはAndroid用の依存関係をインジェクションするライブラリになります。いわゆるDIライブラリと呼ばれるものです。
## DIって?
ある程度の規模のプロジェクトになると、「あるクラスAの実装を行う際、他のクラスBのオブジェクトが必要」という場面に遭遇することが増えます。この関係を**依存関係**と呼びます。
するとAの内

元記事を表示

【Flutter】FirebaseDynamicLinksで招待機能を実装する

# Firebase Dynamic Linksとは
Firebaseが提供するディープリンクの機能です。ディープリンクとは1つのURLでAndroid/iOS/WEBでの遷移先を振り分けたり、そのあとアプリにパラメータを渡すことも出来ます。
[Flutter大学](https://kboyflutteruniv.com/)の共同開発で作成したCOUPLE TODOはこのDynamic Linksを使って、夫婦同士の紐づけを行っていますので、そのやり方を紹介します。

https://couple-todo-product.web.app/

:::note warn
このコードの例は多少古い書き方も含んでいますのでご承知おきください。(RaisedButtonなど)
:::

# Flutterでの実装
Flutterあるあるですが、公式のドキュメントには実装例が載っていないです。

https://firebase.google.com/docs/dynamic-links/

そしてFlutterFireというFlutterでFirebase使う時の実装例などが書いてあるドキ

元記事を表示

[Android]OkHttpのタグ機能を活用する

[OkHttp](https://github.com/square/okhttp) では `Request` オブジェクトを作成するときに「タグ」を設定することができます。

このタグについて実用例と共に紹介したいと思います。

また、タグは [Retrofit](https://github.com/square/retrofit) でも設定することができるので、この部分についても紹介します。

# タグを使った認証情報の設定

例えば何らかの Web API で、認証が必要なものとそうでないものがあったとします。

認証情報はヘッダで指定する場合、OkHttp でリクエストするなら以下のように記述できます。

“`kotlin
val request = Request.Builder()
.url(“…”)
.addHeader(“Authorization”, “…”) // 認証情報を設定.
.build()

val response = okHttpClient.newCall(request).execute()
“`

このように

元記事を表示

【Jetpack Compose】スロットという考え方

## はじめに

本記事は [with Advent Calendar 2021](https://qiita.com/advent-calendar/2021/with) 6日目の記事です。

こんにちは [with](https://with.is/welcome) でAndroid エンジニアをしている石田です。withでは Jetpack Compose を段階的にプロダクトに導入しています。

本記事では、Jetpack Composeで知っていると便利なスロット(Slot)という考え方を紹介します。

## スロットとは

[スロット](https://www.weblio.jp/content/%E3%82%B9%E3%83%AD%E3%83%83%E3%83%88)は **「投入口」** という意味です。Jetpack ComposeではUI部品を定義して共通化できるのはもちろんのこと、スロットによりUI部品の組み合わせ方を共通化することもできます。

例を見るのが早いと思うので、2つ紹介します。

## 例1: 注文のチェックアウト

こんな画面を作ってくださいと

元記事を表示

Jetpack ComposeのTextで表示されている文字列の行数を取得する

TextのonTextLayoutのラムダに入ってくる `TextLayoutResult` の `lineCount` を使用すると表示される文字列の行数を取得することが出来る

“` kotlin
Text(
onTextLayout = { result ->
Timber.d(“onTextLayout=${result.lineCount}”)
}
)
“`

なので、rememberの値と `lineCount` の値を使えば改行されるような文字列が入ってきたら非表示にするとかが出来る

“` kotlin
@Composable
fun Hoge(
text: String,
) {
var isMultiline by remember { mutableStateOf(false) }
// 改行されたら非表示にする
if (isMultiline.not()) {
Text(
text = text,
onTextLayout = { r

元記事を表示

OTHERカテゴリの最新記事