- 1. Android:SAFを利用してオブションメニューからファイル選択画面を呼び出し、txtファイルを表示してみた。
- 2. Jetpack Glanceでテキストサイズをdp単位で指定する方法
- 3. Flutterで別アプリ起動する手順(カスタムURLスキームだけ)
- 4. M1 Mac に .NET 8 の MAUI を入れて iOS と Android アプリを試してみた
- 5. WindowsPCでAndroid端末のレイアウトを確認
- 6. 【Android】.aabファイルから.apkファイルを書き出す
- 7. Android Studioで中間パッケージを収縮せずに表示する方法
- 8. 初心者エンジニアによるAndroidアプリ開発日記④
- 9. Android StudioのGitで特定のファイルをバージョン管理から外す方法
- 10. Androidで、カウントダウンを
- 11. Androidで、DataStoreを導入
- 12. Rectangle で二重下線
- 13. 海外版のGoogle Pixel 6を日本版にする夢
- 14. BLE初心者へ、AndroidのBLE機能を実装する上で知っておくと良いこと
- 15. jetbrains ToolBoxを使ったAndroid Studioの導入方法メモ
- 16. 友達可視化アプリ~MIYORI~の開発
- 17. Rust導入後のAndroidアプリ開発でテストを書く
- 18. Androidアプリ内の複数のモジュールにRustを導入する
- 19. Google Play Games (ベータ版)™に対応しているアプリ以外をインストールする力技
- 20. 【Android】Composeの罠:デザインの指定が思い通りにならない
Android:SAFを利用してオブションメニューからファイル選択画面を呼び出し、txtファイルを表示してみた。
# 1.はじめに
山田著「[初めてのAndroid開発Kotlin編](https://www.shuwasystem.co.jp/book/9784798065106.html)」の478ページにStorage Access Framework(SAF)を利用してテキストファイルを開くサンプルアプリが掲載されている。このアプリは、起動した直後にファイル選択画面が呼び出されるのだが、この点に少し不満を感じた。
そこで、改造してオプションメニューを付けることとした。
動作のイメージは以下のスクリーンショットを参考にしてください。
![Screenshot_20240928_163412.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501068/b3aa3edc-5743-a41d-f75b-7769166f6d17.png) ![Screenshot_20240928_163533.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
Jetpack Glanceでテキストサイズをdp単位で指定する方法
Jetpack Glanceではテキストのサイズはsp単位でしか指定できません。
指定可能な単位はTextUnitでこれにはspとemがありますが、今のところemはサポートされていません。emについては将来的にサポートされる可能性があります(ソースコードにTODOでコメントされていますし)が、dpがサポートされることはなさそうです。アクセシビリティのためsp単位を使うべきというのはその通りですが、状況によってはdpで指定したい場合も多く存在します。
ここではその指定方法を紹介します# fontScaleを元にspサイズを計算する
Jetpack Composeでも同様にsp単位でしか指定できませんが、`toSp()`メソッドを使うことでdp単位での指定が可能です。
“`kotlin
fontSize = with(LocalDensity.current) { 16.dp.toSp() }
“`この`toSp()`はFontScalingに定義されている拡張関数で、実装は以下のようになっています。
単純に言えばfontScaleによる拡大率の逆数を掛けたspサイズを指定
Flutterで別アプリ起動する手順(カスタムURLスキームだけ)
## 想定している要件
– カスタムURLスキーム(CustomURLScheme)でインストール済みの別アプリへ遷移させたい
– Androidのアプリリンク(App Links)は使用しない
– iOSのユニバーサルリンク(Universal Links)は使用しない
– そのほかFirebaseDynamicLinksなども使用しない
– ユーザーは必ず遷移先のアプリをインストール済みである## 遷移先のアプリの事前確認事項
### Android
– ``が存在するか確認し、ない場合は追加、ある場合は`android:scheme`の値を確認する
– `android:exported=”true”`になっているか確認する
– 記述がない場合はfalse扱いとなるためtrueを明示的に記述する
– `yourcustomscheme`は衝突しないようにユニークな名前を付ける“`android/app/src/main/AndroidManifest.xml
M1 Mac に .NET 8 の MAUI を入れて iOS と Android アプリを試してみた .NET6 で MAUI がプレビューの時にも試してみましたが、改めて .NET8 で MAUI を試してみました。前提となる Xcode や Android Studio はインストール済みで、Visual Studio Code には MAUI や C# の拡張は無い状態(未インストール)で動きました。
https://qiita.com/mnrst/items/a43a32424b84ed2fd432
## .NET に MAUI をインストール
“`zsh:zsh
% sudo dotnet workload install maui
“`## MAUI アプリを作成
“`zsh:zsh
% dotnet new maui -o mnrmaui% cd mnrmaui
“`## iOS でアプリを実行
“`zsh:zsh
% dotnet build -t:Run -f net8.0-ios
“`## iPad Pro 13-inch (M4) の画面
![dotnet8-maui-01.png](https://qiita-image-
WindowsPCでAndroid端末のレイアウトを確認
# はじめに
Android端末が手元にない状態でAndroid端末でWebアプリケーションのレイアウトの確認を行わなければならない場合のメモがてらにこちらの記事を書かせていただきました。# 手順
## 1. Androidエミュレータをダウンロード
エミュレータとは?
PC上に仮想のAndroidデバイス環境を作成するソフト
私は[BulueStacks](https://www.bluestacks.com/ja/index.html)を使用いたしました。
こちらからダウンロードを行えます。https://www.bluestacks.com/ja/index.html
## 2. Chromeをインストール
検索バーを用いて”Goole Play”より”Chrome”をインストール
[![Image from Gyazo](https://i.gyazo.com/988b63fed0b4205b7e89a5b1de5d89a0.png)](https://gyazo.com/988b63
【Android】.aabファイルから.apkファイルを書き出す
.aab(Android App Bundle)形式のAndroidアプリを従来のAPKファイルに書き出す方法について備忘のため記載しておきます。
## .aab(Android App Bundle)とは
Android App Bundleについては以下を参照してください。
https://developer.android.com/guide/app-bundle
## 環境
– macOS Ventura
– OpenJDK 17 (OpenJDK Runtime Environment Corretto-17.0.10.7.1 (build 17.0.10+7-LTS))## 必要なツールのインストール
.aabから.apkファイルを書き出すために`bundletool`を使用します。
公式のインストール手順については以下に記載があります。https://developer.android.com/tools/bundletool
macOSの場合は、Homebrewを使用してインストールする方法が楽です。
“`sh
$ brew install
Android Studioで中間パッケージを収縮せずに表示する方法
# なぜ書いたか
Google Play Consoleでアプリをaabファイルでアプリをアップロードした時に、「com.example.〇〇(アプリ名)」のパッケージ名が使えないらしい。
(たぶんexampleに問題がある)
その時に、Android Studioで表示されているディレクトリが「com.example.〇〇」でまとめられていたので困った。(このままだとパッケージ名(exampleの部分)が変更できない)AIに質問したが、「設定から~、〇〇で~」と別のやり方を指示されて2,3時間迷ったので、そういう人を無くすべく、記事を書いた。
# 環境
Android Studio Koala | 2024.1.1 Patch 2(新UI)# やり方
1. プロジェクトを開いている状態で、ディレクトリの上の部分を右クリック
2. 「ツリーの外観」から「中間パッケージを収縮」のチェックを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624480/8e42
初心者エンジニアによるAndroidアプリ開発日記④
# まえがき
AndroidStudioでプロジェクトを立ち上げ、フォルダ構成やAndroidStudioの機能を一通り把握できたので、いよいよ実装に入っていきます。ChatGPTに相談し、まずはレイアウトから着手することにしました。前回は[こちら](https://qiita.com/hukusima65/items/8d3e131a11215091adac)
# 目次
* [概要](#概要)
* [実装する画面](#実装する画面)
* [XMLについて](#xmlについて)
* [XMLのレイアウト](#xmlのレイアウト)
* [XMLのオブジェクト](#xmlのオブジェクト)
* [XMLのレイアウト・Widgetsのプロパティ](#xmlのレイアウトwidgetsのプロパティ)
* [実装](#実装)
* [タイトル画面](#タイトル画面)
* [クイズ画面](#クイズ画面)
* [不正解画面](#不正解画面)
* [終わりに](#終わりに)—
## 概要
この記事では、国旗当てクイズアプリのレイアウトの実装内容や、調べた内
Android StudioのGitで特定のファイルをバージョン管理から外す方法
# 何をするのか
Gitで特定のファイルをバージョン管理から外したい
ターミナルを使うので、多分Android Studioに限らず同じやり方な気がする# 環境
Android Studio Koala | 2024.1.1 Patch 2# やり方
1. 消したいファイルを右クリックして、「パス/参照のコピー」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624480/9581b2b6-dad8-6e7b-d61d-64f24ab620a4.png)
2. 「リポジトリルートからのパス」を選択
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624480/6cad72a1-7bd0-4f85-9155-6af2ba8a64b3.png)
3. 画面左下の「ターミナル」を選択
![画像1.png](https://qiita-image-store.s3.a
Androidで、カウントダウンを
Androidで、カウントダウンを実装しようと思ったのですが、CountDownTimerが微妙な感じで、代わりになるものがないか検討したので、記事にしたいと思います。
### 結論
postDelayedで、実装することにしました。
ポイントとしては、postDelayedにthisを渡して、runnableを繰り返すことでカウントダウン出来ます。“`kotlin
private var selfTimerCount = 10
private val handler = Handler(Looper.getMainLooper())
private val runnable = object : Runnable {
override fun run() {
if (selfTimerCount == 0) {
// 何かを実行する
return
}
selfTimerCount–
Androidで、DataStoreを導入
Androidの設定情報を保存する方法として、SharedPreferencesが主流でしたが、DataStoreに移行した方が良さそうなので、導入手順を記載します。
また、DIのHiltを使用する前提で記載します。### DataStoreの導入
“`gradle
implementation(“androidx.datastore.datastore-preferences:1.1.1”)
“`
### Hilt
AppModuleとしてますが、別のModuleとしても問題ありません。
preferencesDataStoreFileで指定しているのが、ファイル名になります。“`kotlin:AppModule.kt
@Module
@InstallIn(SingletonComponent::class)
class AppModule {@Singleton
@Provides
fun providePreferencesDataStore(@ApplicationContext context: Context): Da
Rectangle で二重下線
久しぶりに Android で drawable リソースを作成した際に Rectangle ってなんだっけと思ったので、復習した結果をまとめておきます。Rectangle の例を軽く紹介した後に、二重下線の話になります。
## Rectagle
Rectangle は、Android の `` タグで定義できる基本的な図形の一つで、四角形を描画します。背景のカスタマイズに多用され、ボタンやレイアウトの見た目を装飾するために使用できます。` `で定義できる図形は、他にも 線(line)、楕円(oval)、円環(ring) があったりします。 Rectangle では、枠線(stroke)、塗りつぶし色(solid)、角の丸み(corners)などが設定可能で、例えば、角を丸くしたボタンや、枠線だけのレイアウトを作成する際に便利です。Rectangleはシンプルな形状ながら、多様なデザイン表現が可能です。以下が主な図形の例になります。
![rectangle.png](https://qiita-image-store.s3.ap-northeast-1.
海外版のGoogle Pixel 6を日本版にする夢
## きっかけ
現在筆者は中東に滞在しているのだが,そのうち日本に帰国するためどうしてもおサイフケータイ機能付きのスマートフォンが欲しかった。だが,どうしてもiPhoneを受け付けない体であるので,Felicaチップが搭載されているが無効化されているという噂のGoogle Pixelを購入してFelicaを使用可能にしようと試みた。以降の記述はすべて夢の中の話です。実行してどのような結果になろうとも一切責任を負いません。
## 環境
Google Pixel 6 GB7N6, Windows11, adb環境
## やりかたその1
Root化+Magisk module導入によってFelica configの値を書き換える+おサイフケータイアプリへの端末情報を偽造し,日本モデルの型番だと誤認させるという方法。
おそらくその2より安全。
Rootを解除,BootloaderをロックするとGoogleWalletは起動可能,PASMO,SUICAの追加+外部アプリでの読み取りも可能だが,おサイフケータイアプリは海外モデルとして使用不可になる。### 手順
1. Magisk経由で
BLE初心者へ、AndroidのBLE機能を実装する上で知っておくと良いこと
## BLE実装の全体の流れは、以下のとおりです
1. `スキャン`を開始する
1. `アドバタイズ`しているBLE機器を発見する
1. `ボンディング`または`ペアリング`を行う
1. `Gatt`を介してBLE機器に`コネクト`する
1. `Gatt`を介して通信する
1. `サービス`を`ディスカバー`する
1. `キャラスタリスティック`を取得する
1. `コマンド`を送信する
1. `通知`を有効にする
1. 受け取ったデータで何かするBLEの実装が初めての人は、何のことがわからないですよね。
以下を流し読めば、最後には処理の流れが理解できるようになっていると思います!
それでは、BLEの実装について説明していきます。## BLE
– 「Bluetooth Low Energy」のこと
– アプリ開発のBluetoothには、BLEの他に「Bluetooth Classic」がある## Gatt(BluetoothGatt)
– スマートフォンと、BLE機器を接続するための、スマートフォン側がBLE機器に対して作る道のこと
– スマートフォンは、Gattを介して、
jetbrains ToolBoxを使ったAndroid Studioの導入方法メモ
jetbrains ToolBoxが、Android Studioの更新とかを手軽にすることが出来て便利だと知ったので、導入方法のサイトをメモ( ・ω・)φ…
## ToolBoxのインストール
https://www.jetbrains.com/ja-jp/toolbox-app/
## Android Studioを入れる
(Android Studioだけが必要なら、サイトに書かれている「IntelliJ IDEA Community Edition」の導入は飛ばしてok)https://qiita.com/TAKANEKOMACHI/items/5be6c9e7c3aa74270456
## Android Studioの日本語化
https://murui-no-neko-zuki.techblog.jp/archives/18369397.html
友達可視化アプリ~MIYORI~の開発
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3894106/572ca996-1a3a-4451-4997-6877a47f1ea6.png)
### 差別化
・友人と友人にもチャットできる(承認制度)
・
・### リンクシェル
・3つまで所持できる### 役職
マスター・・・リンクシェル作成者
・メンバー勧誘
・リーダー/メンバー除名
・LS解散
・LS名称変更
・リーダー設定
・リーダー解除
リーダー・・・パールサックをもつ
・メンバー勧誘
・メンバー除名
メンバー・・・リンクシェルをもつメンバーの勧誘は、同じ位置情報にいる端末にしかできない。
Rust導入後のAndroidアプリ開発でテストを書く
NDKを導入したAndroidアプリにおいてテストをどう書くか?
KotlinでもRustでもテストを書くことができるので、基本的には適切な方にテストコードを記述すればよいのですが、問題はKotlinのテストコードからRustで書いたネイティブ関数を実行しなければならない場合です。テストコードの実行自体にネイティブコードが必要な場合はもちろんですが、テストコードが100%Kotlinで書かれていても、そのテスト対象の一部でネイティブ関数が実行される場合、ネイティブライブラリをロードする必要があります。
というわけで、テスト中にネイティブ関数を実行できる環境を作ってみます。
:::note
この記事では[「Androidアプリ内の複数のモジュールにRustを導入する」](https://qiita.com/wcaokaze/items/2d1681ff01db93d388fb)で構築した開発環境を前提にしますが、ネイティブ開発言語にRustを採用するAndroidアプリなら概ね同じことが言えると思います。
::::::note warn
この記事の内容は私が趣味の個人開発で
Androidアプリ内の複数のモジュールにRustを導入する
現代のAndroidアプリ開発でNDKが必要になった場合、やはりネイティブ側の開発言語としてはRustを採用したいだろうと思います。
Androidネイティブ開発言語としてRustを導入すること自体はすでにいくつか例があるし、だいたいは[mozilla/rust-android-gradle](https://github.com/mozilla/rust-android-gradle)のREADME通りにやればできます。
ところが、現代のAndroidアプリはモジュール分割して開発されていることが多い。
複数のモジュールでNDKが必要になることもあるでしょう。ネイティブ開発が必要なモジュール全てに上記のプラグインを導入すれば複数のモジュールでRust開発を行うことができるのですが、それではモジュールという分割されたハコの中に別々のRustクレートを作成し、別々のバイナリを生成することになります。
こういうイメージです
![multi-plugins-image.png](https://qiita-image-store.s3.ap-northeast-1.amazona
Google Play Games (ベータ版)™に対応しているアプリ以外をインストールする力技
# ボカコレをWindowsでも使いたい!
そう思いました。OK?
![](https://storage.googleapis.com/zenn-user-upload/fe0401f1f024-20240924.gif)え?なに?ニコニコ動画で聞けばいいって?
$$だまれ小僧$$
ノンストップだったりサビメドレーはボカコレにしかない強みナノデス!でもウチはすでにアークナイツやるためにGoogle謹製のエミュレーター使ってんだけどぉ、ゲームしかも特別に対応したアプリじゃないと非対応って言われるんだよね。ガチ萎えピ
ボカコレだけのために別のエミュレーター入れるのは癪だしストレージ容量の無駄だし~~タカキも頑張ってたし~~やってやろうじゃねえかこのやろーってことで
## 先駆者
この記事の内容としては上記の記事のリベイクです。自分の忘備録的な感じなんでオリジナリティはない。もちろんボカコレも学マスも$\mathbb{X} – Super Elon Musk Okanekaisyu
【Android】Composeの罠:デザインの指定が思い通りにならない
## Paddingが思い通りにならない
今回はJetpack Composeの罠について。
UIを作成するときにComposeを使って書いているのですが、そのときにpaddingの設定がうまくいかず困ったケースを挙げてみます。## TextFeid
ユーザーに文字を入力させたいとき、手っ取り早いのはTextFeildを使うことだと思います。“`kotlin
@Composable
private fun EditTextField() {
var text by remember { mutableStateOf(“”) }TextField(
value = text,
onValueChange = { newText -> text = newText },
placeholder = { Text(text = “ここに入力してください”, color = Color.Gray) },
modifier = Modifier
.fillMaxWidth