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

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

N予備校 Android アプリでスクリーンショットテストを導入した話

#

[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1) チームでテックリードをしている鎌田です。
[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1) チームでは、スクリーンショットテストを導入しました。
本記事では、どのようにスクリーンショットテストを導入したか、背景と手順をまとめます。
スクリーンショットテストの概要については、他のスクリーンショットテストに関する記事でも説明されているため、[参考 URL](#参考-url) を参照してください。

## 背景

PR を作成する際、UI に変更がある場合は修正前後の画面キャプチャを貼り付けるようにしていました。
ですが、都度画面キャプチャを自前で用意しなければいけないのが面倒なのと、ぱっと見ではわかりづらいデザイン変更の場合だと画面キャプチャからでもわ

元記事を表示

FlutterでFirebaseのRealtime Databaseのちょっとしたまとめ

# はじめに

Firebase Realtime Databaseをなんとなく触っていてちゃんと理解していないので、少し理解度を高めるためにドキュメントを書きつつおさらいとお勉強。
まだ、orderByや絞り込みが十分ではないけど・・・

要するに、自分向けのメモ。

ちなみに本記事ではWindowsで開発を行い、Androidで実行している。
iOSはそのうち確認する。

※もし、間違ってること書いていたら教えていただけると助かります。

# Realtime Databaseの制限

公式ドキュメントの [Realtime Database の制限事項](https://firebase.google.com/docs/database/usage/limits?hl=ja) を参照するのが正解。

このドキュメントを書いている時点(2024/03/23)での制限事項でちょっと気になったところだけ。

多分使っていく間に制限事項にぶつかって理解できるものもありそう。

– 同時接続は200,000が上限。Sparkプランは100が上限。
– 1つのDBから同時に送信されるレスポ

元記事を表示

[WIP] #318 2024-03-17 駄菓子

## 5月24日にGoogle I/Oが開催
https://android-developers.googleblog.com/2024/03/google-io-24-save-the-date.html

geminiが話題になりそうな。
サイトには例年通り意味わからんパズルがあるみたい。

## Jetpack Composeのパフォーマンス最適化
https://getstream.io/blog/jetpack-compose-stability/

Composeの安定性を完全理解する記事。
まず、以下のフェーズを意識することが大事。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599059/d6af6b4a-200a-9de1-9396-bc86844c6d7f.png)

– Compositionは、Composable関数をスロットに割り当てる。これによりツリーを記録として残せるため、不要なreocmposeとかをなくせる。
– Layoutは、コンポーザブルノ

元記事を表示

【Android】Jetpack Composeでのフォント変更【Kotlin】

# 準備
まずは使用したいフォントをダウンロードします。

https://fonts.google.com/specimen/Montserrat

![スクリーンショット 2024-03-22 19.55.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394054/0ca6860b-f102-f1f8-6379-244723e93da8.png)

ダウンロードしたフォントをAndroidStudio内で使えるように resファイルにfontファイルを作っておきます。
![スクリーンショット 2024-03-22 19.59.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394054/7a3e8aa0-8027-b780-6866-6d74f5b1e594.png)

この記事の下方にある参考資料のようにフォントをフォイルごとドラック&ドロップで取り込み、JetpackCompose内のTextに使

元記事を表示

Fire HD 8(第7世代)でビデオ通話を試した備忘録

## 目的
* 県外の家族とビデオ通話がしたい。
* タブレットをリビングにおいて、ビデオ通話をすぐ開始できるようにしておきたい
* あまり使っていない~~ポンコツ~~ fire HD 8 があるので、できれば活用したい

## 環境
* Fire HD 8(第7世代)
* Fire OS 5.7.1.0(Android 5.1相当らしい)
* Google Playインストール済み

## 試したアプリと結果一覧
| アプリ名 | 結果 | インストール方法 | インストール | ログイン | 備考 | 備考2 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| LINE | × | Google Play | 〇 | × | アプリは立ち上がるが、ログインが出来なかった。 | |
| Discord | △(×) | ブラウザ | – | △(×) | 【インストール方法】Google PlayではAndroidのバージョン不足でインストール不可。fireのアプリストアではインストールできたが、ブラウザのショートカットが開く謎アプリ。結局ブラウザから開いた。 |

元記事を表示

Android アプリ名を開発環境と本番環境で変える方法

アプリの名前をわかりやすいように開発環境と本番環境で変える方法です。

まずは、画像のようにresのvaluesで右クリックをして、画像のような選択をします。

![スクリーンショット 2024-03-24 17.25.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/82d1ed54-ca7b-9c60-a127-c42d44a8905d.png)

そして開発環境を選択します。
![スクリーンショット 2024-03-24 17.26.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/32521000-3916-1258-d12e-4f7bc86ed7ae.png)

今回は文字に対して行うので、stringdを入力します。

![スクリーンショット 2024-03-24 17.26.18.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

androidでpng画像を使う時に気をつけたいこと

# はじめに
今回は Android実装でpngを使うときに注意しておきたいことを紹介します
### 本文
まず、webPを使うということです。
pngに比べてwebPは圧縮率が高いため、アプリ自体の容量を節約することができます。
しかし、ここで注意しないといけないのは、AndroidStudioを使った変換時に`lossless`と`lossy encode`を選択できるのですが、`lossless`にしないとPNGに戻すことができません。
また、逆に圧縮率を高めるために`lossy encode`をデフォルトの75%でやってしまうと若干ですが、画質等が変わってしまうので、デザイナさんとの確認が必須になってきます。
### 最後に
Android実装でPNGを使う時のTipsを前回の記事で紹介したので合わせて使うであろうWebPに関する記事を書いてみました
どなたかのお役に立てれば幸いです

元記事を表示

日本語プログラミング言語MindをAndroidに移植した時の記録(ステップ5/9)

# はじめに

 この記事はだいぶ前(2012年)にココログの「[キリーの日本語プログラミング](http://uemon3511.cocolog-nifty.com/nihongoprogram/)」に掲載したコラムですが、再編集してこちらにも投稿します。今となっては古い話ではありますが、OSによってプログラム言語(AndroidではJava)が決め打ちされている環境で規定と異なるもの(Mind)を走らせたことの記録としてお読みください。

# 画面遷移(他のアクティビティの起動)

 メイン画面から別の画面に遷移するためにはAndroidで言うアクティビティの起動を使うことになる。

 Mindで言うところの「プログラム実行」/「子プロセス実行」、Cなら fork()+exec() の感覚だろうと思っていたのだが、実際にやってみると想像とはかなり異なる部分があり、原理を理解したり実装するのに時間がかかった。

![20130619_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118036/3

元記事を表示

enableEdgeToEdgeを使ってテーマ切り替え時にステータスバーにも適切な色が反映されるようにする

## はじめに
ダークテーマに対応するにはどうしたら良いか調べていたところEdgeToEdge時にステータスバーの色が動的に反映されなかったのでどう実装したら良いかメモ。

## 動的に切り替わらないコード

“`
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

enableEdgeToEdge()

setContent { … }

}
}
“`
| テーマ切り替え前 | テーマ切り替え後 |
|:-:|:-:|
| ![Screenshot_20240323_232855.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130827/380ed014-72ac-732d-16f2-7be50a408915.png) |

元記事を表示

Preview版のAndroidStudioをいち早くDLする

これもしかしたら常識なのかもしれないのですが..個人的に少しハマったので書いておきます。

今朝Canary版のKoalaが出たのでウキウキでPreview版のDLページに行ったのですが、

DLページに行くとなぜかKoalaが出てこない
![スクリーンショット 2024-03-23 23.24.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145704/680d1a3d-98fe-b26f-74c5-04bf410e200a.png)

結果的に言語設定を英語にすると出てきました

![スクリーンショット 2024-03-23 23.27.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145704/1424843a-e11e-2b45-6b7b-89017420b05d.png)

元記事を表示

Requiring unknown module “134”の治し方

リアクトネイティブで発生した
下記エラーの治し方

Requiring unknown module “134”. If you are sure the module exists, try restarting Metro. You may also want to run yarn’ or “npm install”.
Requiring unknown module “134”. If you are sure also want to run yaty or arin eti. You may Error: Requiring unknown module “134”. If you are
sure the module exists, try restarting metro. tou may also want to run “yam” or “npm install’. at unknownModuleError (http:/10.0.2.2:8081 /index.bundle/&platform=android&dev=true& minity=falseBap

元記事を表示

【Flutter】QiitaAPIとOAuth2.0を使ってのログイン画面を作成する

## はじめに

みなさんこんにちわ、Flutter学習約2ヶ月の駆け出しエンジニアの*はるさん*です。

ログイン周りの実装を行う際にFirebaseAuthを使うとものすごく簡単に実装できますよね。
しかし企業や案件の全てがFirebaseを使っているわけではありません。
そこで今回はhttps通信を使ってQiitaAPIにアクセスし、OAuth2.0の仕組みを利用してログイン処理の実装を行う方法を書いていきたいと思います。

### 記事の対象者

– OAuth2.0での認証と認可を実装したい方
– https通信でAPIを呼び出す実装方法を学びたい方
– ある程度のアプリ開発経験(iOS,Android,Flutterなど)がある方
– flutterで小さなプロジェクトをいくつか作った経験のある方

### 記事を執筆時点での筆者の環境

– macOS 14.3.1
– Xcode 15.2
– Swift 5.9
– iPhone11 pro ⇒ iOS 17.2.1
– Flutter 3.19.0
– Dart 3.3.0
– Pixel 7a ⇒ Android

元記事を表示

ZXingをJetpack Composeで利用する

AndroidのXMLレイアウトをJetpack Composeに移行していて、QRコードリーダーのライブラリである`zxing-android-embedded`を使っている部分を移行することがありました。
しかしJetpack Composeで使っている情報が少なかったので備忘として簡単に残しておきます。
# 実装
“`Zxing.kt
@Composable
fun AdminClubMembershipScanScreen(navController: NavHostController) {
val context = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current

val compoundBarcodeView = remember {
CompoundBarcodeView(context).apply {
val capture = CaptureManager(context as Activity, this

元記事を表示

Google Pixel3aにUbuntu Touchをインストールする

## はじめに
Google Pixel3aにUbuntu Touchをインストールする手順をまとめました。
スマホでUbuntuを使用できるようになります。

![GHgM-WeaQAAVCCL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/930094/8a0d62c3-ec37-6f18-3951-68f696ac5ac2.jpeg)

:::note warn
この記事での操作は様々なリスクを伴いますので、自己責任で実施してください。
・スマホ内のデータは初期化されます。
・OSのダウングレードを伴いますので、セキュリティが脆弱になる可能性があります。
・最悪の場合、スマホが文鎮化する可能性があります。
:::

## 実行環境
**PC**
Windows 10 pro

**スマホ**
Google Pixel3a
Android version 12.1.0

## 手順
[ubuntu touchの公式サイト](https://devices.ubuntu-touch.io/inst

元記事を表示

Jetpack ComposeでfontSize設定はどうするのが良いのか

Jetpack Composeでフォントサイズを設定するときに、どう書くのがベストなのか分からなかったので調べてみました。
[こちらのStack Overflow](https://stackoverflow.com/questions/67522145/text-composable-dimensionresource-not-working-as-fontsize-parameter)で議論されていましたが、書き方によってスケーリング、つまりOSのフォントサイズを変更した際の挙動に違いがあるみたいです。
ただいまいち結論がわからなかったので自分でも調べてみました。

# 先に(多分)ベストプラクティス
上記StackOverflowでも言われていますが、テーマを設定できる場合はそちらを使った方が良いです。
Material Design3は不勉強なのですが、以下のようにTypographyクラスを使っておくとアプリのデザインの統一感に繋がるのでこれが一番良いと思います。
“`Type.kt
val typography = Typography(
headlineSmall

元記事を表示

Next.js Learnのアプリをデスクトップアプリ化とスマホアプリ化してみた

# Next.js Learnってなに❓
Googleさんの試験運用中生成AIの解説がわかりやすかったので、拝借🙏

>ReactをベースにしたフレームワークであるNext.jsの諸知識や思想を学ぶことができる無料のチュートリアルです。
このチュートリアルでは、請求書を管理するダッシュボードを作成しながら、Next.jsの基礎を学ぶことができます。
認証機能やDB連携、PaaS(Vercel)の活用など、実践的な内容も含まれています。
JavaScriptではなくTypeScriptを使用します。
また、チャプターの途中には、それまでの説明が理解できているかをチェックする簡単な択一式のクイズが用意されています。

公式のページはこちら👇
[Learn Next.js | Next.js by Vercel – The React Framework](https://nextjs.org/learn)

## 💻 試した環境と該当リポジトリ
[利用したリポジトリ](https://github.com/TakaraShinya/nextjs-dashboard)

“`
Apple

元記事を表示

ViewPager2のrequestDisallowInterceptTouchEventを実行してもViewPager2には効果がない件

AndroidのViewにおいて、タッチイベントは子の方が優先的に処理できますが、親Viewは子Viewが`onTouchEvent`を処理している中、`onInterceptTouchEvent`が呼び出されており、trueを返すことで処理を奪うことができます。
例えば横スクロールのViewAの上に、縦スクロールのViewBを配置するという画面構成の場合、ViewAは`onInterceptTouchEvent`で操作を監視し、操作方向が横方向であると判定すると、ViewBから操作の優先権を奪うことで、縦横両方の操作が両立できるという仕組みになっています。

概ねこれでうまくいくのですが、場合によっては親View側で処理を奪ってほしくない場合があります。その場合に使うのが、`requestDisallowInterceptTouchEvent(true)`です。
名前の通り、このメソッドがコールされたView(およびその親のView)はInterceptしなくなり、子はタッチイベントの優先権を奪われなくなります。

例えば、チョット複雑なレイアウトを作るとします

– 横スクロールの

元記事を表示

脱初心者を目指す!Android Studioの便利な機能やショートカットまとめ

## はじめに

こんにちは。
去年の秋までクロスプラットフォームなアプリ開発を行っており、その後ネイティブ言語(SwiftやKotlin)によるアプリ開発を担当するようになりました。
ネイティブ言語でのアプリ開発を始めて約半年、色々なことをキャッチアップしましたが、その中でとくに役立ったのはIDEの便利な機能やショートカットでした。

そこで、今回はAndroid Studioにしぼって、この半年間でよく使ったもの、自分で調べて便利だなと思ったもの、さらにはモブプロやペアプロした中で他のエンジニアから見聞きしたものを記事にまとめます!
Android Studioを使っている人はもちろん、これから使おうとしている人にも役立てば幸いです。

## この記事の対象者

– Android Studioでのアプリ開発を始めたての人[^1]
– Androidアプリ開発をするにあたって最低限の便利な機能やショートカットを知りたい人

[^1]: Android Studioが使ったことあれば問題ありません!さらに[Android Studio UI](https://developer.an

元記事を表示

メモ:バルミューダフォンのデフォアプリ無効化

アプリ(ただのショートカットっぽいのでおそらく不要)
パッケージ名:
com.balmuda.phone.blmb.shortcut
com.balmuda.phone.blmbrecipe.shortcut
com.balmuda.phone.blmbtech.shortcut
標準ではできないので、パソコンとつなぎadbコマンドを有効にして(要ググる)無効化する。

元記事を表示

日本語プログラミング言語MindをAndroidに移植した時の記録(ステップ4/9)

# はじめに

 この記事はだいぶ前(2012年)にココログの「[キリーの日本語プログラミング](http://uemon3511.cocolog-nifty.com/nihongoprogram/)」に掲載したコラムですが、再編集してこちらにも投稿します。今となっては古い話ではありますが、OSによってプログラム言語(AndroidではJava)が決め打ちされている環境で規定と異なるもの(Mind)を走らせたことの記録としてお読みください。

# イベントリスナー

 レイアウトの場合と似た話だが、Java側のオブジェクトをMind側に伝えても意味が無いので簡単な仕組みで両者間で連絡が取れるようにする。

![20130603eventlistnersample_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118036/7de8b7d5-38e3-e618-f178-1e78d619672e.png)

## クリックイベントリスナーの登録

 まずクリックリスナーの登録は以下のように行う。

元記事を表示

OTHERカテゴリの最新記事