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

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

ZXingをJetpack Composeで利用する

AndroidのXMLレイアウトをJetpack Composeに移行していて、QRコードリーダーのライブラリである`zxing-android-embedded`を使っている部分を移行することがありました。
しかしJetpack Composeで使っている情報が少なかったので備忘として簡単に残しておきます。
# 実装
“`Zxing.kt
@Composable
fun AdminClubMembershipScanScreen(navController: NavHostController) {
val context = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current

val compoundBarcodeView = remember {
CompoundBarcodeView(context).apply {
val capture = CaptureManager(context as Activity, this

元記事を表示

Google Pixel3aにUbuntu Touchをインストールする

## はじめに
Google Pixel3aにUbuntu Touchをインストールする手順をまとめました。
スマホでUbuntuを使用できるようになります。

![GHgM-WeaQAAVCCL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/930094/8a0d62c3-ec37-6f18-3951-68f696ac5ac2.jpeg)

:::note warn
この記事での操作は様々なリスクを伴いますので、自己責任で実施してください。
・スマホ内のデータは初期化されます。
・OSのダウングレードを伴いますので、セキュリティが脆弱になる可能性があります。
・最悪の場合、スマホが文鎮化する可能性があります。
:::

## 実行環境
**PC**
Windows 10 pro

**スマホ**
Google Pixel3a
Android version 12.1.0

## 手順
[ubuntu touchの公式サイト](https://devices.ubuntu-touch.io/inst

元記事を表示

Jetpack ComposeでfontSize設定はどうするのが良いのか

Jetpack Composeでフォントサイズを設定するときに、どう書くのがベストなのか分からなかったので調べてみました。
[こちらのStack Overflow](https://stackoverflow.com/questions/67522145/text-composable-dimensionresource-not-working-as-fontsize-parameter)で議論されていましたが、書き方によってスケーリング、つまりOSのフォントサイズを変更した際の挙動に違いがあるみたいです。
ただいまいち結論がわからなかったので自分でも調べてみました。

# 先に(多分)ベストプラクティス
上記StackOverflowでも言われていますが、テーマを設定できる場合はそちらを使った方が良いです。
Material Design3は不勉強なのですが、以下のようにTypographyクラスを使っておくとアプリのデザインの統一感に繋がるのでこれが一番良いと思います。
“`Type.kt
val typography = Typography(
headlineSmall

元記事を表示

Next.js Learnのアプリをデスクトップアプリ化とスマホアプリ化してみた

# Next.js Learnってなに❓
Googleさんの試験運用中生成AIの解説がわかりやすかったので、拝借🙏

>ReactをベースにしたフレームワークであるNext.jsの諸知識や思想を学ぶことができる無料のチュートリアルです。
このチュートリアルでは、請求書を管理するダッシュボードを作成しながら、Next.jsの基礎を学ぶことができます。
認証機能やDB連携、PaaS(Vercel)の活用など、実践的な内容も含まれています。
JavaScriptではなくTypeScriptを使用します。
また、チャプターの途中には、それまでの説明が理解できているかをチェックする簡単な択一式のクイズが用意されています。

公式のページはこちら👇
[Learn Next.js | Next.js by Vercel – The React Framework](https://nextjs.org/learn)

## 💻 試した環境と該当リポジトリ
[利用したリポジトリ](https://github.com/TakaraShinya/nextjs-dashboard)

“`
Apple

元記事を表示

ViewPager2のrequestDisallowInterceptTouchEventを実行してもViewPager2には効果がない件

AndroidのViewにおいて、タッチイベントは子の方が優先的に処理できますが、親Viewは子Viewが`onTouchEvent`を処理している中、`onInterceptTouchEvent`が呼び出されており、trueを返すことで処理を奪うことができます。
例えば横スクロールのViewAの上に、縦スクロールのViewBを配置するという画面構成の場合、ViewAは`onInterceptTouchEvent`で操作を監視し、操作方向が横方向であると判定すると、ViewBから操作の優先権を奪うことで、縦横両方の操作が両立できるという仕組みになっています。

概ねこれでうまくいくのですが、場合によっては親View側で処理を奪ってほしくない場合があります。その場合に使うのが、`requestDisallowInterceptTouchEvent(true)`です。
名前の通り、このメソッドがコールされたView(およびその親のView)はInterceptしなくなり、子はタッチイベントの優先権を奪われなくなります。

例えば、チョット複雑なレイアウトを作るとします

– 横スクロールの

元記事を表示

脱初心者を目指す!Android Studioの便利な機能やショートカットまとめ

## はじめに

こんにちは。
去年の秋までクロスプラットフォームなアプリ開発を行っており、その後ネイティブ言語(SwiftやKotlin)によるアプリ開発を担当するようになりました。
ネイティブ言語でのアプリ開発を始めて約半年、色々なことをキャッチアップしましたが、その中でとくに役立ったのはIDEの便利な機能やショートカットでした。

そこで、今回はAndroid Studioにしぼって、この半年間でよく使ったもの、自分で調べて便利だなと思ったもの、さらにはモブプロやペアプロした中で他のエンジニアから見聞きしたものを記事にまとめます!
Android Studioを使っている人はもちろん、これから使おうとしている人にも役立てば幸いです。

## この記事の対象者

– Android Studioでのアプリ開発を始めたての人[^1]
– Androidアプリ開発をするにあたって最低限の便利な機能やショートカットを知りたい人

[^1]: Android Studioが使ったことあれば問題ありません!さらに[Android Studio UI](https://developer.an

元記事を表示

メモ:バルミューダフォンのデフォアプリ無効化

アプリ(ただのショートカットっぽいのでおそらく不要)
パッケージ名:
com.balmuda.phone.blmb.shortcut
com.balmuda.phone.blmbrecipe.shortcut
com.balmuda.phone.blmbtech.shortcut
標準ではできないので、パソコンとつなぎadbコマンドを有効にして(要ググる)無効化する。

元記事を表示

日本語プログラミング言語MindをAndroidに移植した時の記録(ステップ4/9)

# はじめに

 この記事はだいぶ前(2012年)にココログの「[キリーの日本語プログラミング](http://uemon3511.cocolog-nifty.com/nihongoprogram/)」に掲載したコラムですが、再編集してこちらにも投稿します。今となっては古い話ではありますが、OSによってプログラム言語(AndroidではJava)が決め打ちされている環境で規定と異なるもの(Mind)を走らせたことの記録としてお読みください。

# イベントリスナー

 レイアウトの場合と似た話だが、Java側のオブジェクトをMind側に伝えても意味が無いので簡単な仕組みで両者間で連絡が取れるようにする。

![20130603eventlistnersample_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118036/7de8b7d5-38e3-e618-f178-1e78d619672e.png)

## クリックイベントリスナーの登録

 まずクリックリスナーの登録は以下のように行う。

元記事を表示

【Jetpack Compose】状態管理のためにremember、rememberSaveableの違いとSaverの活用

Jetpack Composeにおける`remember`、`rememberSaveable`、そして`Saver`の使用と、それらが状態管理にどのように役立つのかについて詳細に解説します。

### `remember`とは?

– **目的**: Composable関数内で状態を保持するために使用されます。

– **特徴**: `remember`はコンポジションが破棄されるまで(例えば、Composable関数がナビゲーションによって画面から削除される、アクティビティが破棄されるなど)その状態を保持します。

– **限界**: アクティビティの再作成(デバイスの回転やバックグラウンドからの復帰など)では状態が保持されません。再作成時には初期化コードに戻ります。

### `rememberSaveable`とは?

– **目的**: `remember`と同様に状態を保持しますが、アクティビティの再作成を越えて状態を保持することができます。

– **特徴**: `rememberSaveable`は、システムによる再作成(デバイスの回転など)後も状態を復元するために内

元記事を表示

AndroidタブレットにTermuxを導入する

# 首記の件は、多くの可能性を秘めています。

この小さなアプリケーションは、デバイスを機能するLinux環境に変えることができます。例えば、

– Calcurseを使用すれば、予定管理が簡単になります。
– Todo.txtは、日々のタスクを整理し、
– Gitはプロジェクトのバージョン管理を助けます。
– Rcloneはクラウドストレージへのアクセスを提供し、
– Yt-dlpはお気に入りの動画をダウンロードするためのツール。
– Node.jsやHonkitは、静的サイトを作成する際に役立ちます。

## Termuxはさまざまなパッケージや…

カスタマイズオプションを提供しています。

### あなたがプログラマーであれば、

– Pythonや
– Rubyなどの言語を

インストールしてコーディングすることができますし、

### システム管理者であれば…

– SSHや
– Mosquitto(MQTTブローカー)などの

ツールを利用してリモートで作業することも可能です。

## TL;DR

Termuxを使用することで、これらすべてのツールが手のひらの

元記事を表示

単体テストで、日付を扱う

日付を扱った単体テストを実施することがあったので、その際にモック化したり色々問題があったので、まとめてみました。
Hiltでの単体テストに関しては、こちらの記事を[参考](https://qiita.com/shimizu-you/items/ad8ad91b9b27c227d2a5)してください。

### Mockkを導入

“`kotlin
testImplementation(“io.mockk:mockk:1.13.9”)
“`

### 日付ライブラリーの導入

日付関連のライブラリーとして、Androidに最適化された[threetenbp](https://github.com/ThreeTen/threetenbp)を使用します。
ただし、単体テストをする際に注意点があります。
単体テストでは、threetenabpが使えないため、除外してthreetenbpを使用する必要があります。

“`kotlin
implementation(“com.jakewharton.threetenabp:threetenabp:1.4.6”)
testImplementa

元記事を表示

Android端末でOpen Interpreterを使用する方法

Android端末で高性能なAIアシスタントを使いたいと思ったことはありませんか?Open Interpreterを使えば、ChatGPTのようなAIとAndroid端末上で直接対話することができます。この記事では、Android端末へのOpen Interpreterのインストール方法を詳しく解説します。

こちらの記事もおすすめ

https://hamaruki.com/its-easy-even-for-beginners-how-to-connect-via-ssh-with-android-termux/

## Open Interpreterとは

Open InterpreterはオープンソースのAIアシスタントアプリケーションで、OpenAI APIを利用してユーザーとの対話を行います。PC版に加えて、Android版も開発されています。

Android版Open InterpreterはTermuxというターミナルエミュレータアプリ上で動作します。Termuxは追加の設定なしにAndroid端末上でLinux環境を提供するアプリで、Open Inter

元記事を表示

使用できない状態となった楽天ポイントを使用できる状態に修正した話

事の経緯は、嫁のキャリアメールを普通のメールアドレスに切り替えようとしたことが始まりです。

最初にキャリアメール(仮に**AAA@com**とします)のアドレスに紐づけて楽天アカウントを作成していました。そして、このキャリアメールのアカウントをやめて例えばgmail(仮に**BBB@com**)のようなメールアドレスで楽天アカウントを作成しようとしました。

### 結論からすると楽天会員情報ページでメールアドレスをAAA@comからBBB@comに変更すれば良かったのです。
![タイトルなし.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495919/282672d0-5af8-31ba-fc23-59c9eac546fc.jpeg)

そうしないで、**BBB@com**として楽天アカウントを新規作成してしまい悲劇は起こりました。
嫁は、楽天カードを作成し入会ポイントをもらったのですが、**BBB@com**には入会ポイントは入らず**AAA@com**に入会ポイントが付与されたのです。

それ

元記事を表示

ずんだもん認知シャッフル睡眠アプリを作ろうと思ったら大変だった

ずんたもんが読み上げる認知シャッフル睡眠の動画をよく聴くので、voicevoxで単語を読み上げるアプリを作ってみようと挑戦しましたが、アプリ初心者なので各種ポイントでつまずいてしまい思ったより大変でした。
はまったポイントを記録したいと思います。順不同です。

## これをやったら動いた
### voicevox_coreのAARファイルをアプリのプロジェクトのdependencyに追加する
aarがビルドされているのはプレビュー版のみのようです。
https://github.com/VOICEVOX/voicevox_core/releases/tag/0.15.0-preview.16 (2024/02現在最新のプレビュー版ビルド)
から `model-0.15.0-preview.16.zip` をDL・解凍し、
https://developer.android.com/studio/projects/android-library#psd-add-aar-jar-dependency
こちらの手順通りにaarファイルをdependencyに追加する
つまずきの8割がcore

元記事を表示

初心者でも簡単!AndroidのTermuxでSSH接続する方法

こんにちは!今回は、AndroidのTermuxアプリを使ってSSH接続する方法を初心者向けに詳しく解説していきます。Termuxを使えば、Androidスマホやタブレットからリモートのサーバーに接続できるようになります。

こちらの記事もおすすめ

https://hamaruki.com/how-to-use-apollonstreamapi-to-stream-android-screen-capture-in-real-time/

https://hamaruki.com/create-a-gemini-app-with-android-studio-and-check-its-operation-on-the-actual-device/

## Androidにアプリのインストール

### Termuxアプリのインストール

まずは、Android端末にTermuxアプリをインストールしましょう。GooglePlayストアから入手できるバージョンは古いので、以下のリンクから最新版をダウンロードしてください。

https://github.com/termux

元記事を表示

【Android】Jetpack ComposeのButtonあれこれ【Kotlin】

# 目次
* Button
* FilledTonalButton
* TextButton
* OutlinedButton
* ElevatedButton
* IconButton
* FloatingActionButton
* RadioButton

# Button
“`
Button(onClick = {}) {
Text(“Button”)
}
“`
デフォルトで背景色がついているボタン

# FilledTonalButton
“`
FilledTonalButton(onClick = {}) {
Text(“FilledTonalButton”)
}
“`
デフォルトの背景色がSecondaryColorによって設定されている

# TextButton

“`
TextButton(onClick = {}) {
Text(“TextButton”)
}
“`
特に装飾のないTextにCl

元記事を表示

android studio PNG画像インポート時のtips

# はじめに
今回はすごい基本的なことである`AndroidStudio`のプロジェクト内に`png`の画像を入れる方法を紹介します
最近はsvgを使用することが多いので中々使わないので最近自分が触って意外と細かい部分で忘れてるのがあったので紹介していきます
### 本文
まず、基本的に使う画像はデザイナさんか`Figma`から受け取ると思うのですが`svg`と違い`png`は各サイズを用意しないといけません。
その時に各サイズをまとめてフォルダでインポートすると思うのですが、`Figma`とかだと画像のファイル名に対して`hogehoge@1x.png`のような設定になってると思いますがそのフォルダをそのままインポートしようとすると[公式](https://developer.android.com/studio/write/resource-manager#automatic-parsing)にもあるように下記の三種類しか対応しません。
* @2
* @3
* @4

そのため、すべての名前を変更して`ldpi`などの指定をしてあげないといけません。
### 最後に
今回は転ばぬ先

元記事を表示

AlarmClockクラスのリファレンスがぺらぺらすぎるので補いたい

**AlarmClockクラス**はAndroidアプリケーションでアラームをセットするための便利なクラスです。特に、アラームを解除する際に使用する`ACTION_DISMISS_ALARM`アクションについて、具体的な実装例をご紹介します。

以下は、指定されたラベルに基づいてアラームを解除するKotlinの関数です。

“`kotlin
/**
* 指定されたラベルのアラームを解除します。
*
* @param context コンテキスト
* @param label アラームのラベル
*/
fun dismissAlarmByLabel(context: Context, label: String) {
val intent = Intent(AlarmClock.ACTION_DISMISS_ALARM).apply {
setPackage(alarmPackageName) // アラームアプリのパッケージ名を指定
putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE, AlarmCl

元記事を表示

ドキュメントからadbコマンドの仕組みを読み解く

# adbコマンドってなに
まずは[公式ドキュメント](https://developer.android.com/tools/adb?hl=ja)を読んでみましょう。
次の通りに説明されています。
> Android Debug Bridge (adb) is a versatile command-line tool that lets you communicate with a device.

> Android Debug Bridge(adb)は、デバイスとの通信を可能にする多機能なコマンドラインツールです。

つまり、**adbというコマンドを通してAndroidデバイスに色々させることができるよ!** というものです。

# adbコマンドでできること!
色々させることができると言いましたが、具体的にどんなことができるのでしょうか。
具体的なシチュエーションと共にいくつか紹介します。

## アプリインストール
アプリのファイル(APK)をインストールすることができます。
サッと手元でインストールして確認したい時に便利です。
“`
adb install [apkフ

元記事を表示

【Android】起動したWorkerを停止させる方法

# はじめに
皆さん、Worker使っていますか?
Serviceへの風当たりがどんどん強くなる今日この頃ですが、公式でもできる限りWorkerへの置き換えを推奨しているご状況です。
以前にもWorkerの取り扱いについて触れましたが、仕様の変更や何らかの問題が発生した際にすでに起動中のWorkerを止めなければならないケースが発生した場合、単純に処理を消すだけではWorkerは止まりません。
明確に停止する必要がありますので、今回は備忘録的にWorkerの停止方法をまとめておこうと思います。

# Workerの停止方法
Workerの停止方法には3通りのやり方があります。

“`main.kt
val workManager = WorkManager.getInstance(context)

// by id
workManager.cancelWorkById(syncWorker.id)

// by name
workManager.cancelUniqueWork(“sync”)

// by tag
workManager.cancelAllWorkByTag(“s

元記事を表示

OTHERカテゴリの最新記事