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

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

[Android] Arm64でAnti-Disassembly/Decompile

昨日、このような素晴らしい記事を見かけました

こちらの記事ではPLDという命令を使用してアンチディスアセンブルを施していましたが、こちらでも言及されている通り、Arm64では存在しない命令です。

そこで、Arm64ではアンチディスアセンブルを施すことはできないのかと気になったので自分なりに調べてまとめてみました。

# 初めに

ArmにはDCBディレクティブという1バイト以上のメモリを割り当て、メモリの実行時の初期内容を定義するものがあります。

https://developer.arm.com/documentation/dui0473/m/directives-reference/dcb?lang=en

> The DCB directive allocates one or more bytes of memory, and defines the initial runtime contents of the memory.

そのほかにも種類があり、

元記事を表示

【UE5】Android スマホでのデバッグ方法(UE5.1)

# 手順
## Android Studio のインストール
### 手順1
[Android Studio のダウンロード アーカイブ](https://developer.android.com/studio/archive)に行き、バージョン **4.0** をダウンロードする。

TSUBASAMUSU.png

### 手順2
ダウンロードしたインストーラーを実行して Android Studio をインストールする。

TSUBASAMUSU.png#323 2024-04-21 駄菓子 議事録

# [消費電力を検証しよう](https://android-developers.googleblog.com/2024/04/how-to-effectively-ab-test-power-consumption-for-your-android-app-features.html)
– hedgehogからpower profilerが見れる
– power profiler : 消費電力を確認できるところ
– Profilerから頑張って開けるらしい
– レコードしたら見れる
– 記事では緑枠部分の和を消費電力として計算している
![スクリーンショット 2024-04-22 22.25.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/a305be06-95ee-f9f0-c4f4-f6843a68bd6d.png)

– この記事のユースケースでは動画をダウンロードしているのでDisplayとGPUは必要ない
– ユースケースによってどの値の和を消費電

元記事を表示

#322 2024-04-14 駄菓子 議事録

# [ComposeでDI](https://medium.com/androiddevelopers/dependency-injection-in-compose-a2db897e6f11)

– composeDIむずいな
– Single Activityの場合:すべてのViewModels(と注入されたオブジェクト)は、そのアクティビティが生きている限り保持される
– Compose Navigation ライブラリを使用した場合:hiltViewModel() が自動的にナビゲーション目的地のバックスタックエントリーを ViewModel のオーナーとして使用。ナビゲーションバックスタックに目的地が存在する限り、ViewModelは保持されます

– :question: SingleActivityの時と比べてどうなるのかちょっと分かりにくい。ViewModelの寿命の依存先が変わってくるんだろうけど
– Composable関数を含むクラスを作成し、依存関係をそのクラスに注入することができます。そして、そのクラスが必要なアクティビティやフラグメントの近くにインジェクトし

元記事を表示

苦手なラムダ式を克服する

## はじめに
今までラムダ式は**コードを簡潔に書ける便利なもの**くらいの理解でしかなかったので、今回はラムダ式を分解しながら克服していこうと思います。

## ラムダ式とは
> ラムダ式(lambda expression)とは、プログラミング言語に用意された記法の一つで、名前の無い無名関数(匿名関数)を簡潔に定義するもの。

よくわかりません。実際にコードで理解していきます。

## 前提知識
ラムダ式は**ローカルクラス**と**無名クラス**という仕組みを利用しています。

### ローカルクラスとは
ローカルクラスは**メソッド内で宣言するクラス**のことです。
インターフェースを実装したローカルクラスも定義できます。
“`java
public static void main(String[] args) {

class Local implements Runnable {
@Override
public void run() {
System.out.println(“Hello Lambda!”);
}
}

元記事を表示

UI状態をdata classで管理する時の大体のお決まりっぽいもの

# 概要

AndroidでUI状態を管理するときにいろいろやり方があると思いますが、UiState状態をdata classで定義しておいて使用する方法があると思います。
使用する際に「これどうすれば良いんだっけ?」と思うことがあるのである程度のお決まりみたいなものをまとめておきます。

## 定義するとき

“`SampleViewModel.kt
// ViewModelの外に定義しておく
// プロパティ多いようだったら別ファイルにした方が良いかも
data class SampleUiState(
val message: String = “”,
val loading: Boolean = false,
val user: User? = null
)

@HiltViewModel
class SampleViewModel @Inject constructor() {
….
}
“`

## ViewModel内で使うとき

updateとcopyを使っていきます。ただコードが長くなりがちなので、拡張関数を何かしら作っておくと

元記事を表示

【個人開発】オススメするハードルの低い、コンテンツシェアアプリ「Recomd」を作りました!

 
はじめまして、個人開発でアプリを作っているcatos/katoです。今回、アプリのきっかけとなるアイデアを思いついてから、5年くらい寝かせていたオススメするハードルの低い、コンテンツシェアアプリ「Recomd」(リコム)をリリースしました!
 

https://apps.apple.com/jp/app/recomd-%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E5%85%B1%E6%9C%89%E3%82%A2%E3%83%97%E3%83%AA/id6483865543

https://play.google.com/store/apps/details?id=com.catos.Recomd

# アプリの概要
このアプリは、Youtube、Netflix、ジャンプ+などのアプリで閲覧できる様々なコンテンツをレビューして共有するアプリになります。友達同士で、良いと思ったコンテンツを気軽にオススメしあったり、自分の好みと近い人を見つけることができます。(気軽に、どこかの誰かにオススメしたい時にも使えます。)

# アプリ開発のきっかけ

元記事を表示

JetpackComposeで指でポイントを動かすSlider

# Slider
サクッとSliderの使い方を紹介します。

“`
var sliderPosition by remember { mutableStateOf(0.0f) }
Slider(
value = sliderPosition,
onValueChange = { sliderPosition = it }
)
Text(text = sliderPosition.toString())
“`

![スクリーンショット 2024-04-21 22.48.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394054/27bd4a92-e11c-6e0d-352a-2ddb863f168d.png)

sliderPositionの値を変えることでスライダーの配置を変えることができます。
指定できる数は0f〜1fで小数点で細かく指定することもできます。
ここから、*

元記事を表示

JetpackCompose の DatePickerの色を調整したいとき備忘録

JetpackComposeの`DatePicker`を使用している時に、各場所の色をデフォルトから変更したいことがあると思います。
そういう場合に、`DatePickerDefaults.colors`のどこを変更したらどの色が変わるのかというのを記録したメモです。

# 環境
`androidx.compose.material3:material3:1.2.1″`
です。

# デフォルト(何も調整しない時)

– コード

“`kotlin
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SampleScreen() {
DatePicker(
state = rememberDatePickerState(
),
)
}
“`
(普通は`DatePickerDialog`などに包んで使うとは思いますが、今回はそこは省略)

– こんな感じ

Unity IAP完全攻略への道:消耗型編

# はじめに
Unityで商用スマホアプリを作成すると避けて通れないのがアプリ内課金。
直近課金を実装することが多く、同じUnityエンジニアのお役に立てればと思い備忘録として残します。

アプリ内課金には消耗型・非消耗型・サブスクがありますが、
本記事では第1弾として、消耗型をUnity IAPでどのように実装するかを説明します。

ご指摘・ご質問お待ちしております。🙏

# 準備
### Unity IAP(In App Purchase)パッケージ導入
メニューバーより、[Window] > [Package Manager]を選択、するとウィンドウが現れます。
左上のドロップダウンを[Packages: Unity Registry]に変更し[In App Purchasing]を選択し右下のインストールを押せば導入完了です。
![スクリーンショット 2024-04-20 17.05.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323576/d4e7e93e-3e95-b7d2-e2e5

元記事を表示

Jetpack composeを使って画面内を画像として保存する

# はじめに
今回はJetpack Composeを使って画面内を画像として保存する方法を紹介していきます。
少しいじるだけで任意の箇所を画像として保存することもできるようになるのでぜひお試しください
### 本文
早速ですがコードを書いていきます
“`kotlin:Screen
suspend fun toBitmap(activity: Activity): suspend coroutine {
activity.window?.let {
val view = it.decorView
// 今回はRGBの各8ビット
val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888)

// ソース,画面内で使用するRect,書き込み先のBitmap,完了時コールバック,コールバックを呼ぶスレッド用のHandler
PixelCopy.request(

元記事を表示

【jetpack compose】自作アプリにダークモードを適用しよう

白い画面がまぶしいと感じるときに恋しくなるのがダークモードの黒。今回はこのダークモードを自作のアプリにも適用していきます。
# ベースになるアプリ

https://github.com/jtakumi/jetpackComposebasic/tree/viewModel

画像をクリックした回数をカウントするアプリで、viewModelを導入しているため画面を回転させても回数がリセットされないものです。

# 今回登場するツール

https://m3.material.io/theme-builder#/custom

↑ベースにする色を1色設定するだけでそのほかの色を勝手に設定してテーマカラーを作成してくれる最高のサイト🎨

– Color.kt
jetpack composeのプロジェクトを作成すると**自動生成されるカラー設定ファイル**

– Theme.kt
こちらも自動生成されるファイル。**テーマの設定**を行う

# 実際の動作の様子

元記事を表示

Android アプリで Firebase ネットワークタイムアウトエラー:A network error (such as timeout, interrupted connection or unreachable host) has occurred.

# これなに
Flutter でアプリ実装したけど、Android でネットワークタイムアウトエラーになってしまう事象に遭遇したので調べた
“`zsh
E/RecaptchaCallWrapper(25265): Initial task failed for action RecaptchaAction(action=signUpPassword)with exception – A network error (such as timeout, interrupted connection or unreachable host) has occurred.
“`

# エラー内容全文
なんかよくわからないけどネットワークがタイムアウトしたらしい。
“`zsh
I/FirebaseAuth(25265): Creating user with hoge@hoge.com with empty reCAPTCHA token
W/System (25265): Ignoring header X-Firebase-Locale because its value was nu

元記事を表示

警告「Optional Modifier parameter should have a default value of Modifier」の回避方法

## あらすじ
[Jetpack Composeの公式チュートリアル(インタラクティブな Dice Roller アプリを作成する)](https://developer.android.com/codelabs/basic-android-kotlin-compose-build-a-dice-roller-app?authuser=1&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-2-pathway-2%3Fauthuser%3D1&hl=ja#2)を進めていたら、以下の警告が出ました。

![スクリーンショット 2024-04-20 9.59.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744909/ca95ae81-3819-28f8-a505-f410255586a3.png)

![スクリーンショット 2024-04-20 9.5

元記事を表示

Android studio 「Unresolved reference: main」エラー

# Android開発でのUnresolved Referenceエラーの解決方法

Androidアプリケーションの開発中には様々なバグやエラーに直面することがあります。今回取り上げるのは、Kotlinを使用したAndroidプロジェクトでよく見られる「Unresolved reference」エラーです。このエラーは、プロジェクト内の参照が解決できない時に発生します。具体的には、以下のようなエラーメッセージが表示されることがあります。

“`
e: file:///YourProjectfilepath/app/src/main/java/com/websarva/wings/android/hellosample/MainActivity.kt:14:69 Unresolved reference: main
“`
このエラーは、MainActivity.kt ファイルの特定の行で main という名前が解決できないという問題を指摘しています。

## エラーの原因
エラーメッセージによると、main というIDが見つからないために発生しています。このIDは通

元記事を表示

テスト時に起きるエラー対処: Execution failed for task ‘:app:processDebugLocalGoogleServices’.

## 概要
Androidのモバイルアプリ開発において、CD/CIの設定などで ./gradlew test コマンドによるユニットテストを実行したい時がありました。しかし、Firebaseのエラーが起きてテストを実行できませんでした。
エラー内容は
“`
Execution failed for task ‘:app:processDebugLocalGoogleServices’.
“`

バリアントを複数設定しているときにパッケージ名をうまく探せないようで起きてしまうようです。

## 解決策

環境を指定してテストを実行すると直りました。

“`shell:
./gradlew testDebugUnitTest
“`

debugの箇所は設定しているビルドバリアントです。
例えば stage バリアントがあるのならば次のようでも良いです。

“`shell:
./gradlew testStageUnitTest
“`

<参考>

https://developer.android.com/studio/test/command-line?hl=

元記事を表示

Androidデバイスでローカル(Androidデバイス内)にデータベースを構築する

この記事はAndroidデバイス内にSQLiteを用いて`mydatabase.db`としてファイル形式でデータベースを実装する方法について説明する.
>API通信を実装してリモートでデータベースにアクセスする方法については以下の記事を参照すること.
>https://qiita.com/tarakokko3233/items/0961933e2b9695cb561a

>**SQLiteとは**
>軽量でサーバーレスの関係データベース管理システム(RDBMS)のこと.SQLiteはサーバーを必要とせず,モバイルアプリ,デスクトップアプリ、ブラウザ拡張機能など,幅広い用途に組み込むことができる.

## 1.AndroidStudioでアプリケーションプロジェクトを作成
AndroidStudioを開き,以下のようにプロジェクトを作成する.今回はJavaを用いて以下のようにプロジェクト名とパッケージ名とSDKのバージョンを指定した.
>このPackage nameは後でデータベースファイルにアクセスする際に必要なので覚えておくこと.

![スクリーンショット 2024-04-19 12

元記事を表示

Android タイトルバーを表示する

Android studioでAndroidアプリを制作していて、タイトルバーがデフォルトで表示されない設定となっていました。なので、表示させる方法を紹介します。

プロジェクト作成時にEmpty Views Activityを指定した想定で進めます。
![スクリーンショット 2024-04-18 19.58.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1215907/8bb3032e-9553-aefb-afad-ac21fd01717e.png)

### 1. Androidビューでファイルを開いてthemes.xmlファイルを探す
themes.xmlファイルはapp/res/values/themeフォルダに格納されています。
![スクリーンショット 2024-04-18 20.03.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1215907/49090d1d-e401-2912-9aaf-76

元記事を表示

Android Studioのコードのデフォルト折りたたみ設定の解除

# はじめに

Android Studioのデフォルト設定で、一部コードがデフォルトで折り畳まれるのが見辛かったので、設定変更した時の忘備録。



# デフォルト表示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758686/27c8f85e-40bc-95f1-37f0-069c1db5f518.png)

いい感じのところがなかったのでimportの部分を参考として出しますが、
上のような感じで、デフォルト設定だと折り畳まれてコードが隠されています。


# 設定変更

![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758686/9bb4c008-d112-9c97-65eb-0cac18926c52.png)

メニューバー

元記事を表示

androidでカメラを使う(なるべくシンプルな方法)

# 手順
いや、これでもシンプルな方なんですよ。たぶん。すげえ大変そうだけど。

![Apr-17-2024 10-16-51.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/33db36af-a718-f431-f21c-d93d9545e864.gif)

1、アプリからデバイスのカメラを立ち上げる
2、撮影した画像をデバイスのストレージに一時保存する
3、一時保存したファイルを読み込んで使う

という流れです。
なぜ画像を一時保存するかというと、カメラからそのまま画像を受け取ると低画質になるからです。

### カメラとファイル保存の設定

manifests/AndroidManifests.xmlにカメラとストレージの仕様設定を追加。

manifest内のapplicationと同階層に以下を追加。
これはカメラのハードウェアと、カメラ権限、デバイスストレージの使用権限を設定しています。

“`xml:AndroidManifests.xml

元記事を表示

OTHERカテゴリの最新記事