- 1. 【Android Wear】Watch Faceの作成
- 2. CircleCI で android-docker executor を Renovate でアップデートする
- 3. 【Termux】AndroidへDenoとCode-Serverを導入する方法
- 4. AndroidアプリでPythonライブラリを使う 【Chaquopy】
- 5. Android で Singleton を使う場合の注意点
- 6. Lottie-Androidを使用する方法
- 7. FlutterのunittestをgithubActionsにて実行してみた
- 8. 【JetpackCompose】”いい感じの”カウントアップアニメーションを作ってみた
- 9. Androidでの推論実行方法 Python編 【PyTorch】
- 10. Androidでの推論実行方法 Java編 【PyTorch】
- 11. Androidデバイス(非スマホ)のためにAnsibleができること
- 12. Compose探求記(その1)
- 13. Delphi 製アプリを WSA (Windows Subsystem for Android) で動作させるための要点
- 14. AndroidStudioのコードコンプリートで大文字小文字関係なく候補を出したい
- 15. 【Android】GPSを利用する方法【kotlin】
- 16. 【Android】GroovyからKTSへの移行やってみた【KTS】
- 17. 【Android】RecyclerViewでアイテムが中心に来るように自動スクロール
- 18. iPhoneやAndroidでnode.jsを実機テストする方法
- 19. 急にビルドエラーになった時に試してみて欲しいこと
- 20. Kotlinスコープ関数(let,run,also,apply)の使い方について考えてみる
【Android Wear】Watch Faceの作成
# はじめに
xmlを用いたWatch Faceの作成方法について紹介。
Android StudioのNew Project→Watch Faceでのプロジェクト作成だと、非推奨クラス(`CanvasWatchFaceService`)を使用することになるので1から作成した(2022/09/27時点)。# 作成方法
### 依存関係の宣言
`build.gradle(:app)`ファイルにWatchFace用の依存関係を追加
“`build.gradle
dependencies {
implementation ‘androidx.wear.watchface:watchface:1.1.1’
}
“`### レイアウトの作成
WatchFaceに表示するレイアウトの作成
“`custom_watch_face.xml
CircleCI で android-docker executor を Renovate でアップデートする ![Notes_220926_185151-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359439/6ade740f-5c92-6f8e-9885-55aec76602e9.jpeg)
CircleCI で Android の CI を行うときは 公式のブログ記事にもあるように、
たいてい謹製で用意されている `circleci/android` Orb を使用すると思います。https://circleci.com/ja/blog/building-android-on-circleci/
https://circleci.com/developer/ja/orbs/orb/circleci/android
ところで、この Orb にはバージョンが切られているわけですが、
その更新は [Renovate](https://www.mend.io/free-developer-tools/renovate/) を導入して自動化することで
忘れることもなくチェックの手間もなく楽にできます
【Termux】AndroidへDenoとCode-Serverを導入する方法
最近、久しぶりに[Termux](https://termux.dev)を触ってみたのですが、新しい発見があったので纏めてみました。
ここ半年ほど、公私ともに主な開発プラットフォームとして[Deno](https://deno.land)を据えています。
最初はTypeScriptもサーバーサイドも苦手意識がありましたが、使い込むうちに段々とそのポテンシャルと手応えを感じるようになりました。
今ではイチバンのお気に入りプラットフォームです。はたまた[Code-Server](https://code.visualstudio.com/docs/remote/vscode-server)は、VSCodeのバックエンドとフロントエンドを完全に分離し、ウェブブラウザを介してリモートから扱えるようにしたものです。
同様にウェブブラウザからVSCodeを扱える[vscode.dev](https://vscode.dev)もありますが、こちらはコマンドラインの実行などクライアントマシンに依存する処理は行えません。せっかくTermuxも触ったことだし、これらをAndroidもといTerm
AndroidアプリでPythonライブラリを使う 【Chaquopy】
# 概要
Chaquopyを使ってJava/Kotlin製Androidアプリの一部をPythonで実装し、Pythonライブラリを使う方法を紹介します。
本記事ではNumPyで乱数を生成し、Kotlin製Androidアプリの画面に表示します。# Chaquopyとは
[Chaquopy](https://chaquo.com/chaquopy/)とは、Java/Kotlin製AndroidアプリにPythonの実装を組み込むことができるSDKです。SciPyやPyTorchなど豊富なライブラリに対応しており、JavaやKotlinで扱いにくい処理をPythonで記述できます。
以前はライセンスの制約がありましたが、[2022/07/24にオープンソース化し](https://chaquo.com/chaquopy/chaquopy-is-now-open-source/)、MITライセンスとなったことで使いやすくなりました。
# 使い方
## 環境– MacBook Pro (2020年モデル / BigSur 11.6.4)
– Android Studio
Android で Singleton を使う場合の注意点
# はじめに
Singleton はとても分かりやすくて便利なデザインパターンです。ですが Android アプリの開発では他のプラットフォームにはない事情があるため、それを理解することなく Singleton を使うと痛い目を見ることがあります。その Android 特有の事情を書きたいと思います。
# Android 固有の事情とは?
Singleton を利用する上で問題になると思われる Android 特有の事情は、私が把握している限り大きく二つあります。
* クラスのアンロードで静的変数が初期化される可能性がある
* プロセス終了後もアプリの状態が維持される可能性がある前者は滅多に発生しない現象なのでほとんどの場合問題になりませんが、後者は比較的頻繁に起こります。
ですので以降では、現実的にはあまり問題にならない前者の現象について軽く説明し、その後でより影響の大きい後者の現象について掘り下げます。# クラスのアンロードで静的変数が初期化される可能性がある
Android の VM はクラスをアンロードすることがあり、その結果 static 変数に記憶している
Lottie-Androidを使用する方法
今回はLottie-Androidを使用してアニメーションの実装する方法です。
綺麗なアニメーションを簡単に実装することができます。
ただし、アニメーションファイルは別途必要です。
# Lottie for Androidの導入
[Lottie for Android](https://github.com/airbnb/lottie-android)
を導入します。“` build.gradle
dependencies {
implementation “com.airbnb.android:lottie:${latest.version}”
}
“`# アニメーションファイル
res.rawフォルダにアニメーションファイルを追加する。
今回はlottie_animationと命名。# LottieAnimationView
“`lottie_animation_view.xml
FlutterのunittestをgithubActionsにて実行してみた
# 結論
ymlファイルに書くのは一旦これで大丈夫そう
タイミング等は各々プロジェクト等に合わせて変更してください
githubactionsの公式ドキュメントも確認してみてくださいhttps://docs.github.com/ja/actions
“`dart.yml
name: Dart
on:
push:
branches: [ “master” ]
pull_request:
branches: [ “master” ]
jobs:
build:
runs-on: ubuntu-latest
steps:
– uses: actions/checkout@v3
– name: Install Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
– name: PubGet
run: flutte
【JetpackCompose】”いい感じの”カウントアップアニメーションを作ってみた
## やりたいこと/できること
Webサイトなどでよく見かける「加速したあと減速するカウント(下記動画を見ていただいたほうが分かりやすいと思います)」をAndroidでも実装する方法について説明します。
サンプルとして、ボタンを押すと各Interpolator(下記解説)に応じたカウントアップアニメーションを開始する内容を実装します。
![sample_resize.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78138/45ce57c7-5733-88c0-3587-52e44126f0cd.gif)### 環境
material3 : 1.0.0-beta03
Kotlin : 1.7.0
JetpackCompose : 1.2.0## ソースコードと説明
### ValueAnimationを使う
Androidには様々なアニメーションの種類がありますが、値の増減をアニメーションさせるためにはValueAnimationを使います。ValueAnimationではint、floa
Androidでの推論実行方法 Python編 【PyTorch】
# 概要
既存のJava製AndroidネイティブアプリにPyTorchベースの推論処理を実装する必要があったので、備忘として調べた結果をまとめます。
1. [PyTorch Java APIで推論処理を記述する](https://qiita.com/ta-sr/items/e9b83743d182dc2a8ed4)
2. Python(Chaquopy)で記述した推論処理を呼び出す(本記事)# 環境
ハードウェア: SHARP SH-T01
プロセッサ: Snapdragon 665 (2GHz & 1.8GHz – Octa)
メモリ: 4GB
OS: Android 12# 推論実行方法
推論処理をJavaやC++で書き直すのは大変なので、Pythonで書いた処理をそのまま使いたいという場合、ライブラリ([Chaquopy](https://chaquo.com/chaquopy/))を使ってJavaからPythonスクリプトを呼び出すことができます。
※[Kivy](https://kivy.org/#home)などAndroidアプリ全体をPythonで開発
Androidでの推論実行方法 Java編 【PyTorch】
# 概要
既存のJava製AndroidネイティブアプリにPyTorchベースの推論処理を実装する必要があったので、備忘として調べた結果をまとめます。
1. PyTorch Java APIで推論処理を記述する(本記事)
2. [Python(Chaquopy)で記述した推論処理を呼び出す](https://qiita.com/ta-sr/items/984779da293432f58ee1)# 環境
ハードウェア: SHARP SH-T01
プロセッサ: Snapdragon 665 (2GHz & 1.8GHz – Octa)
メモリ: 4GB
OS: Android 12# 推論実行方法
PyTorch Java APIを使うと、Javaクラスにそのまま推論を記述することができます。
“`Java:https://github.com/pytorch/android-demo-app/blob/master/HelloWorldApp/app/src/main/java/org/pytorch/helloworld/MainActivity.java
// i
Androidデバイス(非スマホ)のためにAnsibleができること
普段、サーバーやネットワーク機器の運用管理をAnsibleで自動化していて、Androidデバイスの運用もAnsibleを利用したい、なんてことが有ったりすると思います。
Ansibleが、エージェントレスで操作するデバイスには、SSHとPythonが入っててほしいんですが、AndroidデバイスにはSSHの口はあるけど、Pythonは使えないみたいなケースがしばしばあるようです。
そんなケースで、どんなことができるか試してみたいと思います。
**が、用意した検証環境が非常にイケてないので、ご自身のデバイスで試してみる際の手順の参考にでもなれば是幸いです**
### [結論]
まず、結論です
– rawモジュールしか使えない(シーケンシャルにコマンドをブン投げる形式、非状態宣言)
– rawで、amコマンド等を打って操作できる
– gather_facts: falseを設定する必要がある
– environmentキーワードはraw非対応のため、環境変数がおかしい場合はrawでexportコマンドとかを打ち込む### [環境]
Ansibleマシン: RHEL8 Work
Compose探求記(その1)
# はじめに
[Jetpack Compose](https://developer.android.com/jetpack/compose) 関して、まったりと調査・実験しつつ、その過程を綴ってみようと思います。# 今回のお題
[State and Jetpack Compose](https://developer.android.com/jetpack/compose/state) では、Compose での状態の扱いについて説明されています。今回は、その中のサンプルコードをベースに考察してみようと思います。
# Stateful versus stateless
Composable が状態を持つかどうかについては [Stateful versus stateless](https://develop
Delphi 製アプリを WSA (Windows Subsystem for Android) で動作させるための要点
# はじめに
Insider Preview 版でない Windows 11 でも **WSA (Windows Subsystem for Android)** が利用可能になりました。
– [ついに日本でもAndroidアプリがWindows上で動作 ~「Amazon アプリストア」プレビュー版が一般提供 (窓の杜)](https://forest.watch.impress.co.jp/docs/news/1434767.html)
– [Windows 11で動くAndroidアプリ ~ その背景にあるもの (ITmedia)](https://www.itmedia.co.jp/news/articles/2106/27/news023.html)# WSA (Windows Subsystem for Android)
WSA (Windows Subsystem for Android) は Android アプリケーションを Windows 11 デバイスで実行できるようにするものです。
– [Android™️ 用 Windows サブシステム (l
AndroidStudioのコードコンプリートで大文字小文字関係なく候補を出したい
`Preferences | Editor | General | Code Completion` → `Match case` のチェックを変える。
新たにインスタンス作るときとかクラス名入力時に大文字入力しなくて済むので、チェックを外すのがおすすめです。
![スクリーンショット 2022-09-23 14.43.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168872/85f1d282-1e91-c873-ffd0-ef2d21fe0abf.png)
# onの場合
`First letter only` を選択している場合は、一文字目が同じものが候補に出てくる。
`All letters` を選択している場合は、全文字同じものだけ候補に出てくる。# offの場合
文字種があっているが候補に出てくる。
【Android】GPSを利用する方法【kotlin】
GPSでは場所を移動するたびに緯度情報がコールバックされ、情報を受け取ることができます。
そのためにコールバックに必要なメソッドを用意してインスタンスを渡します**LocationListener**インターフェースを継承し、4つのメソッドをoverrideすることで利用可能になります
# onLocationChanged
“`
override fun onLocationChanged(location: Location?) {
}
“`
位置情報が変更された時に呼ばれる
# onStatusChanged
“`
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
}
“`
GPSが利用不可、利用可能になった時に呼ばれる
# onProviderDisabled
“`
override fun onProviderDisabled(provider: String?) {
}
“`
プロバイダを使用不可にした時に呼ばれる
# on
【Android】GroovyからKTSへの移行やってみた【KTS】
# はじめに
最近[nowinandroid](https://github.com/android/nowinandroid)や[conference-app-2022](https://github.com/DroidKaigi/conference-app-2022)といったとってもありがたいサンプルプロジェクトが公開されたけれど、どちらもGroovyではなくktsでビルド周りを実装していたね。
[公式のドキュメント](https://developer.android.com/studio/build/migrate-to-kts?hl=ja)を読んでみると> Kotlin の方が可読性が高く、コンパイル時のチェックと IDE サポートが優れているため、今後、Gradle スクリプトの記述には Groovy よりも KTS が優先されます。
と書いてあるので、今後はktsでビルドするのが主流になるかもしれないね。
まだktsの方がビルドが遅くなってしまうらしいけど、これからどんどん改善されてKotlinで読みやすいビルドロジックが書けるようになったらとても素敵。ただ
【Android】RecyclerViewでアイテムが中心に来るように自動スクロール
# はじめに
RecyclerViewでのアイテム一覧画面で、スワイプ後に指を離した時、アイテムが中心に来るように自動スクロールする処理を作成。
ViewPager2でも作成可能だが、今回はRecyclerViewで作成。# 方法
アイテムが中心に来るように自動スクロールするには、`LinearSnapHelper`を使用。
両端のオフセットは、`ItemDecoration`を使用。
中心アイテムが変更されたことを検知するためには、`OnScrollListener`を使用。
プログラムのポイントとしては、`MainActivity.kt`内の処理。まず、カードビューのレイアウト。テキストビューを配置。
“`list_item.xml
iPhoneやAndroidでnode.jsを実機テストする方法
めっちゃ簡単。メモ書きです。
・スマホとPCを同じwifiにつないで、
・PC側でnpm run serveして、
・スマホ側で(http://IPアドレス:ポート番号)
をブラウザ表示するだけ
例)http://192.1.1.12:8080/
急にビルドエラーになった時に試してみて欲しいこと
# 初めに
今回は`GitHub`からプルして来た時や、デバッグ中に起きる急なビルドエラー時にやってみると効果的なものを紹介していきます。
### 本文
***一つ目***が***キャッシュの削除***です。
これは定番だとは思いますが、`Android Studio`のメニューから
File->Invalidate Cachesを選択し全てにチェックを入れて実行のボタンを押すと`AndroidStrudio`のキャッシュを削除した上で再起動をかけてくれるので一度リセットされた状態になるのでおすすめです。***二つ目***が***gradleのクリーン***です
該当プロジェクトを`AndroidStudio`で開いた状態で`AndroidStudio`下部にあるターミナルメニューから下記のコマンドを実行します。
“`terminal
./gradlew clean assembleビルドフレーバー
“`
こうすることで`gradle`をクリーンして該当のビルドフレーバーを実行してくれるので1つ目で紹介したやり方でビルドできない場合でも意外と直ったりします。
### 最後に
よ
Kotlinスコープ関数(let,run,also,apply)の使い方について考えてみる
## はじめに
Kotlinの標準ライブラリにはスコープ関数という関数が存在します。
自分自身、JavaからKotlinに入ったのでそれなりの文法などはすんなりと理解できたのですが、スコープ関数についてはJavaには無いので理解が薄いままなんとなくで使用していました。
今回理解を深めるために少し調べてみたので備忘録を含めまとめたいと思います。## 5つのスコープ関数
Kotlinには5つのスコープ関数が用意されています。
– let
– apply
– run
– also
– withこれらの関数は、基本的に全て同じことを行いますが、それぞれ特徴がありますのでまとめます。
(`with`に関してはほとんど使用機会がありません(自分は)ので今回は割愛させていただきます。)## let
まずは使用頻度の高い`let`
| スコープ関数名 | 対象オブジェクト | 戻り値 |
|:———–|:————|:————|
| let | it | 最後の実行コード |“`kotlin
val f