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

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

adbコマンド

## 🎀 はじめに

(私が)よく使うadbコマンドをまとめます
システムアプリ(プリインストールアプリ)を作成時に使用しました

### 端末に接続 / 接続解除
“`
$ adb connect IPアドレス
$ adb disconnect IPアドレス
“`

### adb接続しているデバイス一覧
“`
$ adb devices
“`

### 端末再起動
“`
$ adb reboot
“`

## 🖥️ adbコマンド

adbコマンドを使うためにはUnixシェルにアクセスする必要があります
“`
$ adb shell
“`
もしくは、下記のコマンドの前に`adb shell`をつけてください


“`
$ adb sell pm disable-user アプリパッケージ名
“`

### システムアプリの無効化
“`
$ pm disable-user アプリパッケージ名
“`

### システムアプリの有効化
“`
$ pm enable アプリパッケージ名
“`
### システムアプリがどうか
“`
$ dumpsys pac

元記事を表示

Jetpack compose Modifierとは?

# 概要
JetpackComposeの`Modifier`について内容を雑にまとめる。

# 詳細

`Modifier`は、`Jetpack Compose`においてUIコンポーネントの外観や動作を変更するためのオブジェクト。`Modifier`を使用することで、コンポーネントのレイアウト、スタイル、アニメーション、インタラクションをカスタマイズすることができる。

## 主な特徴

– **関数型のオブジェクト**: `Modifier`は、関数型のオブジェクトであり、チェイン(.で繋げること。いわばメソッドチェーン)することで複数の修飾子を組み合わせて使うことができる
– **UIコンポーネントへの適用**: `Modifier`は、Composeの各UIコンポーネントに対して引数として渡され、特定のスタイルや動作を適用できる

## 主な用途

1. **レイアウトの変更**:サイズ、位置、パディング、マージンを変更
2. **スタイリング**: 背景色、ボーダー、影などの視覚的スタイルの設定
3. **インタラクションの処理**: クリック、タップ、ドラッグなどのユーザーイ

元記事を表示

【Android】ComposeでON_PAUSEで発火するイベントを設定する

## はじめに
ActivityやFragmentでは、onPauseやonResume等の関数をオーバーライドしてあげれば、Androidのライフサイクルで発火するイベントを設定できます。
Composeで作った画面でもAndroidのライフサイクルを監視してイベント発火するに「LifecycleEventObserver」を使って設定可能なようです。
今回はComposeでAndroidのライフサイクルであるON_PAUSEを監視し、イベントを設定する方法をまとめていきたいと思います。

## ComposeでON_PAUSEで発火するイベントを設定する
サンプルコードは以下になります。
“` sample.kt
@Composable
fun MyComposable() {
// Composeが所属するライフサイクルオーナ-を取得
val lifecycleOwner = LocalLifecycleOwner.current

// DisposableEffectを使用して副作用を設定
DisposableEffect(lifecycle

元記事を表示

Jetpack composeでのバックボタン制御について

# はじめに
今回はJetpackComposeでのバックボタン制御について少し話したいと思います
実装方法自体は依然記事を書いたのでそちらを参照してください
### 本文
さて、今回は話したい内容としてはバックボタン制御の伝播についてです。
コードの中身を見てみると引数で渡しているBool値でenableを切り替えています。
enableをfalseのときはBackHandlerのラムダに記述されたコードは実行されません。
その時にどういった挙動をするかというのがメインの話題になります。
何もみずに直感のみで答えるならAndroid準拠の何も制御してない状態と同じ処理をすると思います。
しかし実際にはそれよりも下のレイヤーで制御をしていた場合そちらを参照します。
ただしここで注意したいのが、特に何も記載しない場合はNavHost,composable(),Scaffoldで強制的にAndroid準拠のものに塗り替えられるということです

そのため上記三種類を使う場合はBackHandlerにfalseをわたしてあげないといけません
### さいごに
今回はBackHandlerの制御

元記事を表示

元Flutter使い、現iOSプログラマが、Compose Multiplatformに入門してみた

# はじめに

以前Flutterを使っていた経験から、現在はSESとしてiOSプログラマをしている[uehatsu](https://x.com/uehatsu)です。ちょっとCompose Multiplatformをいじる必要が出てきたので、連休を機会にさわり始めました。メモがてらまとめてみたいと思います。

https://www.jetbrains.com/ja-jp/compose-multiplatform/

# 環境構築

公式ホームページ通りにやったところ大きな問題はありませんでした。あえて言うなら以下の点で「あれ?」と思いました。

– Xcode 16.1をインストールした状態ではAndroid Studio上でシミュレータが正しく選べなかったので、Xcode 16.0にしたこと
– kdoctorがAndroid Studioのバージョンを正しく認識してくれなかったこと
– kdoctorが「Android Studio上で`Kotlin Multiplatform Mobile Plugin`をインストールしろ」と言うけど、そんなプラグインはなく`Kotli

元記事を表示

【Android】WebViewで動画をフルスクリーン再生する方法まとめ

# はじめに
何かとよく利用するWebViewですが、Web上の動画をフルスクリーン再生しようとした際にデフォルトでは全画面再生ができないのはご存知でしょうか?
Web側の実装ではフルスクリーン再生できるように調整済みだったとしても、Androidアプリ側で別途修正が必要になります。
そこで、今回はフルスクリーン再生するための実装を簡単ではありますが備忘録的にまとめておこうと思います。

# フルスクリーン再生する方法
フルスクリーン再生する仕組みとしては、WebViewの上にフルスクリーン化したViewを乗せてあげるイメージになります。
以下がその実装になります。

“`main.kt
binding.webView.webChromeClient = object : WebChromeClient() {
override fun onShowCustomView(view: View?, callback: CustomViewCallback?) {
super.onShowCustomView(view, callback)

元記事を表示

Jetpack ComposeのTextのAutosize

Jetpack Compose 1.8.0-alpha05 から `Text` で Autosize がサポートされるようになったので試してみました。
書いているのは 1.8.0-alpha05 時点の内容なので、実際の使用時には最新のドキュメントを確認ください。

## 使い方

material や material3 の `Text` ではまだ使用できず、foundation の `BasicText` を使います。

“`kotlin
BasicText(
text = text,
autoSize = AutoSize.StepBased(
minFontSize = 10.sp,
maxFontSize = 60.sp,
stepSize = 10.sp
)
)
“`

幅と高さを固定にしていた場合に、収まり切るようにテキストサイズが調整されます。

![Autosizeの例1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

UnityでAndroid14から15へアップデートする際に起きたこととその解決法

# はじめに
UnityでAndroid14から15へアップデートする際、またスムーズにいかなかったので、
エラー内容と解決法を紹介できればと思います。
Unityバージョンは2022.3.45f1で行いました。

# エラー:Unable to detect SDK in the selected directory.
ファイル参照先も存在し中身まであったにも関わらず、SDKが無いと怒られました。

![error_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3714377/73eae164-6dfb-e1fa-7df1-23fbdaf862cd.png)

こちらはUnityを再インストールし、プロジェクトを再起動すると解消されました。
インストール時に何か失敗していたのでしょう。

# エラー:Cannot parse project property android.enableR8=” of type ‘class java.lang.String’ as boolean. Expe

元記事を表示

Android SDKが年2回更新されるようになる

2024 年の TheAndroidShow で発表があった、Android SDK の更新スケジュールの変更について、わかっていることのまとめです。

https://android-developers.googleblog.com/2024/10/android-sdk-release-update.html?m=1

– Android SDK のメジャーアップデートが 2Q にリリースされる
– Android 16 が 2025/4~6 にリリースされる
– 新 OS でのテストがこれまでより早くする必要が出てくる
– メジャーアップデートとは別にマイナーアップデートが 4Q にリリースされる
– マイナーアップデートでは新しい API の追加があるが、動作の変更はない
– マイナーアップデートでは API レベルの値は変わらないが、メジャーと切り替えるためのマイナー API レベルの値が新しく追加される

![image2 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

NavigationとSafeArgsを既存プロジェクトに適用する

# はじめに
既存のプロジェクトでは、複数のアクティビティによる画面遷移の構成となっておりましたが、Androidアプリとしてデファクトスタンダードな構成とするため

– Single Activity, Multiple Fragments化
– Navigationによる画面遷移
– SafeArgsによるパラメータの引き渡し

を適用しました。
なので、この記事では上記の適用方法について紹介していきたいと思います。

# プロジェクトの設定
NavigationとSafeArgsのために、
Projectの`app/build.gradle`に以下を設定
“`gradle
buildscript {
dependencies {
classpath “androidx.navigation:navigation-safe-args-gradle-plugin:2.5.3”
}
}
“`
appの`build.gradle`に以下を設定
“`gradle
apply plugin: ‘androidx.navigation.safear

元記事を表示

Android Studioを使用してアプリを作成してみた(Android Studioインストール、セットアップ編)

# はじめに
今後業務で使用しそうなので、勉強も兼ねて記録に残そうと思います。
やることとしては、以下のように進めていこうと思います。

**①Android Studio環境構築(インストール、セットアップ) ※今回はこちらを実施**
②Android Studio環境構築(設定、他必要アプリの用意)
③Android Studioを使用して、簡単なアプリを作成する

:::note info
注意
本記事は、Windowsを前提に記載しております。
:::

# Android Studioとは
Android Studioは、Androidアプリを作るためのソフトウェアです。
スマホのアプリってどうやって作るのか気になったことありますよね?
それを実際に作るための道具が、このAndroid Studioなのです。

例えば、スマホのゲームやSNS、便利なツールなど、いろいろなアプリがありますが、それらはプログラミング言語(特にJavaやKotlin)を使って作られています。
Android Studioは、そのプログラムを書く場所であり、同時にアプリの見た目(ボタンや画面のデザイ

元記事を表示

ARのSNSを作ってみる オブジェクトの操作(移動・回転)編

# 初めに
 前回の記事の終わりに「次回はオブジェクトの絶対位置取得や永続化をする」と記載しましたが、オブジェクトの操作(移動・回転)が思ったより苦戦したので備忘録として残しておきます。

https://qiita.com/dd7223dd/items/fe3bb531866872ff57a8

 ARCoreの公式ドキュメントに「コンテンツ操作」としてオブジェクトの移動・回転について触れてはいるのですが、具体的なやり方の説明が一切ないです。その他のネット記事にも私が調べた限りだと見当たりませんでした。sceneformだとオブジェクトの操作が提供されているらしいのですが、開発が終了しているので今回は使いません。なので今回紹介する以外のやり方があったら教えて欲しいです。

https://developers.google.com/ar/design/content/content-manipulation?hl=ja

# オブジェクトの操作の基本的な考え
 オブジェクトは「アンカー」というものに紐づく形で描写されます。以下のページからも分かる通り、アンカーに**移動**や*

元記事を表示

Claude Computer UseをAndroidで動かす

Anthropicの「Computer Use」機能をAndroid環境でADBを使って実装するには、PC向けのインターフェースをAndroid向けに調整する必要があります。この機能はAIがスクリーンショットを解析し、画面上の操作を自動で行うことを目指しています【11】【12】。以下の手順でAndroid環境に適用する流れを解説します。

元記事を表示

Androidエミュレータ起動エラー「StartService はエラー 4294967201 により失敗しました」「ControlService FAILED 1062」「Android emulator exited with code -1073741515」

## StartService はエラー 4294967201 により失敗しました

掲題の通りのエラーが出て、Androidエミュレータが起動できない。

“`
そのサービスを開始できませんでした。

[SC] DeleteService SUCCESS
[SC] StartService はエラー 4294967201 により失敗しました。
Done
“`

端末スペックは下記。
OS: Windows11 Pro 64bit (22H2)
CPU: AMD Ryzen 5 PRO 2500U w/ Radeon Vega Mobile Gfx 2.00 GHz
メモリ: 16.0 GB

厳密にいうとこのエラーは、エミュレーターを起動した時に表示されるのではなく、Androidエミュレーターを使うためにAndroid Emulator hypervisor driver をインストールしようとした時に表示される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14537

元記事を表示

【Flutter】よくあるプロジェクト構成を作るまで#1 – go_routerで画面遷移 / flutter_hooksによるstate管理

[前回](https://qiita.com/hidepy/items/ef06bf868b0f2eb09237)、Flutterの環境構築をしたので今度はそのプロジェクトに対して一般的なプロジェクトに必要そうなプラグイン(package)を入れつつ、軽く実装していく

今回は、頻出であるgo_router(クライアントサイドルーティング)、flutter hooks(state管理)(に本当に少しだけ触れる)について触れる

## 導入するパッケージ
### go_router

クライアントサイドルーティングを容易にしてくれるパッケージ [公式](https://pub.dev/packages/go_router)
下記コマンドでinstall

`flutter pub add go_router`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145371/0c2412c6-e3b5-b487-0581-68752331464c.png)

### hooks_riverpo

元記事を表示

「RemoteViews for widget update exceeds maximum bitmap memory usage…」について

ウィジェットを作っていると、

“`
IllegalArgumentException: RemoteViews for widget update exceeds maximum bitmap memory usage (used: xxxxx, max: xxxxx)
“`

というExceptionが発生し、ウィジェットがエラー表示になる場合があります。
このExceptionが発生している箇所は以下です。

https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java;l=2203-2226

“`java
private void updateAppWidgetInstanceLocked(Widget widget, RemoteViews views,
boolean isPartialUpdat

元記事を表示

AppWidgetのサイズ事情

Android 12にてAndroidのウィジェットに大幅な強化が行われており、従来の知識では対応が不十分になっています。ここではサイズ事情の変化について説明しようと思います。

# API 16 〜 API 30

API 16(Android 4.1)から使える方法です。
サイズ情報は`getAppWidgetOptions()`で取得できるBundleから読み出すことができます。
以下のように読み出します。

“`kotlin
val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
val minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, 0)
val maxWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH, 0)
val minHeight = options.getInt(AppWidgetManager.OPTION_APPWI

元記事を表示

JatpackComposeで画像をズームさせるためのライブラリ”Zoomable”

# Zoomable
ImageViewをズームするためのライブラリです

https://github.com/usuiat/Zoomable

# 準備

新規で作成しても大体書いてありますが、settings.gradle内にmavenCentral()があることを確認します。
“`
pluginManagement {
repositories {
mavenCentral()
}
}
“`
“`
dependencies {

implementation(“net.engawapg.lib:zoomable:1.6.2”)

}
“`

# 使い方
基本的には Modifierに
“`
.zoomable(rememberZoomState())
“`
を追加するだけで使えます

“`
Image(
painter = painterResource(id = R.drawable.ic_launcher_background),
contentDescripti

元記事を表示

HiltでAutoBindを使うときに気を付けたいこと

# はじめに
今回は、最近実装をしていてAutoBindアノテーションを使っていて少し詰まった部分があるので紹介していきます
### 本文
@AutoBindを使う際に、複数個注入しようとするとエラーが出てしまいます。
その時に使えるのが、下記になります
@AutoBind(asTypes = [Hoge::class])
2個目以降をHogeのように書くことで複数個注入することができます。
ライブラリの中身を読むと書いてあるのですが、最初何も知らずに使うと「あ、複数個は何か違うやりかたしないといけないのかな?」となって少しだけ時間を食ってしまいました
### さいごに
ライブラリの中身を読めばすぐにわかることなので万人に役立つわけではないと思いますが、備忘録として記事に残しておこうと思います

元記事を表示

解像度変更設定のある端末の解像度情報を取得する方法

Pxiel 8 Proなど、高解像度なディスプレイを持つAndroid端末の中には省電力化などのために解像度を変更できる端末があります。アプリ上からどのような解像度モードを持っているかを知りたい時にどうすれば良いでしょうか?

# ディスプレイの情報を取得する

DisplayManagerを使うことで、ディスプレイの情報を取得することができます。

“`kotlin
val displayManager = getSystemService() ?: return
val display = displayManager.getDisplay(Display.DEFAULT_DISPLAY)
Log.e(“XXXX”, “Display:${display.displayId} ${d

元記事を表示

OTHERカテゴリの最新記事