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

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

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

元記事を表示

Material 3で大きく変わったTopAppBarをJetpack Composeで実装してみる

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

Material 3 で TopAppBar のデザインや挙動が変わりました。
Jetpack Compose の Material3 対応版である `androidx.compose.material3` を使用してガイドラインに合わせた実装例をいくつか見ていこうと思います。

※`androidx.compose.material3` は 1.0.0-beta02 時点の内容なので、ライブラリの更新で内容が変わる可能性もあります。

## TopAppBar のパターン

Material 3 では TopAppBar に以下の 4 つのパターンがあります。

– Center-aligned
– Small
– Medium
– Large

それぞれの実装例を見ていきましょう。

### Center-aligned

![Center-aligned top app bar imag

元記事を表示

Jetpack Compose+Coilで角丸の画像を表示する

Jetpack Compose + Coilで画像をダウンロードしてきて表示する場合、ImageにModifier.clipやbackgroundで角丸のshapeを指定してもダウンロード後の画像が角丸にならなかったので、coilのbuilderでtransformationしてあげると角丸の画像を表示できた。
ついでにDensityを使ってdp指定のPxサイズで角丸にしておいた。

“` kotlin
Image(
painter = rememberImagePainter(
data = url,
builder = {
transformations(
with(LocalDensity.current) {
val r = 10.dp.toPx()
RoundedCornersTransformation(
topLeft = r,

元記事を表示

【Android Studio】Gradleでの Jackson の追加方法(Java)

Android Studioを使用した`Jackson`の使用方法について調べたのですが、実装までに四苦八苦したので、メモを残しておきます。

#リポジトリ
`Jackson`が公開されているページです。
ページ内の取得したいバージョンの「Gradle」の部分をコピーします。
jackson-core
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
jackson-databind
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
jackson-annotations
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations

####使用するバージョンの選択
a010b5d5-04f0-c700-22a2-08b424747a4</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>Android</div>
<div class='tag-cloud-link'>Jackson</div>
<div class='tag-cloud-link'>AndroidStudio</div>
<div class='tag-cloud-link'>android開発</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/NagaJun/items/9099e721aeeb7e31e322'>元記事を表示</a></div>
<h3 id=GitHub Actions で .kts ファイルを実行して APK の差分を抽出してみた

この記事は [ゆめみ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/yumemi) の 5 日目の記事です。

## はじめに

みなさんは、Kotlin のスクリプト言語としての機能を使ったことはありますか?

Android アプリの開発で `.kts` という拡張子のファイルを Gradle で使っているよ!という方は、ちょっぴりいるのかなと思います。

以前は、サポート機能がまだまだ少なく、IDEA のコード補完も効かないなどありましたが、最近、どんどん強化・改善がされ、少しずつ使いやすくなってきました。

GitHub Actions に Kotlin がプリインストールされていて、せっかくなので APK の差分を抽出してみました :muscle:

### 成果物

https://github.com/blendthink/android-diff-action

※ GitHub Marketplace へも近日リリース予定です :v:

### 実際の動作

https://github.c

元記事を表示

GitHubのmavenにAndroidのライブラリをリリースしてみる

# はじめに
株式会社ピー・アール・オーのアドベントカレンダー5日目です。

前回は[iOS用のフレームワークをCocoaPodsに公開する](https://qiita.com/pro_rei/items/00283f4e0fa1716456fc)手順を書きました、今回はAndroid用ライブラリをmavenに公開してみます。

今回はGitHubのpackages機能を利用してライブラリをリリースします。

# 事前準備
– [Android Studio](https://qiita.com/pro_rei/items/00283f4e0fa1716456fc)をインストールする
– GitHub上にAndroidライブラリ用のリポジトリを用意する

# maven-publishプラグインを有効する

今回はAndroid Studioが提供するMaven Publish Pluginを利用してライブラリをリリースします。まずはライブラリモジュールの`build.gradle`にmaven-publishを有効します。

“`
plugins {
id ‘maven-

元記事を表示

何故Modifierは最初のデフォルト引数でないといけないのか

Jetpack Composeでコード書いていると、次のような警告を見かけることがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53293/4f117c7f-e050-b9b3-84fc-ee4c3173d6ab.png)
Modifier parameter should be the first optional parameter

Modifierは最初のデフォルト引数であるべき、という話ですね。
例えば次のようなコードを書いた場合に上記の警告が出ます。

“`kotlin
@Composable
fun SampleComposable(
param: Boolean,
optionalParam: String = “First optional param”,
modifier: Modifier = Modifier,
)
“`

そしてこの方針はModifierのドキュメントにも書かれています。

https://developer.and

元記事を表示

【Android】 Jetpack Composeでドラッグ&ドロップの並び替えを実現する 〜ライブラリに頼って〜

この記事は、[and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory)の **5日目** の記事です。
昨日は [@y-okudera](https://qiita.com/y-okudera) さんの「 [データの暗号化・復号とSwiftでの実装の仕方について改めて調べてみた](https://qiita.com/y-okudera/items/d52d3c1b3fb82176c78a) 」でした!

# ドラッグ&ドロップで並び替えしたい
リスト表示において、アイテムを長押しするとドラッグ&ドロップで並び替えができる、というのは結構あるあるな機能ではないでしょうか?

RecyclerViewでは[ItemTouchHelper](https://developer.android.com/reference/androidx/recyclerview/widget/ItemTouchHelper)を使うことで、ドラッグ&ドロップでの並び替えを実装することができま

元記事を表示

Nexus 6PにLineageOSをインストールする

# はじめに

使わなくなったGoogle Nexus 6Pがあるので、LineageOSをインストールして有効利用する。

# まずは情報収集

最初にチェックするのはみんな大好きxda-developersなのだ。
Huawei Nexus 6P
https://forum.xda-developers.com/c/huawei-nexus-6p.4744/

どのカスタムROMをインストールするか小一時間ほど悩む。
List of custom Android distributions
https://en.wikipedia.org/wiki/List_of_custom_Android_distributions

xda-developersのフォーラムでそれなりに盛り上がっているLineageOSをインストールすることにする。
LineageOS
https://github.com/LineageOS

# 作業の前に

**端末が壊れたり起動しなくなったり爆発したりしても、筆者は一切関知しない。**

Googleの端末は工場出荷時のイメージが公開されているので、う

元記事を表示

OTHERカテゴリの最新記事