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

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

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

元記事を表示

【Android Wear】Wearエミュレータとスマホ実機の接続方法

# はじめに
Wearエミュレータ(Android Wear)とスマホ実機(Android)の接続方法について記述。

# 手順

### Wearエミュレータ側の設定
以下の方法でADB Debuggingを有効化する。Wear OS API 30の設定を記述。
`Settings -> System -> About -> Versions -> Build numberを7回タップ`
`Settings -> Developer options -> ADB debuggingがONになっていることを確認`

### Wearとスマホの接続
スマホとPCをUSB接続。
`adb -d forward tcp:5601 tcp:5601`をTerminal上に入力。

### スマホ実機側の設定
Wear OSアプリを起動し、エミュレータと接続。

参考サイト:

Android WearのエミュレータをAndroid実機本体に接続する

元記事を表示

Android HTTP通信を行う(HttpUrlConnection)

# はじめに
学習記録。
Android開発で外部サーバーのCSVファイルやJSONを参照するためにHTTP通信を行う必要があったのでメモとして残す。

# 前提
アプリをインターネットに接続する許可を与えるためmanifestタグ内に以下2つのタグを追加。
“`java:AndroidManifest.xml


元記事を表示

Jetpack ComposeとHiltによるDIのお勉強備忘録

インターンなどに参加し,DIの勉強の必要性に駆られたため,ここにメモを残します.あなかしこ.

## 前提: なぜDIが必要なのか[[1][2]](#参考文献)
– 複数箇所で同じクラスのインスタンスを使うとき
– 同じ生成コードを複数書く必要がある.
– 一つのオブジェクトの中で,他のオブジェクトをインスタンス化すると.
– 生成元は,生成先を知る必要があるから依存性が高くなる.
– 単体テストができなくなる場合がある.

### MVVMの場合
– Viewは,ViewModelの生成方法(依存関係)を知る必要がある.
– ViewModelは,Modelの生成方法を知る必要がある.

ということらしい
__理解を深めるために,実際にアプリを作ってみようというところ.__

## はじめに

### アプリ開発上の参考資料
DIを利用している参考資料(サンプルアプリ)がないか探した結果…

– __Jetpack ComposeによるAndroid MVVMアーキテクチャ入門__ [[1]](#参考文献).
こちらはMVVMアーキテクチャの理解を目

元記事を表示

OTHERカテゴリの最新記事