Android関連のことを調べてみた2023年10月01日

Android関連のことを調べてみた2023年10月01日

Navigationのデスティネーションの引数の型にインナークラスを使う

## 内容
“`kotlin
package androidx.navigation.myapp

class Argument {
enum class Type {
A,
B,
}
}
“`
上記`Type`を`Navigation`コンポーネントのデスティネーションの`argument`に指定するとき、下記のように書いてしまいがちですが、エラーになります。
“`xml

“`
こちらのように$を使います。
“`xml

BuildozerファイルをカスタマイズしてAndroidアプリのアイコンを変える。

# はじめに
 Python+Kivy+BuildozerでAndroidアプリを作ることができる。ただ、Buildozerをデフォルト設定でビルドするとアイコンがKivyのマークになる。この記事では、自作のアイコンへ変更する方法についてまとめる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299802/8c70d61c-a8a2-00c7-5d3c-07a3341dd638.png)

PythonでAndroidアプリを作る方法は下記参照。

https://qiita.com/tapitapi/items/e91d67d59ed10caa59f6

# Buildozer.specをカスタマイズしてアイコン変更
 アイコン含めBuildozerの設定は、“`buildozer init“`で生成される“`buildozer.spec“`ファイルを変更することでできる。アイコン変更は“`icon.filname“`を有効にすればOK。
 “`%(source.

元記事を表示

初Androidアプリ開発 学習内容備忘録

# 内容

初Androidアプリ開発で学習した流れの備忘録、リンク集
(※ 学習中のため、今後も更新予定)

# 1. アプリ アーキテクチャ

[アプリのコンポーネント](https://developer.android.com/guide/components/fundamentals?hl=ja#Components)

[初めての Android アプリを作成する](https://developer.android.com/codelabs/basic-android-kotlin-compose-first-app?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-1-pathway-2%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-first-app&%3Bhl=ja&hl=ja#0)
[Jetpa

元記事を表示

Androidの連絡先からvCardを作成する

# 概要
`ContactsContract.Contacts.CONTENT_VCARD_URI`を使って連絡先をvCard形式で取得します。

https://developer.android.com/reference/android/provider/ContactsContract.Contacts#CONTENT_URI

# 詳細
Androidには、連絡先からvCard形式のデータを取得するContent URIがあるので、それを利用して連絡先をvCardにして取得を行います。
利用するには `READ_CONTACTS` のパーミッションが必要になるので適宜取得してください。

## vCardを取得したい連絡先を選択

まずはvCard形式で取得したい連絡先を選択します。おそらく最も手軽であろう連絡先読み込みIntentで連絡先をリストから選択して、その結果を受け取るようにします。

https://developer.android.com/guide/topics/providers/contacts-provider?hl=ja#Intents

“`Ko

元記事を表示

Windows10上のBurp SuiteとNox Playerで通信をキャプチャする環境を作ってみる

# はじめに

いまさら(2023年)ながら、まとめてみる

# 各種ツールのインストール

– [Burp Suite Community Edition](https://portswigger.net/burp)
– [OpenSSL](https://slproweb.com/products/Win32OpenSSL.html) for [Windows](https://slproweb.com/products/Win32OpenSSL.html)
– [NoxPlayer](https://jp.bignox.com/)

インストール自体はさすがに省略 m(_ _)m

今回のバージョンは、

– Windows10 Professional
– Burp Suite Community Edition 2023.10.1.1
– Win64 OpenSSL v3.1.3
– Nox Player v7.0.5.8(2023/09/11) (Android9相当!?) (ダウンロードしたらv7.0.5.9だった)

# 認証局証明書の抽出

Burpから、証明

元記事を表示

[Android] Github Actionsでリリースビルド

https://qiita.com/shimizu-you/items/33735dcdd2f89837704f

こちらで、PR時のビルドチェックを記載しましたが、リリースビルドする方法も記事にしたいと思います。

### 準備

準備として、Githubの設定で、Actions secrets and variablesのsecretsにkey情報を保存します。
保存する情報としては、下記になります。
KEY_ALIAS
KEY_PASSWORD
STORE_PASSWORD
KEYSTORE_BASE64

KEYSTORE_BASE64は、署名書をbase64に変換した文字列を格納します。
下記のコマンドを実施して表示された文字列を保存してください。
“`
cat release.keystore | base64
“`

### Github Actions

“`yml
name: Tag Release

on:
workflow_dispatch:
inputs:
tag:
required: true

permissi

元記事を表示

Google Play Consoleでアプリを移行するときに、移行先がやっておくべきこと

# はじめに
最近、Google Playのアプリをアカウント間で移行することがありました。
そのときに、想定していなかった事項で手間取ることがあり、
今後、移行する方向けに記録として残すことにしました。

# 1. 本人確認
まず、移行先でアプリを公開するためには本人確認を行う必要があります。
Google Play Consoleの左のペインの「すべてのアプリ」のページ内から設定できます。
**登録完了後、2~3営業日ほどかかる** ので、なるべく早く対応しましょう。

![スクリーンショット 2023-08-25 9.50.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123957/b0bf6809-1851-b795-0f0e-8b15e859cc26.png)

![スクリーンショット 2023-08-25 9.48.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123957/8c53b6b9-68

元記事を表示

【Android/Java】Cognitoで認証をするときのメモ

## Cognitoでユーザーのセッション状態を確認する
“`java
try {
// Amplify プラグインの追加と初期化
Amplify.addPlugin(new AWSCognitoAuthPlugin());
Amplify.configure(getApplicationContext());
Log.i(“MyAmplifyApp”, “Initialized Amplify”);

// ログイン状態の確認
Amplify.Auth.fetchAuthSession(
result -> Log.i(“AmplifyQuickstart”, result.toString()),
error -> Log.e(“AmplifyQuickstart”, error.toString())
);
} catch (AmplifyException error) {
Log.e(“MyAmplifyApp”, “Could not initialize Amplify”, erro

元記事を表示

[Android] Github Actionsでビルド

AndroidのPRに対して、Bitriseでビルドしていたのですが順列処理なので、ビルドに時間がかかってました。
なので、Github Actionsに切り替えようと思ったのですが、情報があまりなかったので、自分でまとめてみようと思います。

### 準備

Androidのプロジェクトに下記を追加する。
ファイル名は、任意で大丈夫です。

“`
.github/workflows/pr.yml
“`

### Github Actions

“`yaml:pr.yml
name: Pull Request

on:
pull_request:
types: [ opened, synchronize, reopened ]

permissions:
contents: write
actions: read

jobs:
build:
runs-on: ubuntu-latest
steps:
– name: Checkout
uses: actions/checkout@v4
with:

元記事を表示

Arduinoとスマホでお家をモニタPart2【スマホで情報を受信!】

# 初めに
[前回](https://qiita.com/Antareskkudo/items/f80b74151e56759d6c67)はシステム概要の紹介と、ArduinoとBluetoothの配線・プログラム作成まで行いました。今回は全体構成図の「**Bluetoothの情報をスマホで受け取る**」部分をやっていきます。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1100334/5ade8514-4ec5-b83a-b0dc-23ce437c101e.png)

ここからが難しいですが楽しいところです!作者もわかっていない部分がありますので、できるだけ解説しながらやっていきますが、わからない・その説明間違っているって場合にはコメントください!

# 概要
本記事で紹介するシステムは以下の通りです。前回のBluetooth送信機(RN-42)で送信したデータは**Bluetooth SPP(Serial Port Profile)プロトコル**を使用しています。このプロトコルはシリアル

元記事を表示

adbをAndroid端末にインストールする方法

## 環境
“`
OS: macOS 11.5.1
“`

## 前提条件
– USBを用意しておく

## 手順
1. PCとデバイスをUSBで接続
– デバイス側から接続を許可する
2. ターミナルで`adb devices`
– 該当のデバイスが**device**になっていることを確認
– **unauthorized**になっている場合は、USB接続が許可されていません
![スクリーンショット 2023-09-28 18.00.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534018/27de4b4c-6e27-e1d1-90e0-443aef340e1b.png)

3. `adb -s デバイス名 install xxx.apk` でインストール
![スクリーンショット 2023-09-28 18.10.15.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

FDLやカスタムURLスキーム実装時に気をつけたいこと

# はじめに
今回はAndroidでFDLやカスタムURLスキーム実装をする際に気をつけたいことを紹介していきます
### 本文
今回、自分が少しハマってしまったのが取得タイミングです
自分は今まで`onCreate`でデータを取得するようにしていましたが、そうするとアプリがバックグラウンドにある時にうまく取得できませんでした。
そこで下記のように実装することでバックグラウンド等関係なく取得することに成功しました。
また、`intent`を渡すようにしないと`onNewIntent`でのカスタムURLスキーム取得がうまくいかないので注意が必要です
“`kotlin
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkLink(intent)
}

override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent

元記事を表示

モバイル端末の発熱情報をUnreal Engine上で取得する

iOSとAndroid端末の発熱状況をUE上から参照する方法を調査してみました。

まず、iOS/Androidそれぞれのネイティブプラットフォームの発熱情報について軽く説明します。

# iOSの熱ステータス

参考元:
https://developer.apple.com/documentation/foundation/processinfo/thermalstate

* nominal : 通常範囲
* fair : やや上昇している
* システムの対策:ファン開始、すぐに必要されないバックグラウンドタスクの停止、等
* 推薦されたアプリの対策:バックグラウンドタスクの削減(例:バックグラウンドダウンロードの停止、DBインデックス更新の停止、等)
* serious : 高い
* システムの対策:ファンがフルスピードで稼働、パフォーマンスに影響するリソース削減(例:I/O,CPU,GPUの使用の削減、60FPS→30FPSにカット)
* 推薦されたアプリの対策:I/O,CPU,GPUのようなシステムリソースの使用の削減(例:グラフィック品質設定を低に

元記事を表示

PythonでAndroidアプリを作る。

# はじめに
PythonアプリをAndroidで動かす場合2つの手段がある。
1. **Pydroid3でPythonスクリプトを起動する。**
Pydroid3はGooglePlayからインストールできるアプリ。PythonスクリプトをAndroid上で動かすIDE。pipも使えるので、PC上のPythone IDEを使うのとほぼ変わらない。KivyでGUIを書けば、アンドロイドアプリを起動しているのと変わらない。ただPydroid3を起動して、該当のPythoneアプリを実行するという2段階の処理をしないといけないので、アプリアイコンクリックで一発起動させるということはできない。

2. **Kivy+Buildozerでアンドロイドアプリを作る。**
Buildozerは、KivyでGUIを書いたPythonアプリを、apkファイルにパッケージ化するツール。このapkファイルをAndroidにインストールすれば、アンドロイドアプリとして動作する。

 本記事は2について、Windows環境でBuildozerのインストールから、パッケージ化までの一連の流れをまとめる。

# 目

元記事を表示

Jetpack Compose、Modifier.shadowの罠

ある日、ほぼほぼ三角形の形状をしたdrawableに影をつけたくなりました。[^fact]
そういうときは`Modifier.shadow`を使えばいいですね。
[^fact]: デザイナーからの指定

例えばこんな風に。

“`kotlin:composable.kt
modifier = Modifier
.shadow(
elevation = 2.dp,
shape = GenericShape { size, _ ->
moveTo(x = 0f, y = 0f)
lineTo(size.width, 0f)
lineTo(size.width / 2f, size.height)
},
spotColor = Color(0xFF000000),
ambientColor = Color(0xFF000000)
)
“`

ところがどっこい、影はつくけどdrawableの外側がやたらギザつきました。
はて

元記事を表示

ローカル環境で外部ライブラリを使用する方法

### ローカルにライブラリをダウンロードしてきて使いたい

というときのやり方をまとめておきます

## 実行環境

Android Studio Framingo

### 1.ライブラリをダウンロードしてくる
例えば、Gsonであれば、
https://mvnrepository.com/artifact/com.google.code.gson/gson
にアクセスすることで、データのダウンロードが行えます。
ここで、使用したいバージョンの.jarファイルをダウンロードしてきます。
### 2.jarファイルを使用したいAndroidStudioProjectのフォルダに入れる
project名→app→libsフォルダ内に.jarファイルを入れます
(libsフォルダがなかったら作成してください)
### 3.gradleで依存関係を記述する
gradle(app)のdependencies内で
“`kotlin
implementation files(‘libs/gson-${ver名}.jar’)
“`
のように、libs/使用したいライブラリファイル名の形

元記事を表示

モバイルアプリのアクセシビリティ対応(スクリーンリーダー、VoiceOver)

# はじめに
以前に[プロジェクトで行ったVoiceOver対応(読み方の変更)](https://qiita.com/repepe2en/items/42c8dc1e679a31c96c24)を投稿しましたが、今回はアプリ全体で行った対応について、目標にしているところとその対応方法をまとめて備忘録としてまとめます。

自分の参加しているプロジェクトでは[Apache Cordova](https://cordova.apache.org/)というモバイルアプリ開発向けのフレームワークをベースに開発を行っています。
技術的には3割ほどネイティブの実装で他はwebの技術を利用しています。
なので、iOS,Androidとタグにありますが、この記事ではHTML,TypeScriptでの対応方法です。

# 方針

[Web Content Accessibility Guidelines (WCAG) 2.0](https://waic.jp/translations/WCAG20/Overview.html)に準拠したアプリの実現。
[WAI-ARIA](https://develope

元記事を表示

a-4-2-3.Retrofit2を使ったDELETEのAPIアクセス

### a-4-2-3.Retrofit2を使ったDELETEのAPIアクセス

#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)

#### 課題
3. Retrofit2でDELETEメソッドのAPIの呼び出しができるか。
3. Retrofit2のDELETEメソッドで呼び出しのBodyを取得できるか。

#### Github

https://github.com/wakizaka24/AndroidTest

#### テスト実装

“`kotlin:Retrofit2TestActivity.kt
class Retrofit2TestActivity : AppCompatActivity() {
private lateinit var binding: ActivityRetrofit2TestBinding
private var retrofit2TestService: Retrofit2TestService = Retrofit2TestSer

元記事を表示

Composeでカスタムのなんちゃってクロスフェードを作る

## 経緯

現在アプリでいろんなViewをComposeに置き換え中です。

その中で、アニメーションで子要素の表示が切り替わる`CrossFadeView`という内製のカスタムViewGroupがありました。そしてComposeにはもともと[Crossfade](https://developer.android.com/jetpack/compose/animation?hl=ja#crossfade)が備わっています。

ただ、内製の`CrossFadeView`は実際はクロスフェードせず、前のViewが完全にフェードアウトしてから次のViewがフェードインするという、**”嘘CrossFade”** だったのです……なんとまあ……。[^fact]

[^fact]: 実はこのCustomViewGroupは自分が作っている。
[^fade]: [fade through](https://m2.material.io/design/motion/the-motion-system.html#fade-through) というらしい

|クロスフェード|嘘クロスフェード[^fa

元記事を表示

a-4-2-2.Retrofit2を使ったPOSTのAPIアクセス

### a-4-2-2.Retrofit2を使ったPOSTのAPIアクセス

#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)

#### 課題
3. Retrofit2でPOSTメソッドのAPIの呼び出しができるか。
3. Retrofit2のPOSTメソッドで呼び出しのBodyを取得できるか。

#### Github

https://github.com/wakizaka24/AndroidTest

#### テスト実装

“`kotlin:Retrofit2TestActivity.kt
class Retrofit2TestActivity : AppCompatActivity() {
private lateinit var binding: ActivityRetrofit2TestBinding
private var retrofit2TestService: Retrofit2TestService = Retrofit2TestService()

元記事を表示

OTHERカテゴリの最新記事