Android関連のことを調べてみた

Android関連のことを調べてみた

AndroidアプリのIntentの書き方

最近ChatGPT先生に教えて貰いながら自作Androidアプリを作っていました。
長らくWindowsやちょっとLinuxに慣れ親しんだ体にはAndroidのファイルアクセスが理解できなくて大変でしたが何とか動かせました。

最後の最後で躓いた部分をメモ

正しいコード
“`



【Android】Jetpack Compose楽々体験 文字列&画像配置編

# いろいろと楽にしてくれるjetpack compose
開発でfragmentやらを作った上にxmlでレイアウトを崩さないようにいろいろ調整するのが面倒でした。
おまけにその分時間をとられて作業がなかなか進まないために残業をしなければ終わらないっ・・・!
そんな時に出会ったのがこのjetpack composeです。
少し触ってみた感想は、**「kotlinファイルだけで画面を生成できるのは本当に楽!」** でした。

## 作ったもの
画面がかなり汚くなっていますが、文字列操作のテスト画面を作成しました。導入は`Empty Compose Activity`をプロジェクト時に選択するとgradleの設定をしなくてもよくなるので楽です。ただし、生成時に自動でついてくるactivity_main.xmlは使わないので削除します。
色や画像設定、文字列はリソースファイルからとってきています。

元記事を表示

[Android] Hiltを使ったテスト中のデータベース差し替え方法

## はじめに
ComposeのUIテストを行う際に、DBをin memoryに差し替えたいなと思って調べた結果を簡潔にまとめました!

## Custom test runnerの設定
HiltでのDB差し替えをテストで使うには専用のHiltTestApplicationを使う必要がある。なのでCustomTestRunnerを設定、gradleでそれを使うように指定する。

“`kotlin
class CustomTestRunner : AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, className: String?, context: Context?): Application {
// HiltTestApplicationをテスト用のApplicationクラスとして使用
return super.newApplication(cl, HiltTestApplication::class.java.name, context)

元記事を表示

Apple Silicon + Android Studio2023.1 + Android OS9環境でのアプリインストール問題の解決

### 問題
MacのApple Silicon端末において、Android Studio 2023.1(SDK Platform Tools 34.0.5)の最新版を使用し、Android OS 9を搭載した端末にアプリをインストールする際、Studioから「Run」する方法やADBコマンドを使用した方法でインストールができないという問題が発生しました。ビルド自体は成功しているようですが、その後のインストールに問題が生じています。なお、Android 12や13ではこの問題は発生していません。

### 問題が発生した環境
端末: Mac(M2 Pro)Apple Silicon
Mac OS: Sonoma 14.2.1
エディター: Android Studio 2023.1(SDK Platform Tools 34.0.5)

### 参考になった情報元
https://issuetracker.google.com/issues/270205252

### 解決方法
ADBコマンドが使える前提となりますが、Google Issue Trackerに報告されているよう

元記事を表示

Vulkan Extension Layer を使う Android アプリを RenderDoc でデバッグする

## 今回の結果の git コミット
fork した RenderDoc のリポジトリにコミットを追加してある.

https://github.com/James2022-rgb/renderdoc/commit/81e63e382068b9d8fffe79c69e012e5455a29226

後述の手順でビルドを行うと, VEL の `*.so` がパッケージングされた `org.renderdoc.renderdoccmd.arm64.apk` が生成される.

この APK を下記の手順で RenderDoc が使用するようにすると, VEL を使った RenderDoc キャプチャのリプレイが可能になる.

## 導入

### Vulkan Extension Layer (VEL)
Android に限らず Vulkan アプリで, ドライバがネイティブで対応していない拡張を用いるために,
polyfill layer である [Vulkan Extension Layer (VEL)](https://github.com/KhronosGroup/Vulkan-E

元記事を表示

Android Studio をインスト-ルしています。

Android Studio をインスト-ルしています。
インストールし始めて自分で本を読ながら時には自分でアプリを作ったりして約1年経ちます。
おかしくなったので、再インストールしています。

途中でSDKを指定するパスはどこか聞かれます。
それから先は進みませんがそれを無視すると

Unable to continue until an Android SDK is specifiedSelf-causation not permitted
Unable to continue until an Android SDK is specified

と言うメッセ-ジが表示されこれより先に進みません。訳すると

Android SDKが指定されるまで続行できない自己因果関係は許可されていません
Android SDKが指定されるまで続行できません

と言うことですが、どうしたら良いのでしょうか?

もう完全アンインストールしてインストールしています。何回も同じ結果です。

元記事を表示

ReactNativeでアプリのシステム設定画面に遷移する

起動しているアプリに関わるシステム設定の画面へ遷移する方法を記載していく。

公式ドキュメントを参考にする。

https://reactnative.dev/docs/linking?language=typescript#opensettings

## 内容
`Linking`ライブラリーを用います。
`Linking`はアプリのリンクを操作するためのインターフェイスを提供しています。

### ライブラリーをインポート
“`tsx
import { Linking } from ‘react-native’;
“`

### アプリの設定画面に遷移する

“`tsx

元記事を表示

【Android】動かしたViewをフェードアウトさせる【Kotlin】

# はじめに
前々回の [【Android】Viewをドラッグして移動させる【Kotlin】
](https://qiita.com/Tsubasa12/items/c0287069b5e8666c2de7)前回の [【Android】ドラッグしたViewを回転させる【Kotlin】
](https://qiita.com/drafts/4178c27c469ac3bc2c0d/edit)
に引き続き、今回はViewをフェードアウトさせるアニメーションを作っていきます。

# 実践

“` diff
+ lateinit var textView: TextView

@SuppressLint(“ClickableViewAccessibility”, “MissingInflatedId”)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_

元記事を表示

Androidアプリの制作フロー概要

昨今生成AIのおかげで個人開発のハードルが下がり、何かアプリを作りたいと思ってる人も多いと思います。

なのでAndroid向けアプリの概要(アプリ開発に必要なサービス等)について簡単に書いてみます。

– AndroidManifest.xml: アプリの構造やメタデータ、コンポーネント、パーミッションなどを定義するマニフェストファイルです。プロジェクトのルートディレクトリにあります。
– java: JavaやKotlinのソースコードファイルが入っているフォルダです。UIのコントローラーとして機能します。
– res: リソースファイルが入っているフォルダです。画像や音声、文字列、レイアウトなどが含まれます。
– drawable: 描画可能なリソースファイルが入っているフォルダです。ビットマップやベクター、シェイプ、レイヤー、ステートなどが含まれます。
– layout: UIのレイアウトを定義するXMLファイルが入っているフォルダです。ビューの階層構造を作成するために、子要素としてウィジェットを追加できます。
– values: 文字列や色、スタイル、テーマなどの値を定義す

元記事を表示

【Android】startActivity(intent) と startActivity(intent) + finish() の違い

## finish() ありか、なしか
### 画面遷移時 `finish()` あり
“`kotlin
val intent = Intent(this@LoginActivity, NextActivity::class.java)
startActivity(intent)
finish()
“`
– LoginActivity が終了し、バックスタックから削除される
– つまり、ユーザーが WebActivity を閉じた後にバックボタンを押すと、アプリは直接アプリのメイン画面や前の画面に戻る

### 画面遷移時 `finish()` なし
“`kotlin
val intent = Intent(this@LoginActivity, NextActivity::class.java)
startActivity(intent)
“`
– この場合、LoginActivity は終了せず、バックスタックに残る
– つまり、WebActivity を終了した後でも、ユーザーがバックボタンを押すと LoginActivity に戻る

## 挙動チ

元記事を表示

[Android] ActivityのTaskについて

## はじめに
画像シェア機能を扱う際にTaskやRecentについて色々と調査した結果を書き残しておきます。

## taskとは
Taskはアプリで使用する一連のActivityの集まりで、内部的にはBackstackを用いてActivityを管理している。
## task内のbackstackの挙動操作
ActivityのlaunchModeを指定することにより、Backstackの挙動を制御できます。設定方法は主に二つある:

1. AndroidManifest.xmlでの設定
2. Intentのフラグを使用した設定
### AndroidManifest.xmlでの設定
AndroidManifest.xml内で以下のように設定する:
“`jsx


“`
以下はlaunchModeのオプション:
* standard
* Backstackの最上部に新しいActivityインスタンスを追加する
* 異なるTask上に新しいActivityインスタンスを生成する

元記事を表示

JetpackComposeでライセンス画面を実装する

# はじめに
今回はAndroidでは必須なライセンス画面をJetpackComposeで実装していこうと思います。
Google公式のAPIだと手動で追加するのが面倒だったり、coockpadさんのライブラリだとアーカイブされてしまっているので少し面倒に感じるかもしれませんが、実はとても便利なライブラリがあるのでそれを紹介しつつ実装していきます
### 本文
まず、今回利用させていただくライブラリは`aboutLibraries`です
実装の方法としてはとても簡単で、まずプロジェクトの`build.gradle`に下記のように記述します
“`gradle:rootBuild.Gradle
plugins {
id(“com.mikepenz.aboutlibraries.plugin”)
}
implementation “com.mikepenz:aboutlibraries-core:${latestAboutLibsRelease}”
“`
次に表示させたいUIが置かれているModuleの`build.gradle`に下記のように記述します
二種類記載していますがMater

元記事を表示

Asahi Linux で Waydroid は動かない

# TL;DR

**Waydroid は Asahi Linux では動きません!**

少なくとも現状, 良くても… 向こう数年? (Linux on ARM がより普及したり対応が進んだら話は変わるのかな)

# Waydroid とは

ggrks.

https://waydro.id

# 環境

– `OS: Arch Linux ARM aarch64`
– `Host: Apple MacBook Pro (16-inch, M1 Pro, 2021)`

ここで `waydroid`[aur](https://aur.archlinux.org/packages/waydroid) を導入しています. 詳しいことは聖書を読みなさい (Waydroid すら Arch 関係は[聖書に丸投げ](https://docs.waydro.id/usage/install-on-desktops#arch-linux)しています).

https://wiki.archlinux.org/title/Waydroid

# 試したこと

## `bind

元記事を表示

【Android】TarsosDSP を 2024.02 時点の Android 開発環境で使ってみる

## はじめに

[ピッチ(音高)](https://www.sii.co.jp/music/try/tuner/01.html)を測るチューナーアプリを作るためライブラリを探していたら [TarsosDSP](https://github.com/JorenSix/TarsosDSP) というものを見つけた。 Android でも使用できるみたいだがかなり古い。TarsosDSP を使用した Android プロジェクトの GitHub リポジトリを見つけたがこれらも古い。

– [mikkipastel/pitchDetector](https://github.com/mikkipastel/pitchDetector)
– [project-spectra/SpectraPitchDetectorAndroid](https://github.com/project-spectra/SpectraPitchDetectorAndroid)

記事を書いている 2024.02 時点の最新の環境でも TarsosDSP を使えるのか検証する。

## 環境

– Android S

元記事を表示

Wear OS 搭載スマートウォッチで曲がった(curved)スクロールバーを表示したい

## 概要
円形のスマートウォッチで縦棒のスクロールバーではなく、画面の淵に沿って曲がった(curved)スクロールバーを表示したかったがうまくいかなかったので試行錯誤した

## 実装
何も考えず `ScrollBar` or `RecyclerView` を配置すると縦棒のスクロールバーが表示された

コードを見る

元記事を表示

Kotlin Flowを使ったポーリングの実装

# はじめに

APIから一定間隔で自動的にデータを取得(ポーリング)して、UIを最新の状態に保ちたいことがあります。タイマーを使う方法もありますが、Flowを使うと安全で効率的な処理が綺麗に書けます。

https://developer.android.com/kotlin/flow?hl=ja

# ポーリング

今回、必要な条件は以下のように考えました。

– 一定間隔でAPIに問い合わせて画面を更新する
– UIコンポーネントが画面に表示されていない時は、更新処理を行わない
– ユーザーが任意のタイミングで更新することもできる

## Flow

Flowは非同期なデータの流れです。このケースでは、定期的にAPIに問い合わせた結果が流れていく場所がFlowになります。

Flowは「コールド」です。コールドとは、値を収集することではじめて動作するという意味です。つまり、UIが表示を行うためにFlowの値を収集することによって、Flowの処理が実行されます。

## Flowの作成

`flow`ビルダーを使ってFlowを作成します。
リポジトリからデータを取得して、`emi

元記事を表示

FragmentでPredictive backをサポートする

Fragment 同士の遷移時アニメーションで Predictive back を有効にする時の実装メモです。
これを書いている時点では、alpha 版のライブラリや Experimental な機能を使用しているため、将来的に変更される可能性があります。

## 実装

### 依存関係

ライブラリの依存は以下のバージョン以降である必要があります。

– [Fragment](`https://developer.android.com/jetpack/androidx/releases/fragment`) 1.7.0 以降 or [Transition](https://developer.android.com/jetpack/androidx/releases/transition) 1.5.0 以降
– compileSdk 34
– [material-components](`https://github.com/material-components/material-components-android`) の Motion を使いたいならば 1.12.0 以降

元記事を表示

Pythonのまとめ

# はじめに
ここ半年間、Pythonの勉強しながらQiita投稿した記事をまとめてみた。
 Pythonはライブラリが充実しており、何かやりたいことがあれば、ほとんどの場合に対応できる便利な言語。普段組み込みのC言語でROM.RAMや処理時間を常に意識してガリガリコード書いている自分からすると、数行でやりたいことが書けちゃうPythonはストレスフリーで勉強していても楽しい。
 Pythonの本領である機械学習にはまだ手を出していないので、これからも勉強続けたい。

# 目次

分類|概要
—|—
[エクセル処理・ファイル処理](#エクセル処理ファイル処理)|PandasやOpenpyxlでのエクセル処理や、テキストファイルの読み書き等。
[仕事効率](#仕事効率)|仕事で使うとちょっと便利な小技。
[Kivy関連](#kivy関連)|GUIライブラリKivyの使い方。
[Androidアプリ関連](#androidアプリ関連)|Kivyを使ったアンドロイドアプリ。
[Raspberrypi関連](#raspberrypi関連)|電子工作関連。MicroPython。
[文

元記事を表示

ネイティブ開発か、クロスプラットフォーム開発か

## はじめに

モバイルアプリの開発として, ネイティブ開発にするかクロスプラットフォーム開発でFlatterやReactNativeを使うか、今でも議論が絶えません。
現在Androidのリードエンジニアとして働いている自分から見て、どう選定するかを個人的な意見を書きたいと思います。選定の方法として絶対正しい、はないと思いますので参考までにしていただければと思います。
下のような記事の内容はすでに把握している方が対象です。

https://circleci.com/ja/blog/native-vs-cross-platform-mobile-dev/

## 前提条件
iOSとAndroidの両OSでアプリを作る必要がある場合を想定

## 自分の経歴

自分のモバイルアプリ歴として、ざっくり書いておきます。

* Swift
– Swift UIで個人開発3件 
– 100万円以上の収益化に成功しているアプリあり
– 経歴は1.5-2年ほど

* Kotlin
– 個人開発で2件
– 経歴は1年ちょい
– 現在リードエンジニア
– 主にJetpa

元記事を表示

【UserLAnd】AndroidスマホにWi-Fi経由でSSH接続する方法

## はじめに

この記事では**パソコンからSSH接続でAndroidスマートフォンにアクセスすること**を目的とします。

SSH接続するには「openssh」というアプリが入っていれば使えます。Windowsにもデフォルトで入るようになったので、今回はWindowsでSSH接続してみます。
ただし、WindowsからSSH接続するにはpowershellではだめで、**Git Bash** を起動しなければなりません。

スマートフォンではsshどころか**ターミナルが使えない**ため、ターミナルが使えるアプリをインストールします。

以前は「termux」というアプリが主流でしたが**現在はplayストアで更新できない**状態が続いているため、現在おすすめのアプリは **「[UserLAnd](https://play.google.com/store/apps/details?id=tech.ula)」** というアプリになります。

:::note info
以前Qiitaで同じような記事を書いていました[^1]。このときは「terumux」を取り上げていましたが、今回は

元記事を表示

OTHERカテゴリの最新記事