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

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

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

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

### 本文
本パートではMainViewで表示するための遷移用ネストナビゲーション部分を実装していきます。
ネストナビゲーションとは従来のNavGraphファイルをKotlinで書いたもので、基盤になるViewやBottomNavigation等のナビゲーションを一括で持っておく場所のことです。
`startDestionation`には最初に表示したいViewのユニークIDを、`route`にはそのNavGraph用のユニークIDを設定します
各種IDはObject等で一箇所にまとめておくと便利です。
“`kotlin:NestNavigation
fun NavGraphBuilder.hogeNavGraph(
navController: NavHostController,
navigateScreenType: NavigateScreenType
) {
navigation(startDesti

元記事を表示

【Android】WorkManager実装時に使えるテンプレートまとめ

# はじめに
少し前の話ですが、Android12からフォアグラウンドサービスの起動に関する制限が入り、本格的にWorkManagerへの移行を余儀なくされましたね。
公式でも代替策としてWorkManagerの使用を提示していました。
また、現時点で正しく上記に対応できていないと、ForegroundServiceStartNotAllowedExceptionにより見事にクラッシュしてしまう最悪の結果を招くことになります。

今後は特別な理由がない限りWorkManagerを優先して使用すべきだと思いますが、このWorkerの実装はプロジェクトの性質によってはそれなりに使用頻度が多く、毎度実装方法を確認するのも手間なので、今回はコピペで使えるテンプレートを記事としてまとめておこうと思います。

# WorkManager実装テンプレート
テンプレートは一度きりの起動と、繰り返し起動の設定2種とWorker側の基本的な実装をおいておくことにします。

まず、一度きり起動する場合の起動時の設定をテンプレートとして記述します。
“`main.kt
// TODO 起動条件を個々に合わせ

元記事を表示

Camera2 APIを使ってカメラアプリを作ってみた(Kotlin)

起動編

カメラを起動させるためにまずは権限を確認する

permissionをすべて調べて許可されていなければポップアップを出して、許可を求めるようにしている
“`
private val requiredPermissions = arrayOf(Manifest.permission.CAMERA)

companion object {
private const val CAMERA_PERMISSION_REQUEST_CODE = 1001
}

(中略)
//権限の確認を行いすべての権限が付与されていればtrueを返す
private fun allPermissionsGranted() =
requiredPermissions.all {
ActivityCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED
}

overr

元記事を表示

gRPCのServer-side streamingをクライアント側(Kotlin)からキャンセルする

# はじめに
gRPCのstreamingについて、クライアント側からキャンセルする方法のサンプルが見つからなかったため調査しました。
(bi-directional streamingについては[公式にサンプル](https://grpc.io/docs/guides/cancellation/#language-support)があるのでそちらを参照)
# プロトコル定義ファイル
サンプル実装用に以下のプロトコル定義ファイルを用意しました。
“`proto:helloworld.proto
syntax = “proto3”;

option go_package = “github.com/Aniokrait/goGrpcServer2/helloworld”;

package helloworld;

service Greeter {
// レスポンスをstreamにしています。
rpc SayHello (HelloRequest) returns (stream HelloReply) {}
}

message HelloRequest {
string

元記事を表示

「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の

元記事を表示

OTHERカテゴリの最新記事