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

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

Jetpack Compose で構築した画面に Google Map を配置する

## はじめに

– Maps SDK for Android の MapView を使って Jetpack Compose で構成した画面に Google Map を表示する方法です
– 今後役に立つかも知れないので、ここに残しておくことにしました。どなたかのお役に立てば嬉しいです
– ちなみに元ネタは下記の Codelab です。気になった方はトライしてみてください
– [Jetpack Compose の高度な状態と副作用](https://developer.android.com/codelabs/jetpack-compose-advanced-state-side-effects)
– 従来の Android View で `MapView` を使うやり方については、以前[こちらの記事](https://qiita.com/outerlet/items/36a9152c1cce46a9cfa6)で共有させて頂きました
– かなり前の記事ですが、基本的には今でも同じ方法が使えるようです

## 実装

ポイントは以下の2点になるかと思います

– ライフサイ

元記事を表示

[Flutter] 文字サイズを大きくすると周囲に空白が発生する

## 今回発生した問題

今回発生した問題はタイトル通り、Flutterでアプリを開発時にfontSizeを大きくしていくと周囲に空白が発生するというもの



iPhone 15 - 2024-08-19 at 11.36.40.png
font: Kiwi-Maru, fontsize: 50で発生。PaddingやGapを設定していないにも関わらず、文字の上に空白ができている



コードは以下の通り
“`sample.dart
Container(
color: Colors.white,
child: Text(
“2”,
style: TextStyle(
font

元記事を表示

AndroidでBitmap生成時の落とし穴

# はじめに
今回はAndroidで印刷用のBitmap生成時にはまったポイントを紹介していきます
### 本文
AndroidではBitmap生成時に引数として各色に対しての使用するbit数設定することができます。
その時RGB_565を設定するとbitmap作成後、グレースケールに変換する際、なぜか緑が表現できず緑や、黄色系の色を変換できず白抜けしてしまうという不具合が発生してしまいます
### 最後に
原因の特定までは至っていませんが、判明次第追記していこうと思います

元記事を表示

android端末でテスト(アサーション)する

今回使う**assertステートメント**はデフォルトでは無効になっているので、それを有効にする方法を記事にしていきます。

#
まずは、android端末が接続されていることを確認してください。

次にandroidStudio内のコマンドで以下を実行します。
“`
adb shell setprop debug.assert 1
“`
これでアサーションを有効にできます。

また、無効にするには以下を実行します。
“`
adb shell setprop debug.assert 0
“`

– – –

この方法でテストを行った時、端末が接続されていないか、2つ以上の端末が接続されている場合
コマンドが失敗します。

# 参考

https://www.hiramine.com/programming/android/assertion.html

元記事を表示

学生の50%以上が使う大学非公認アプリを作った話

# はじめに
こんにちは。 私は徳島大学院で物質機能化学の研究を行っている修士2年の[akidon0000](https://x.com/akidon0000)です。

私は3年前に個人で徳島大学生向けに **「トクメモ+」** というアプリをiOS、Androidで開発し、

・ダウンロード数 5200件
・MAU 3259ユーザー (徳大学部生の **約56%**)

のアプリを大学非公認で運用しています。

:::note info
本記事は、**「トクメモ+」** がどういった経緯で開発され、どんな活動をしてきたのかをまとめたものです。
:::

# トクメモ+についての発表スライド

https://speakerdeck.com/akidon0000/xue-sheng-puroziekutoyun-ying

元記事を表示

【Android】ADB操作にはADB Ideaプラグインが便利

# はじめに
Androidのアプリエンジニアであれば間違いなく触るであろうADB操作ですが、実はこの操作を簡単に実行可能なプラグインがあるのはご存知でしょうか。
ターミナルで実行するのも良いと思いますが、複雑な操作が必要ない場合にはこのプラグインを使用することで、より効率的に作業を行うことができると思いますので今回はADB Ideaをご紹介したいと思います。

# ADB Ideaの導入方法
導入は他のプラグインと同様になります。

`Settings > plugins` より`ADB Idea`と検索してもらい、インストールするだけで使用できるようになります。

![スクリーンショット 2024-08-18 11.07.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/8417333b-57cf-4afe-ad20-f41b8c2b0344.png)

# ADB Ideaの使用方法
まず、ADB Ideaのできることを紹介します。

– ADB Uninstall App
– A

元記事を表示

アプリの★5評価が激増!不満をもらう&応援してもらう方法

# はじめに

私は、AndroidとWindows向けのドラマティック高校野球シミュレーションゲーム【栄冠にゃいん2024】を公開しています(Unityで開発)。
Google Playでは、応援してくださるユーザーの皆様のおかげで、評価数800人くらいで**平均評価 4.7~4.8 くらいの高評価をいただいています(★5で評価してくれた人に感謝!)**。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528352/952aadd9-c063-267c-8368-8d8d15fc07da.png)

私のアプリは、他の有名な野球ゲームアプリと比較したら完成度は低いはずですが、**他アプリと比較して、完成度の割には高い評価をいただいています**。
Google Playで「野球」で検索していくつか見た限りでは平均評価4.7はトップでした。

この記事では、私のような**個人開発者が、個人で開発する強みを活かして★5の評価を多くする方法を紹介**します。
大きく2つの章に分けて説明します

元記事を表示

Android Studioでハマった話

# はじめに
弊学の`Java`の講義では後半で`Android Studio`を用いたAndroidアプリの演習を行います.その際,計算機室のパソコンに入っている`Android Studio`バージョンと最新版(2023年現在)をインストールしたときの挙動が違いハマったので備忘録としてまとめます.

# ハマったこと
計算機室の`Android Studio`では,演習で使うテンプレートとして画像の`Empty Activity`を選択すればいいです.しかし,最新版では`Empty Activity`を選択するとこのあとの画面で`Java`を選択できなくて詰みます.(`Kotlin`しか使えない)

![スクリーンショット 2024-08-17 16.44.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/d484ed1b-4cfd-20a9-075c-755ca8d95789.png)

# で,どうすればいいのか
ちょっと下にある`Empty Views Activity`を

元記事を表示

【Android】 メディアの権限やアクセス方法について

## はじめに
Android側のメディア周りはOSアップデートごとに変更が入って対応が大変なイメージがあります。
最近で一番影響があったのはOS13のアップデートですかね。
OS13以上と未満でメディア領域にアクセスするための権限が異なり、対応していないと写真や動画をアプリに持って来れないといこともあったかもしれません。

今回はメディア領域の権限・アクセス方法について整理していこうと思います。

## 写真や動画はどこに保存されるのか
そもそもの疑問ですが、カメラアプリ等で撮影した写真や動画はどこに保存されるのか気になり調べてみました。
Androidのストレージの仕様は大きく2つに分かれてそうで、写真や動画は「共有ストレージ」に保存されているようです。

| ストレージ種別 | 内容 |
| – | – |
| アプリ固有のストレージ | ・アプリ専用のファイルを保存する場所
・他アプリからはアクセスできない |
| 共有ストレージ | ・カメラで撮った写真や動画、スクリーンショットなど、共有可能なメディア ファイルが保存される場所
・他アプリと共有することが可能

元記事を表示

【Flutter】依存パッケージがエラーに対応していない場合に自力で対応する

## 今回の背景
Flutterで自作したアプリの Android Gradle Plugin (AGP) を最新のバージョンに更新しようと思い、7.x.x から 8.x.x にアップデートしました。すると、使用しているパッケージの`sound_mode`にて以下のエラーが発生し、アプリのビルドが通らなくなりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/985195/cc6f993f-eff6-df71-0077-953a2db4884f.png)
“`
Namespace not specified. Specify a namespace in the module’s build file:
“`

自分のアプリ内でビルドエラーが発生している場合、通常は build.gradle に namespace を追加することで解決できます。しかし、今回のケースではパッケージ側のソースコードまで遡って修正する必要がありました。
“`groovy:android/build

元記事を表示

【Jetpack Compose】戻るボタン←をつける

## 今回実装するもの
今回は一つ前の画面に戻るためのボタンを実装します。
前回の記事で観光地リストを表示するアプリに詳細画面を追加したのですが、その時に戻るボタンの実装を忘れて随分と不親切なアプリになってしまい、その反省として今回戻るボタンを追加します。
|Before|After|
|—|—|
|||

## 前回の記事
詳細画面に画面遷移する機能の実装をしたときの記事です。

https://qiita.com/jtakumi/items/395f17187df9228

元記事を表示

Androidスマホ起動時に自動的にサービスを起動させる

以前、Androidのフォアグラウンドサービスを使って、位置情報を常に取得するサービスを作成しました。

[Androidのフォアグラウンドサービスで位置情報を取得する]( https://qiita.com/poruruba/items/aa02207080a390e1ac85)

今回は、これをCordovaプラグインにするとともに、Androidスマホ起動時にも自動的に起動するようにします。

ちなみに、この投稿は、以下の投稿の補足です。全ソースファイルは以下を参照してください。
 [散歩ルート計画アプリを作った](https://qiita.com/poruruba/items/90d25395670f1bf5a5fe)

# AndroidManifest.xml

Androidスマホの起動時に、OSから通知されるブロードキャストを受け取ることで、起動時の処理ができるようになります。
そのために、以下のパーミッションを付けておく必要があります。

“`xml:AndroidManifest.xml
【Android】Retrofit2 で Kotlin Serialization を用いて変換を行う

Retrofit2 で Kotlin Serialization を用いて変換を行う方法として、
Codelab では retrofit2-kotlinx-serialization-converter を使う方法が紹介されている。

https://github.com/JakeWharton/retrofit2-kotlinx-serialization-converter

https://developer.android.com/codelabs/basic-android-kotlin-compose-getting-data-internet#7

## 手順

### Kotlin Serialization をモジュールに導入する。

モジュールの build.gradle.kts の `plugins` ブロックに次を追加する。

“`build.gradle.kts
id(“org.jetbrains.kotlin.plugin.serialization”) version “1.9.10”
“`

モジュールの build.gradle.kts の

元記事を表示

スマホの気圧センサーと台風

# はじめに
以前スマホのセンサーをPythonで操作するアプリをPlyerで作ってみたが、気圧センサーが本当に動作しているのか?がわからなかったが、ちょうど、今日台風7号がきていたので試してみた。

# 気圧センサーのデータ取得
[PythonでAndroidスマホの各種センサー情報を取得する。](https://qiita.com/tapitapi/items/51ddefc1dd8e810430c8)

barometer.pressureで取得。
“`python:Barometer
from plyer import barometer
#有効
barometer.enable()
#取得
output+=f’Barometer\n{barometer.pressure:0.2f} hPa\n\n’
“`

# 結果
台風が近づくとどんどん気圧が下がっていく事がわかる。あらためて数値で見てみると面白い。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299802/221

元記事を表示

スマートフォンのセットアップ手順

1. wifiのid, password、 google もしくはappleのアカウント id, passwordを新しいスマホで写真を撮る
1. wifiに接続する
1. google もしくは appleのアカウントにログインする
1. 1passwordをダウンロードする
1. 古いスマホの1passwordを起動してログイン用のQRを表示する
1. 新しいスマホで1passwordを起動して古いスマホのQRを読み取る
1. 各種サービスへログインする

元記事を表示

【Jetpack Compose】OutlinedTextField 全体に対して onClick する方法

# 完成形(OutlinedTextField をクリックすると日付選択ができるようにする)

![OutlinedTextFieldAndDatePicker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/053364ae-08ca-4287-325c-338e56bc4096.gif)

– 日付を選択すると OutlinedTextField の値を変更する
– 日付選択はダイアログから行う
– テキスト入力はさせない
– 日付選択のダイアログを閉じると OutlinedTextField のフォーカスを外す

# 実装

## OutlinedTextFiled 全体を選択可能にする

【NG】 Modifier.fillMaxWidth().clickable(onClick)

“`kotlin
OutlinedTextField(
modifier = Modifier

元記事を表示

不正なExtraを含んだIntentを受け取ったことによるクラッシュに対処する

Androidアプリは、外部からIntentを受け取ることによって起動します。IntentにはExtrasという任意の引数を渡す仕組みがあり、多くのアプリで利用されています。しかし、Extrasに不適切な情報が含まれている場合、アプリが容易にクラッシュしてしまうことはあまり知られていないかもしれません。Extraを読み出している場合や、明示的にExtraを扱っていなくても、SavedStateHandleを受け取るViewModelを扱っている場合は注意が必要です。

例えば、アプリAのonCreateで以下のようにExtraを読み出しているとします。

“`kotlin:アプリA
val data = intent.getStringExtra(“hoge”)
“`

このアプリAを、アプリBから次のように起動させてみます。

“`kotlin:アプリB
val intent = Intent()
intent.setClassName(“com.example.myapplication”, “com.example.myapplication.MainActivity”)

元記事を表示

【Android Studio】辞書ファイルを設定してうるさいタイポ指摘にサヨナラする

## 概要

オリジナルのアプリを作っていたりすると、コード中にオリジナルの言葉が登場することは多々あると思います。
ですがAndroid Studioは親切なので、そういった言葉も~~余計なことに~~ご丁寧にタイポ指摘してくれます。

アプリ自体に影響があるわけではないのでそのままでも全然問題ないのですが、何か気持ち悪い!となるのでこれが出ないようにします。

## 対処法

### 1. Android Studioの設定で対処

以下の画像のように、設定のSpellingで指摘しないでほしいワードを追加します。
個人で進めているプロジェクトならこれで必要十分だと思います。

![スクリーンショット 2024-08-15 15.07.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724617/41a81fab-c872-ee74-5812-3dafa8f475e4.png)

### 2. spellチェック自体外してしまう

設定 -> Inspections -> Typoの部分のチェッ

元記事を表示

Type Safety に Navigation Compose を使う場合、SavedStateHandle 経由で NavArg を受け取るときは typeMap を渡そう

# 結論

**Type Safety に Navigation Compose を使う場合、SavedStateHandle 経由で NavArg を受け取るときは `typeMap` を渡しましょう!**

Type Safe な Navigation Compose に関するドキュメントはこちら 👇
[Type safety in Kotlin DSL and Navigation Compose](https://developer.android.com/guide/navigation/design/type-safety)

# ハマっていたこと

NavGraph を定義するとき、`typeMap` を渡しているのにアプリがランタイムで落ちる事象が発生しました。

具体的には次のエラーメッセージを確認しました。

“`text
java.lang.IllegalArgumentException: Cannot cast page of type XXX to a NavType. Make sure to provide custom NavType for thi

元記事を表示

テキストを装飾する -SpannableString-

# SpannableStringとは?

### 概要
・文字列にさまざまな装飾やスタイル設定を行えるようにするためのもの
・一つの文字列に対して複数のスタイルを適用させることができる

## 注意点
・例として掲載しているコードはViewBindingを使用しています
 (変数`b`として定義しています)

## 主な種類

|クラス名|概要|
|:-:|:-:|
|ForgroundColorSpan|テキストの色を変更する|
|BackgroundColorSpan |テキストの背景色を変更する |
|StyleSpan|テキストを太文字やイタリックにする |
|TypefaceSpan |指定フォントを適用する |
|RelativeSizeSpan |テキストのサイズを相対的に変更する |
|AbsoluteSizeSpan |テキストのサイズを絶対値で変更する |
|URLSpan |テキストをリンクにする |
|UnderlineSpan |テキストに下線を引く |
|StrikethroughSpan |テキス

元記事を表示

OTHERカテゴリの最新記事