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

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

「System.InvalidOperationException: PE image does not have metadata.」が発生したときの対処法

#### 参考記事
https://stackoverflow.com/questions/75907689/cause-for-xabba7009-system-invalidoperationexception-pe-image-does-not-have-m

#### 事象
– .NET MAUIの環境構築で、どっかのタイミングでAndroidを起動しようとしたときに以下のような`PE image does not have metadata.`といったエラーが表示されました。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/789abdd0-2a83-1210-c1b2-10085f9826cb.png)

#### 修正方法
– NugetパッケージにインストールしていたSystem.Data.SQLiteを削除するとうまく起動できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

xxnxxvn.com

xxnxxvn.com is a collection of many great movies from around the world. Along with HD video quality
https://xxnxxvn.com/

元記事を表示

GitHub Actionsを使って、Androidアプリのリリースを自動化する

# はじめに
最近、社内のアプリチームで、ストアへのアップロード手順を簡略するために
GitHub Actionsの導入を検討しています。
今回は、ビルドしたアプリを内部テストトラックに向けて配布するまでの手順を
ご紹介したいと思います。

# 手順

## サービスアカウントの作成
Google Play Consoleにアップロードするとき、
認証のためにGoogle Cloud Platform(GCP)のサービスアカウント情報が必要になります。
ここではサービスアカウントの作成についての手順を紹介します。
### Google Play ConsoleからGCPのプロジェクトページにアクセスする
![スクリーンショット 2023-10-02 16.17.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123957/636bafdc-7c70-a6ff-62b1-79fbcf024e2a.png)

### 追記: Google Play ConsoleからGCPの連携が不要になりました
記事

元記事を表示

Androidでminioにデータを送るのは簡単なんだ.でも依存関係で地獄を見た.

# はじめに
始めまして.
この度はAdvent Calendar[「Qiita学生iOS&Androidエンジニアのカレンダー」](https://qiita.com/advent-calendar/2023/android_ios_students)に誘われたので初めてQiitaに記事を書こうと思います.

## minioとは
オンプレミスなAWS S3です.
[minioの公式サイト](https://min.io)

画像とか動画とかAPIで通信するには適さないなぁ〜
でもAWS契約するのもなぁ〜
自宅にサーバあるのになぁ〜
って人におすすめです.

## 今回は何を?
minioのサーバがあるとして,Androidでminioにデータ(CSVファイル)を送信してみようと思います

[minioのJavaクイックスタートドキュメント](https://min.io/docs/minio/linux/developers/java/minio-java.html)

## はじめよう

まずはGradleにminioの依存関係を書きましょう.
`implementation ‘

元記事を表示

invisible風のEditTextにfocusを当てようとした時にハマったこと

## 本記事について
– あまりないケースかもしれませんが、invisible風(画面にフォームは出したくないけど入力はできる)にカスタマイズしたEditTextにfocusを当てようとして、ハマったことがあったのでメモ書き程度ですがまとめてみました。

## 対応内容
– 以下のような属性を指定したEditTextを用意します。(次項に記載のポイントが満たせていれば属性の設定値はアレンジ可能)

“`xml

元記事を表示

BLEを使ってスマホとPCのブラウザでファイル共有

超久しぶりの投稿です。
今回は、BLEを使ってAndroidやiOSのスマホと、PC側のブラウザを使ってファイルの共有をします。
スマホにはCordovaを使ったネイティブアプリをインストールする必要があります。
スマホのネイティブアプリは、AndroidとiOSで動作を確認しました。

通信手段はBLEを使うので、PC側の事前の準備は不要です。Bluetoothドングルを買っておくぐらい。
また、ブラウザのWebBluetooth APIを使っているので、インストールは不要です。なので、PCじゃなくてもスマホのブラウザでも動作します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/c5ac222d-00e6-4780-866a-47ae79bf674f.png)

ソースコード一式は以下のGitHubにあります。

poruruba/BleDataShareTool

https://github.com/poruruba/BleDataShareTool

また、ブラ

元記事を表示

【自分メモ】「Enumクラス」の「ArrayList」の初期化と「values()」と【復習メモ】

“`kotlin
var prefItems: ArrayList = arrayListOf()

for (i in PrefLatLon.values()) {
prefItems.add(i.pref)
}

enum class PrefLatLon(val pref: String, val prefLat: String, val prefLon: String){
TOKYO(“東京”,”35.01833″, “139.5986”),
OSAKA(“大阪”,”34.62278″, “135.5111”),
KYOTO(“京都”,”35.25194″, “135.4458”),
FUKUOKA(“福岡”,”33.5225″, “130.6681”),
HOKKAIDO(“北海道”,”43.46722″, “142.8278”),
OKINAWA(“沖縄”,”25.77111″, “126.64”)
}
“`
# 【以下、コードの解説】

「= arrayListOf

元記事を表示

android-sdk を ubuntu22.04 で【Flutterビルド用にCLIだけ入れる】

## 入れ方めっちゃあるやんけ

Flutter楽しいですよねー! 高パフォーマンスなアプリが iOS/Android 用にサクサク作れます。

僕らのチームの場合「開発初期は殆ど iPhone」で進めて、
「リリースが近づくと Android もテストを始める」感じです。

で、いつも問題になるのが android-sdk のインストール法…いつも忘れちゃう

出来れば Mac に重たい AndroidStudio を入れなく無いので、ビルドだけサーバに回そうと思ったのですが、「CLI のみのインストール」にとにかく罠が多いのです。
ここでは僕らのチームの最適解として、なるべく最小の手間で使えるようにしたいと思います。
CI/CD関連の方にも参考にして頂けるのかなと思います。
(flutter そのものの入れ方は割愛します。 fvm でも snap でもお好みの方法でどうぞ)

## ubuntu の apt レポは神
“`bash
sudo apt update && sudo apt install android-sdk openjdk-17-jdk
“`

いきなりで

元記事を表示

底辺高校生がKotlinをいじってhololiveのアプリを作る話 ~最初の画面~

自己紹介
=
みなさんこんあくあー⚓️
junkcomputerというものです。底辺高校一年生であくあクルー。いじれる言語はKotlinくらい

今回開発するアプリ
=
hololive推し活ノート
その名の通りhololiveの推し活するために、カレンダーやメモ機能を付けた多機能アプリを作ろうと思ってます。
今後のアップデートでFirestore使って、Cloud型にするのもありかなと思います。

環境
=
Android Studio Giraffe
OS:Windows 11 Home
CPU:Core i7-10700
RAM:32GB

コーディング
=
とりあえずそのまま載せておきます(需要あるかは知らん)
“`kotlin:MainActivity.kt
package com.akutan.osigoto

import android.content.Intent
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bun

元記事を表示

OpenGLのVBOを活用した高速化

OpenGLで描画する際にVBO(頂点の格納場所)をうまく活用することで高速化した話。

高速した後は描画のコマ落ちが解消されています。
(左:高速化前、右:高速化後)


開発アプリPR

【Android】アプリ内からGoogle Playのアプリ詳細へ飛ばす方法【Kotlin】

# はじめに
以前、[アプリ内から他アプリのSNSシェアをする](https://qiita.com/Tsubasa12/items/cec04e137ed613d53ccb) といった記事を書いたのですが、それと似たような内容になります。
短めですが、自分のメモ用と思っていただければと思います。

# 実装

val uri = Uri.parse(“market://details?id=パッケージ名”)
val intent = Intent(Intent.ACTION_VIEW, uri)
startActivity(intent)

以上になります。

アプリのレビューを書いてもらう際などに直接アプリページへ飛ばせるので、役立ちそうです。

元記事を表示

JetpackComposeでCheckboxの色を変更する方法

JetpackComposeでCheckboxの色を変更する方法です。

Checkboxを使用する機会があったので、共有しようと思います。

# サンプルコードはこちら
“`CheckboxSample.kt
@Composable
fun CheckboxSample() {
val checked = remember { mutableStateOf(true) }
Checkbox(
modifier = Modifier
.size(24.dp),
checked = checked.value,
onCheckedChange = { checked.value = it },
colors = getCheckboxColors()
)
}

/**
* チェックボックスの色指定
*/
@Composable
private fun getCheckboxColors(): CheckboxColors {
return object: Chec

元記事を表示

【Bingで解説】「window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN」って何?

#条件
以下のコードはAndroidのコードです。

以下のコードについて小学生でも理解できるくらい
丁寧に解説して頂けますか?

“`kotlin
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
“`

`window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN` は、Androidアプリのステータスバーを非表示にするためのコードです¹。

ステータスバーは、通常、時刻やバッテリー残量などの情報を表示するために使用されます。

フルスクリーンモードでアプリを実行する場合、ステータスバーを非表示にすることができます。このコードは、ステータスバーを非表示にするために使用されます。

`window.decorView`は、アプリのウィンドウを表します。

`systemUiVisibility`は、システムUIの表示設定を変更するためのフラグを設定するために使用されます。

`View.SYSTEM_UI_FLAG_

元記事を表示

【Android】AppLink対応に必要なJsonファイルの作成手順まとめ

# はじめに
いつからか不明ですが、PlayConsole上でAppLinkに対応していないDeepLinkがエラーとなるようになりましたね。
このエラーを解消しない限りAndroid12からは想定通りの動作をしないわけですが、この問題を解消するためには指定のパスへJsonファイルを配置し、検証する必要があります。
今回はこのJsonファイルの作り方を備忘録的にまとめておこうと思います。

# AppLinkとは?
そもそも事の発端であるAppLinkとは何かというのを簡単にまとめておこうと思います。

> ユーザーを Android アプリの特定のコンテンツに直接誘導する HTTP URL です。Android アプリリンクはアプリへのトラフィックを増やし、よく使用されているコンテンツを把握するのに役立ちます。ユーザーにとっては、インストールしたアプリ内のコンテンツを見つけたり、共有したりするのが簡単になります。

とのことです。
よりユーザビリティに特化した機能ということで、Android12からはほぼ対応が必須となっている重要な技術ですね。

※ちなみに必須と述べていますが、An

元記事を表示

複雑なDeepLinkをJetpackComposeで実装するPart2

# はじめに
今回は、複雑なDeepLinkが来たときやDeepLinkの内容によってホーム画面で出しわけないといけない時の実装を紹介していきます

### 本文
本パートではMainActivityで取得したDeepLinkを利用してUIを表示しているMainViewの実装を紹介していきます
MainViewではViewModelを持ってDeepLinkの遷移先を判定します。
判定方法はプロジェクトやリンクによって変わるので省略しますがよしなに実装をしてください。
“`kotlin:MainView
@Composable
fun MainView(
viewModel: MainViewModel,
navController: NavHostController = rememberNavController(),
deepLink: Uri?
) {
Scaffold() {
MainNavGraph(navController, navigateScreenType = viewModel.checkDeepLink(deep

元記事を表示

【Bingで解説】「windowSoftInputMode」って何?

「windowSoftInputMode」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「windowSoftInputMode」とは、Androidアプリの画面において、キーボードが表示された際に、画面のレイアウトをどのように変更するかを指定する属性です。この属性を指定することで、キーボードが表示された際に、画面のレイアウトが崩れることを防ぐことができます。

例えば、adjustResizeという値を指定することで、キーボードが表示された際に、画面のレイアウトを自動的に調整して、キーボードが表示された状態でも画面全体を見ることができるようになります。

# 【引用】
Androidアプリでキーボードの上までスクロールできるようにする
https://qiita.com/hishida/items/e25dfa4d75caeabda9a3

AndroidアプリのEditTextを含む画面でキーボードを非表示にする
https://qiita.com/hishida/items/8bf1aa28ef62ef22a7f9

[Android]EditTextの

元記事を表示

KMP + Koin で DI (Dependency Injection)

# はじめに

今の時代、モジュール間は疎結合、ユニットテストはスタブを注入!💉💉💉

というのが定番みたいだし、実際にも開発しやすいので、
[KMP](https://www.jetbrains.com/kotlin-multiplatform/)[^1] でも Dependency Injection(以下DI)していきたいです。

KMP は開発言語が Kotlin なわけですが、
Android 向けに [Dagger Hilt](https://developer.android.com/codelabs/android-dagger-to-hilt?hl=ja#0) という DI フレームワークがありつつも、残念ながら KMP 非対応です。

じゃあ KMP の場合は何を使えば良いのか?

ということで、自分がいちばん慣れてる [Koin](https://insert-koin.io/) を使ってDIを実現してみます[^2]。

# ライブラリ追加

まず、これがないことには始まりませんので。
[ここ](https://insert-koin.io/docs/refere

元記事を表示

【Bingで解説】「isLetter」って何?

「Jetpack Compose」に出てくる「isLetter」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。

imeActionは、テキストフィールドに表示されるソフトウェアキーボードの右下にあるボタンのことです。

このボタンをタップすると、キーボードが閉じられたり、次のテキストフィールドにフォーカスが移動したりします。例えば、ログインフォームで「パスワード」フィールドに入力が終わったら、imeActionを「Done」に設定することで、キーボードを閉じることができます¹²³。

また、isLetterは、Kotlinの標準ライブラリで提供されている関数の一つで、引数に渡された文字がアルファベットの場合にtrueを返す関数です⁴。例えば、以下のように使用することができます:

“`kotlin
val c = ‘a’
if (c.isLetter()) {
println(“$c is a letter”)
} else {
pr

元記事を表示

【Bingで解説】「imeAction」って何?

「Jetpack Compose」に出てくる「imeAction」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。

imeActionは、テキストフィールドに表示されるソフトウェアキーボードの右下にあるボタンのことです。

このボタンをタップすると、キーボードが閉じられたり、次のテキストフィールドにフォーカスが移動したりします。例えば、ログインフォームで「パスワード」フィールドに入力が終わったら、imeActionを「Done」に設定することで、キーボードを閉じることができます¹²³.

以上が、imeActionの簡単な説明です。¹²³¹: [ImeAction | Android Developers](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/input/ImeAction)
²: [JetpackCompose KeyBoard Options

元記事を表示

【Android】launch(Dispatcher.Main.immediate) の呼び出し元も launch(Dispatcher.Main.immediate) だった場合、即時実行されない

:::note info
この記事では、簡単のため、[`CoroutineScope`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/) として [`GlobalScope`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-global-scope/) を使用する。
:::

## 要約

次のコードを実行すると、

“`Kotlin
GlobalScope.launch(Dispatchers.Main.immediate) {
launch(Dispatchers.Main.immediate) {
Log.i(“”, “in launch”)
}
Log.i(“”, “after launch”)
}
“`

期待に反して、[`lau

元記事を表示

OTHERカテゴリの最新記事