- 1. Android の端末の言語設定をコマンドで変更したい
- 2. 広告IDを特定の値に変更したい(rootが必要)
- 3. DJI Mavic 2 Pro を自作Androidアプリで自動操縦させる(3)~サンプルプログラムの実行(実行編)~
- 4. How to use YYSystem, a voice interactive real-time translation application
- 5. DJI Mavic 2 Pro を自作Androidアプリで自動操縦させる(2)~サンプルプログラムの実行(準備編)~
- 6. JetpackComposeで9patchイメージを描画する
- 7. 20230729_自主学習MVVM_データレイヤ勉強編_DI完敗
- 8. FlutterでGoogle Driveにファイルをアップロードして参照する
- 9. android:enableOnBackInvokedCallback=”true”にしたときのバックキーのKeyEventの変化
- 10. 20230728_自主学習MVVM_データレイヤを勉強せねば
- 11. JetpackComposeでFirebaseAuth(メールリンク認証)
- 12. ガチで本物のAviUtlをスマホで使う方法(当然重い)
- 13. AndroidのJUnitテストは超ムズい(4)
- 14. JetpackComposeでFirebaseAuth(Google認証)
- 15. Flutter?audioplayers を使ったのに ios, android 端末で音が鳴らない、小さい時の対処法
- 16. 【Android】FireBase DynamicLinks経由でアプリインストールしたらストアに「開く」ボタンが出ない
- 17. Android EspressoでクイズアプリのUIテストを導入してみた (Windows)
- 18. 【Android】GoogleMapの専用UIの位置を変える【Kotlin】
- 19. JetpackComposeでFirebaseAuth(GoogleOneTap認証)
- 20. jetpack composeで遷移先から遷移元にデータを返す
Android の端末の言語設定をコマンドで変更したい
# 概要
端末の言語設定を毎回手動で変更するのが面倒だったので、楽にできる方法をまとめました。## adb コマンドで設定画面を開いてから言語を変える
“`shell
adb shell am start -a android.settings.LOCALE_SETTINGS
“`
言語設定画面はメーカーやAndroidのバージョンによって導線が微妙に違ったりするので、これを使うとちょっと楽になるかも。## ドキュメントに書いてある方法
こちらに記載されている方法です。
https://developer.android.com/guide/topics/resources/localization?hl=ja“`shell
adb shell
setprop persist.sys.locale fr-CA
“`のような感じで簡単に変更できそうな感じで書いてありますが、実際に試すと効果はありません。
## customlocal2 経由で変更する
“`shell
adb shell am broadcast -a com.android.intent.a
広告IDを特定の値に変更したい(rootが必要)
“`shell
adb root # root じゃないと編集できない# 広告IDが記載されているファイルをローカルにコピー
adb shell cat /data/data/com.google.android.gms/shared_prefs/adid_settings.xml > adid_settings.xml# ここでローカルにコピーした adid_settings.xml をエディタで開いて任意の値に変更する
# 反映する
adb push adid_settings.xml /data/data/com.google.android.gms/shared_prefs/adid_settings.xml# root を解除して作業終了
adb unroot
“`
DJI Mavic 2 Pro を自作Androidアプリで自動操縦させる(3)~サンプルプログラムの実行(実行編)~
今回はMobile SDK(Android版)のサンプルプログラムを動かすための準備をします。
[前回の記事](https://qiita.com/shiiiinnooooo/items/32f59f62fdc3ec3f98c0)では、サンプルプログラムを実行するための準備を行いました。# サンプルプログラムのダウンロード
[このサイト](https://github.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio)からサンプルプログラムをダウンロードしましょう。
今回実行するサンプルプログラムは、DJI SDKが正常に実行されることを確認する、というだけのアプリです。早速ダウンロードしていきます。
下記画像の右上にある緑色の「Code」というボタンを押すと、zip形式でダウンロードできます。
![スクリーンショット 2023-07-31 11.57.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
How to use YYSystem, a voice interactive real-time translation application
Let’s introduce the usage of YYSystem, which can assist in web meetings between English and Japanese speakers.
# Introduction
YYSystem is a cross-platform application (Windows, iPhone, Android) capable of transcribing multiple-person meetings and translating into multiple languages. It is well-balanced in terms of voice recognition accuracy, sentence boundary recognition, and translation precision, particularly made easy to handle in conversations using Japanese and English. Although the free v
DJI Mavic 2 Pro を自作Androidアプリで自動操縦させる(2)~サンプルプログラムの実行(準備編)~
今回はMobile SDK(Android版)のサンプルプログラムを動かすための準備をします。
[前回の記事](https://qiita.com/shiiiinnooooo/items/21689dff1ffcf1b91104)では、AndroidStudioでDJI Mobile SDKを使用できるようにしました。
# 手順
1. DJI Developerの登録
1. App Keyの取得# DJI Developerの登録
まずはじめに、DJI製品を使用する際に必要となるDJIアカウントを作成する必要があります。
[DJIの公式サイト](https://www.dji.com/jp)からアカウントを作成します。登録の際には[このサイト](https://sekido-rc.com/blog/technical/210329_002/)を参考にさせていただきました。
[DJIの公式サイト](https://developer.dji.com/)から、登録を行います。
まずはじめに、サイトの右上から「Register」を押してください。
![スクリーンショット 202
JetpackComposeで9patchイメージを描画する
# 概要
![スクリーンショット 2023-07-31 10.34.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3491965/004acf7e-eee5-bdaa-bc28-0347156c1df8.png)
「Sign in with Google」ボタンを作りたかったんです。このボタンにはガイドライン([ガイドライン](https://developers.google.com/identity/branding-guidelines?hl=ja))がありまして、このサイトから画像をダウンロードすると、android用は9patchイメージなんです。
さて、これをJetpackComposeでどうやるか?という考察です。
## ファイルをプロジェクトにインポートする
上記のガイドラインページから画像をダウンロードすると、サイズごとに8個のファイルが入っています。
4つのボタン状態(disable, focus, pressed, normal)x(light or dark)で8個
20230729_自主学習MVVM_データレイヤ勉強編_DI完敗
## やったこと
* 公式のデータレイヤの研修
https://developer.android.com/courses/pathways/android-basics-compose-unit-5-pathway-2?hl=ja## わかったこと
* データリソースの勉強も必要
* DIの箇所の理解不足
丁寧に勉強せねば。## わからないこと
* サンプルアプリの画面レイアウトとしての、xmlファイルで存在しない。(別のやり方があるんだろう・・・)
=> いろいろ調べているとこれであると推測。ChatGPTにも聞いてみました。ChatGPT君が言うには・・・
>Jetpack Composeファイル:もしリポジトリがJetpack Composeを使用している場合、Jetpack Composeファイルが含まれている可能性があります。Jetpack Composeでは、UIコンポーネントがKotlinコードで直接記述されるため、XMLレイアウトファイルを使用しないことがあります。## これからやること
完了まで行えていないので、続きやってみよう~。## 偉大
FlutterでGoogle Driveにファイルをアップロードして参照する
# はじめに
ちょっとGoogleドライブにファイルをアップロードして参照したくなりました。
昔、Javaでやったときに面倒だった記憶がありますが、Flutterでも面倒そうなので、ちゃんとやったことを残しておきたいので記事にします。バージョン関係は以下の通り
“`console
> Flutter –version
Flutter 3.10.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 796c8ef792 (6 weeks ago) • 2023-06-13 15:51:02 -0700
Engine • revision 45f6e00911
Tools • Dart 3.0.5 • DevTools 2.23.1
“`現時点ではAndroidのみの話になります。
また、お試し実装なのでエラーチェック等かなり甘いのでご注意を。# ゴール
ログインして、Google Driveにファイルをアップロードしてそのあとダウンロードする。
# 準備
android:enableOnBackInvokedCallback=”true”にしたときのバックキーのKeyEventの変化
予測型「戻る」ジェスチャーをオプトインしていますか?
オプトインした場合のDialogでのバックキー検出の問題に遭遇しました。
https://developer.android.com/guide/navigation/predictive-back-gesture?hl=ja
予測型「戻る」ジェスチャーをオプトインするには、 `AndroidManifest.xml` の `
` タグ内で、 `android:enableOnBackInvokedCallback` フラグを `true` に設定します。 “`AndroidManifest.xml
…
“`# AppCompatActivityでの変化
このとき、
> 注: OnBackPressedCallback は、android:enableOnBackInvokedCallback の値に関
20230728_自主学習MVVM_データレイヤを勉強せねば
## やったこと
* 情報収集(ネットサーフィン)## わかったこと
* 自分が終了した研修は、UIレイヤだけだったこと
* まだデータレイヤにおいては、ノータッチであること
* データレイヤは、MVVMのModelのことであり、RepositoryとDataSourceで成り立っていること
* Android開発で推奨されるアーキテクチャは、厳密にはMVVMではないという意見があること(公式は近いとしてる。)
* 変数の監視には、オブザーブとxmlからバインドする奴はどっちでもいいということ
(UIレイヤの話ですが)## わからないこと
* データレイヤの世界## これからやること
公式のデータレイヤの研修をやろうかな
https://developer.android.com/courses/pathways/android-basics-compose-unit-5-pathway-2?hl=ja## 偉大なる参考様
いつもありがとうございます。https://zenn.dev/nemototea/articles/d7fe9b095e3487
https:
JetpackComposeでFirebaseAuth(メールリンク認証)
# JetpackComposeでFirebaseAuth(メールリンク認証)
FirebaseAuthのメールリンク認証を実装していきます。メールリンク認証とは、以下のフローで認証を行うものです。
1. ユーザーが、アプリでメールアドレスを入力する(パスワードはいらないです)
1. Firebaseが、認証情報をDeepLinkにしたDynamicLinksを載せたメールをそのメールアドレス宛に送信する
1. ユーザーが、DynamicLinksを開く(=タップする)
1. アプリが、メールアドレスとDynamic LinksのDeepLinkを使って、FirebaseAuthにSignInするメールアドレスの正当性だけでアカウントが作れる様なアプリの場合は使えそうですね。
(小ネタ)DynamicLinks
メールやSNS、Webサイトにあるリンクを押すと、連動するアプリが起動するよ。という機能です。
(小ネタ)DynamicLink
ガチで本物のAviUtlをスマホで使う方法(当然重い)
# 大 前 提
これはAndroid専用です。
iPhoneの方は諦めるか自力で頑張りましょう。俺は絶対やんない
# なんでそんなことしようと思ったのか
スマホ用の動画編集アプリって…なんかこう……使いにくくないですか?
数値を直接指定できなかったりするし、当然ウィンドウもない。それと、どうしてもマウスが欲しくなる。え?俺だけ??
# 注意事項
こまめにキャッシュを削除しても最終的に**マジで4GB消費します**。
ストレージと時間とネットに余裕がある時にやりましょう。# やり方
### Step 0
まずはTermuxをインストールしましょう。
GooglePlayでもリリースされていますが、GooglePlayの仕様変更のせいで更新停止しています。
なにか特殊な事情がない限りF-Droidからインストールしましょう。https://f-droid.org/ja/packages/com.termux/
それとお好きなVNCクライアントもインストールしておいてください。
個人的にはRealVNC Viewerが使いやすいです。https://play.go
AndroidのJUnitテストは超ムズい(4)
# AndroidでAlertDialogを使っている場合のテスト
AndroidでEditTextの入力値チェックで不正だった場合、AlertDialogを使う場合があります。他、何かとユーザに注意喚起させたい場合に使うことがあると思います。Fragment方式(Activity1個に対してFragment複数で画面遷移する方式)でFragmentをinstrumentテストすると、AlertDialogを使っているとうまく動きません。何もせずに実行するとAlertDialogが出たところで・・・
“`
androidx.test.espresso.PerformException: Error performing ‘single click – At Coordinates: 600, 1319 and precision: 16, 16’ on view ‘view.getId() is <2131296376/jp.co.suzuken.ocrexpirchk:id/clearBtn>‘.
at androidx.test.espresso.PerformExcepti
JetpackComposeでFirebaseAuth(Google認証)
# Googleアカウント認証+FirebaseAuth with JetpackCompose
OneTapAuthじゃない方(今までのやり方)のGoogle認証+FirebaseAuth認証を実装していきます。
[OneTap認証](https://qiita.com/jozuko_dev/items/706fc6c89e6982bfd7e2)で実装したクラスを拡張していきます。## 関連記事
– [JetpackComposeでFirebaseAuth(パスワード認証)](https://qiita.com/jozuko_dev/items/f8106009ad4571740d1f)
– [JetpackComposeでFirebaseAuth(GoogleOneTap認証)](https://qiita.com/jozuko_dev/items/706fc6c89e6982bfd7e2)
– [JetpackComposeでFirebaseAuth(メールリンク認証)](https://qiita.com/jozuko_dev/items/bf343ba3f2b37a018
Flutter?audioplayers を使ったのに ios, android 端末で音が鳴らない、小さい時の対処法
AudioPlayer の Global 設定を変更する必要があります。
下記のような関数を作成した場合、
初期化(initialization)時に
`initAudioPlayer()`
を実行してください。
下記のコードはゲームSE を鳴らす場合を想定した設定項目です。
“`
import ‘package:audioplayers/audioplayers.dart’;final AudioContext audioContext = AudioContext(
iOS: AudioContextIOS(
category: AVAudioSessionCategory.ambient,
options: [
AVAudioSessionOptions.defaultToSpeaker,
AVAudioSessionOptions.mixWithOthers,
AVAudioSessionOptions.allowAirPlay,
AVAudioSessionOptions.allowBlu
【Android】FireBase DynamicLinks経由でアプリインストールしたらストアに「開く」ボタンが出ない
# 現象
DynamicLinksのURLを叩いてGooglePlayストアに遷移してアプリインストールしたとき、
インストール後には「アンインストール」と「開く」のボタンが表示されてほしいのに、
「アンインストール」のボタンしか表示されない。ただPlayストアに「開く」ボタンが出ないだけで、
端末のホーム画面にはちゃんとアプリが追加されているのでそこから起動できる。
DeepLinkに渡したパラメータもちゃんと機能する。という、よくわからない現象。
# 原因
AndroidManifest.xmlの設定が原因だった。例えばDynamicLinksのURL(長いURL)が下記のものだったとします。
https://example.page.link?link=https://example.com/test&apn=・・・これは、下記のような意味合いになっています。
* DynamicLinksのURL:https\://example.page.link
* DeepLinkのURL:https\://example.com/test今回の原因は、Android
Android EspressoでクイズアプリのUIテストを導入してみた (Windows)
# 概要
本記事はWindowsユーザー向けにAndroid EspressoでクイズアプリのUIテスト導入までの手順を紹介しています。
# 開発環境
Android Studio
https://developer.android.com/studio/install?hl=ja# 言語
Java# テスト対象アプリ
今回はCode for fun様のクイズアプリを参照させていただきます。(Java)
https://codeforfun.jp/android-studio-quiz-game-1/# 自動化フレームワーク
Espresso
https://developer.android.com/training/testing/espresso?hl=ja# 手順
### 1. Android Studioの[最新版](URL “https://developer.android.com/studio/install?hl=ja”)をインストール
(本記事ではAndroid Studio Flamingo | 2022.2.1を使用)#
【Android】GoogleMapの専用UIの位置を変える【Kotlin】
# はじめに
GoogleMapを用いたアプリでは GoogleMapUIがあり、GoogleMapの操作をUI行うことができます。
ズーム、コンパス表示、現在地ボタン、屋内で使われる階層別で表示できるレベルピッカー、マーカーをタップした時に現れるマップツールバー などがあり 基本的にマップの上端、下端、左端、右端の位置に表示されます。
詳しくは 分かりやすくまとめてくれている記事やAndroid公式を見てもらえればと思います。今回は、その表示位置を変更する方法を記事に残しておこうと思います。
# 実践
公式では、>コントロールを上端、下端、左端、または右端から移動するには、GoogleMap オブジェクトにパディングを追加します。
とあります。
“`
googleMap.setPadding(0,0,0,0)
“`
引数には 第一引数から順に left,top,right,bottom の順に入れていきます。# 参考
https://developers.google.com/maps/documentation/android-sdk/contro
JetpackComposeでFirebaseAuth(GoogleOneTap認証)
# GoogleアカウントのOneTap+FirebaseAuth with JetpackCompose
JetpackComposeで、GoogleアカウントのOneTap+FirebaseAuthを実装していきます。## 関連記事
– [JetpackComposeでFirebaseAuth(パスワード認証)](https://qiita.com/jozuko_dev/items/f8106009ad4571740d1f)
– [JetpackComposeでFirebaseAuth(Google認証)](https://qiita.com/jozuko_dev/items/db904cfa28c8a21bf213)
– [JetpackComposeでFirebaseAuth(メールリンク認証)](https://qiita.com/jozuko_dev/items/bf343ba3f2b37a0184be)## エンドポイント
### GoogleアカウントのOneTap
| エンドポイント | |
|:–|:–|
| SignInClient.beginSi
jetpack composeで遷移先から遷移元にデータを返す
# はじめに
今回は`JetpackCompose`を使って`setFragmentResult`のように遷移先から遷移元にデータを返す方法を紹介していきます
### 本文
やること自体は至極単純です。
まず、遷移先から遷移元に戻る時に下記のようにします
“`kotlin
navController.previousBackStackEntry?.run {
savedStateHandle[“result”] = “hoge”
}
“`
次に遷移元で結果を受け取るように処理を書きます
“`kotlin
val result: String? = navController
.currentBackStackEntry?.savedStateHandle?.get(“result”)
“`
こうすることで簡単に値を戻すことができます。
ここで注意が必要なのがデータが保持され続けることと何度も`recompose`されてしまう可能性があるということです。
そのため、下記のようにすることで回避することができます。
“`kotlin
navController.cu