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

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

BETULLLL MANTAAAP

https://m.imdb.com/list/ls547693060/
https://m.imdb.com/list/ls547693513
https://m.imdb.com/list/ls547691460
https://m.imdb.com/list/ls547691213
https://m.imdb.com/list/ls547690583
https://m.imdb.com/list/ls547690534
https://m.imdb.com/list/ls547648213
https://m.imdb.com/list/ls547648626

元記事を表示

AndroidでHTMLコードの変換時のあれこれのメモ

# HTMLコードの変換(装飾)
androidのAPI Lvevl が23以下なら
“`
Html.FromHtml(text)
“`
androidのAPI Lvevl が24からは ↑の方法は非推奨とされているので、 **HtmlCompat**を使う

“`
HtmlCompat.FromHtml(text, HtmlCompat.FromHtmlModeCompact)
“`

# 正規表現で一部のHTMLタグを非表示にする
imageタグを非表示にする
“`
text.replaceAll(“]*>”, “”)
“`

# 正規表現で一部のHTMLタグを他の文字に変換する
“`
text.replaceAll(““, “”)
“`

# 正規表現で特定のタグがいくつあるか数える
“`
private fun countTags(string: String): Int {
val pattern = “]*>”

元記事を表示

Android 版の Jetpack Compose に独自のテキスト選択メニューを実装する

# 概要
Jetpack Compose を使って UI を実装すると、テキスト選択時のメニューが基本的なものしか使えないので追加したくなります。

![Screenshot (2024_06_09 19 59 07).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102004/b94b3262-e6dd-2a67-995e-38b94300d453.png)

EditText のようにテキストを選択して何かしらの操作をするメニューを実装したい場合、
Android 版の Jetpack Compose では Desktop 版のようなインターフェイスは用意されていないので、別の方法で実装する必要があります。

調べたところ、TextToolbar を継承したクラスに ComposableView を渡し、従来の View の startActionMode を呼び出すことで実現できそうでした。
表示するメニューの項目は XML で定義します。
なお、これをやるとデフォルトの cut / copy /

元記事を表示

jetpack composeでcameraxとmlkitをつかってバーコード読み取り画面を実装するPart1

# はじめに
今回からJetpackComposeでのバーコード読み取り機能を実装していきます。
### 本文
今回は、まず必要なライブラリたちを追加するところからです
最近はtomlでバージョン管理をするのが流行なのでそれにのってってやっていきます
“`kotlin
code-scanner = “18.3.0”
camerax = “1.4.0-beta01”

codescanner = {module = “com.google.android.gms:play-services-mlkit-barcode-scanning”, version.ref = “code-scanner”}
camera = { module = “androidx.camera:camera-camera2”, version.ref = “camerax” }
camera-lifecycle = { module = “androidx.camera:camera-lifecycle”, version.ref = “camerax” }
camera-view = { module =

元記事を表示

【Android】バージョン分岐が必要な実装はCompat系の機能を使おう

# はじめに
対応範囲は広いプロジェクトなどは、そのバージョンに合わせて分岐するのが面倒ですよね。
そういったケースで便利なのがCoreKtxライブラリが提供するCompat系の機能ですが、実はかなりの種類が定義されていて、バージョンの分岐が必要な実装には大体Compat系の実装が用意されていたりします。
そこで今回はCompat系の実装を使うことでバージョン分岐を省略可能な実装をいくつかご紹介したいと思います。

# 準備
まず、Compat系の実装を使うには、以下ライブラリを導入する必要があります。

“`app/build.gradle
dependencies {
implementation ‘androidx.core:core-ktx:1.13.1’
}
“`

上記ライブラリは最新のプラットフォーム機能とAPIをターゲットにしつつ、古いデバイスもサポート可能となるライブラリです。
まさにバージョン分岐が必要なケースの為に用意されているようなライブラリですね。

# その1:ServiceCompat
サービス周りは最近特に厳しくてバージョン分岐も激しくなりが

元記事を表示

Flutter ドロップダウンメニューのテンプレート

# ドロップダウンメニュー (PopupMenuButton)のテンプレート

「…」を押すと出てくるメニュー

これです↓

コード

“`dart
PopupMenuButton(
onSelected: (String s){
switch(s){
case “del”:
break;

case “edit”:
break;
}

元記事を表示

【Android】RecyclerViewのイベントの実装

## はじめに
RecyclerViewで表示しているリストのタップイベントを実装しようとした時に、イベントの実装をどこに置くのがいいのか迷うことがありました。
今まではViewModelに処理を持たせてListAdapterにViewModelを渡し、ListAdapter→ViewModelにアクセスするように作っていたのですが、[公式サイト](https://developer.android.com/topic/architecture/ui-layer/events?hl=ja&_gl=1*8i836n*_up*MQ..*_ga*MTI2NTI1MjQxMC4xNzE3NTg2NjE4*_ga_6HH9YJMN9M*MTcxNzY3MTI0MS40LjAuMTcxNzY3MTI0MS4wLjAuMA..)(UI イベント)を見てみると、その方法は推奨されないとのこと。
>警告: ViewModel を RecyclerView アダプターに渡すことは、アダプターと ViewModel クラスを密結合させることになるため、おすすめしません。

公式では、ListAdapterに

元記事を表示

Androidアプリサンプルにおける単体テストのテストスコープについて調べてみた

[単体テストの考え方/使い方](https://www.amazon.co.jp/%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9-%E4%BD%BF%E3%81%84%E6%96%B9-Vladimir-Khorikov/dp/4839981728/ref=sr_1_1?adgrpid=146552030392&dib=eyJ2IjoiMSJ9.DwAMKN29hHMmZWAvUlEn2A3QQK1nnfD3KmHUkW3juAQ_ko6ILz9DBpmcn0ixQ2dfiBbmX0ZazRUq5oLHyFTvS_wKTCY5Jv43bFltrJUsbQ59eF3_BuWZK1d0xsq5AGgSSB1jngr9nXYSL6QSwTleRavEbTzlgXYngUMLtI4wn_UlndTJrNc2hn0gSqzDfzrjKaqerPTtlLgx6EeeSY8vOWTEnJ-gfi_GeFeBiUODeJ5iqH9wIvoZo3ycGUJGBoXV.equosaUSpav

元記事を表示

Hilt の kapt を ksp にする

## はじめに

kapt 、ksp って何? みたいな話は他者様の記事に任せるとして、本記事には Hilt + kapt の環境を Hilt + ksp に移行した作業のみを簡潔に記載する。

### 移行の方針

Hilt + ksp にする方針は [kapt から KSP に移行する](https://developer.android.com/build/migrate-to-ksp?hl=ja) と [Dagger KSP](https://dagger.dev/dev-guide/ksp.html) の Requirements に基づく。

> Dagger 2.48 (or above)
> Kotlin 1.9.0 (or above)
> KSP 1.9.0-1.0.12 (or above)

### 環境

AGP(Android Gradle plugin) は `8.4.1`。

“` Groovy: gradle/wrapper/gradle-wrapper.properties
plugins {
id ‘com.andr

元記事を表示

Androidでちょっとした動画を再生したいと言われたので10分で対応してみる

# はじめに
Androidアプリにてふとした要件で動画を再生してほしいと言われたことはありませんか。
ビルトインで動画ファイル内包するのもなぁという思いもありつつあまり手間もかけたくない…
そんな時にあまり手間をかけずに実現するソリューションをご紹介しようと思います!

フォーカスしませんがその他の手段もまとめていますのでご活用いただければ嬉しいです。

今回作るアプリ
(みんな大好きbig buck bunnyです)

# 全体の流れ
1. 動画ファイルをgoogle driveにアップロードする
2. google driveからリンクを取得
3. composeとexoplayerでgoogle driveの動画を再生する

## 動画リンクの用意
今回はサクッと試したいということで動画ストレージとしてgoo

元記事を表示

a-5-1-6.Realm DBの暗号化と暗号化キーの作成

### a-5-1-2(3).Realm DBのデータ保存と更新、削除(配列以外、配列)

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

#### Github

https://github.com/wakizaka24/AndroidTest

#### テスト実装

“`kotlin:RealmTestService.kt
package com.example.androidtest

import android.text.TextUtils.concat
import android.util.Base64
import android.util.Log
import io.realm.kotlin.Realm
import io.realm.kotlin.RealmConfiguration
import io.realm.kotlin.ext.realmListOf
import io.realm.kotlin.types.EmbeddedRealmObject
im

元記事を表示

Flutter Android: could not create task ‘ generatelockfiles’ エラーが表示された時。

# エラー内容
VScode+Flutterで開発をしている時に、
下の画像のようなAndroidのエラーが表示された。
![スクリーンショット 2024-06-07 13.57.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961391/caea124d-f5bd-2bef-4b15-b5eec221db9a.png)
# 対処方法
下記を参考に解決した。

https://stackoverflow.com/questions/73357365/build-gradle-error-could-not-create-tastk-generatelockfiles-in-flutter-proj

原因はjavaとgradleのバージョン不一致で、Flutterプロジェクトで参照しているgradleを自環境のjava versionに合わせて変更してやる必要がある。

1.コマンドでjavaバージョンの確認する。
ターミナルで実行。
“`
javac -version
> javac 19.

元記事を表示

KMPにおいて、gradleのlibsでエラーが表示される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517291/60f053bf-df56-c741-89aa-25d53c642033.png)

“`build.gradle.kts
‘val Project.libs: LibrariesForLibs’ can’t be called in this context by implicit receiver. Use the explicit one if necessary
“`

とエラーが出た。

どうやら、バグらしい

https://github.com/gradle/gradle/issues/22797
> この問題は関連チームのバックログにあり、チームによって優先順位が付けられています。

> Gradle バージョンを更新して抑制を削除するだけで、問題は解決します。 😉

ということで、Gradleのバージョンを 8.1.1 まで上げることで解決した

## Gradleのバージョン上げ方
File ->

元記事を表示

はじめてのAndroidアプリ

## はじめに
この記事は、Kotlinもアプリ開発も学びたての筆者が、[Kotlinの基礎知識](https://t.co/BOSCBUoSyQ)を学びながら、Androidアプリを作るまでの過程をまとめる記事の第1弾になります。

## 対象読者
* Androidエンジニアを目指している方(自分は目指してます!)
* 素人の奮闘記を読みたい方

## Android Studioのダウンロード
Android Studioは、Googleが提供しているAndroidアプリ開発用のIDEです。

### Windows版
システム要件は以下の通りとなっています。
* x86_64 CPU アーキテクチャ、第 2 世代の Intel Core 以降、または Windows Hypervisor をサポートする AMD CPU
* 8 GB 以上の RAM
* 8 GB 以上の空きディスク容量
* 1,280 × 800 以上の画面解像度
[ダウンロード用ページ](https://developer.android.com/studio?hl=ja#get-android-studio

元記事を表示

Pixelのダウングレード方法

Androidのメジャーバージョンごとにアプリのテストをする際、テスト用に持っていたPixelが自動システムアップデートで勝手にアップデートしていて困った過去がありました。

アップデートしてしまったPixelをダウングレードするには、[Android Flash Tool](https://flash.android.com/welcome)を使用するとAndroidの他のバージョンを書き込むことができます。[公式サイト](https://source.android.com/docs/setup/contribute/flash?hl=ja)やAndroid Flash Toolページ内にある程度手順が載っていますが、自分の備忘録としてダウングレードを行う際の手順を纏めておきます。

## 手順

**事前にPixelの開発者向けオプションを有効にした上で、開発者向けオプションメニューの「USBデバッグ」と「OEMロック解除」を有効にしてください。**

1. [Android Flash Tool](https://flash.android.com/welcome)にアクセスし

元記事を表示

Android Studioについての個人メモ

– buildやmake projectは、ビルド+自動生成ファイル作成+テストが動く
– app実行は、テストが動かない

元記事を表示

【Android】Hiltを使ってWorkerにDIする

## はじめに
[こちらの記事](https://qiita.com/Nkot117/items/e86c45c5236fcc28f926)(【Android】WorkManagerを使ってPUSH通知を飛ばす)では、Workerクラスを作成し、WorkManagerのOneTimeWorkRequestを使ってPUSH通知を飛ばす内容をまとめました。

今回はの上記で作成したWorkerに、Hiltを使って依存注入する方法をまとめたいと思います。

## Hiltとは何か
Androidアプリで依存性注入(Dependency Injection)を簡単に実装するためのライブラリになります。
依存性注入とは何か、どう嬉しいのか等はここでは特に触れません。
詳しくは[公式サイト](https://developer.android.com/training/dependency-injection/hilt-android?hl=ja&_gl=1*1czggd0*_up*MQ..*_ga*MTU1OTIyMDM4My4xNzE3NDk5NzIy*_ga_6HH9YJMN9M*MTcxN

元記事を表示

一生忘れる mac でのandroid ndkの場所

## 概要

タイトルの通りです。

## 場所

“`
/Users/gabriel/Library/Android/sdk/ndk/21.4.7075529
“`

とかです。

元記事を表示

Unity Android/iOSでFCMの処理を拡張する方法

# はじめに
Unityで、FirebaseCloudMessagingの処理をAndroid,iOSで拡張する機会があったので記事にざっくりまとめたいと思いました。
詳細なコード載せられないのと、必ずうまくいくとは言い切れないので要点だけまとめます。

# iOSの通知拡張について
iOSで通知に画像をつけるために色々対応する必要があるのですが、手順が複雑で、プロジェクトやビルド環境によってセットアップが変わってくるため、一概にこうすればうまくいきますと言えないので詰まったところだけまとめておきます。
結果的には通知に画像をつけることは可能でした。

## PostBuildProcessでiOSのXCodeプロジェクト設定

詳細なコードは載せられないので、大きく要点だけ…

大きく以下の追加が必要になります
– PBXProject.AddAppExtensionで通知拡張サービスの追加
– 下に記載してあるinfo.plistも一緒に登録
– PBXProject.AddFileToBuildで拡張コードファイルの登録
– PBXProject.SetBuildPr

元記事を表示

Android Studioにてgradle build時にCould not read workspace metadata from ~ のエラー

Android Studioにてgradle build時に以下のようなエラーが発生してビルドできず

“`
Multiple build operations failed.

Could not read workspace metadata from C:\Users\UserName\.gradle\caches\transforms-4\hogehoge\metadata.bin
“`

キャッシュ関連のようだったので`Invalidate Caches`からキャッシュ削除では直らずで
`C:\Users\UserName\.gradle\caches`を直接全部消すことで直りました。

検索すると以下が出てきたので関係しているのかも?
比較的新しいバージョンのみのバグなのかもしれず、すぐ直るのかもしれないが備忘のため記載

https://github.com/gradle/actions/issues/167

元記事を表示

OTHERカテゴリの最新記事