- 1. Jetpack ComposeとHiltによるDIのお勉強備忘録
- 2. ActionBarでSearchViewを使うと意図せず他のアクションボタンが消えちゃう問題の解決策
- 3. GradleTemplate of unity not found : /Applications/Unity/Hub/Editor/2021.3.6f1/… の解決策
- 4. Ubuntu22.04.1LTS環境でAndroid Emulatorのサウンドを有効にするとyoutubeなどの音声にノイズが乗る問題
- 5. .NET MAUIを使ってお試しAndroidアプリの作成
- 6. 【Flutter / RESTAPI】簡単なAPIをFlutterで呼び出してみた!
- 7. 【WSA】WindowsでAndroidアプリ実行! GooglePlay も入れてみた
- 8. WebViewの設定について
- 9. 親子関係のあるFragment間でactivityViewModelsを使わずにviewModelsを使ってViewModelを共有する
- 10. テーマ別アプリアイコン表示方法
- 11. vistaでandroid studio その25
- 12. Oculus Questのブラウザを自分好みに拡張する
- 13. Androidアプリ忘備録 ~文法メモ
- 14. 【APK, Android Studio】WindowsでAndroidアプリのAPKを抽出・インストールする方法
- 15. FlutterでAndroidの通知チャンネルを作成する
- 16. 【Android】RecyclerViewアプリを作成
- 17. ActivityとFragment間でViewModelを共有したい
- 18. 【Flutter】import するパッケージが多くなった時の対処法
- 19. [Flutter]BLoC 7.0系から8.0系の破壊的変更に対応した話(mapEventToState廃止)
- 20. vistaでandroid studio その24
Jetpack ComposeとHiltによるDIのお勉強備忘録
インターンなどに参加し,DIの勉強の必要性に駆られたため,ここにメモを残します.あなかしこ.
## 前提: なぜDIが必要なのか[[1][2]](#参考文献)
– 複数箇所で同じクラスのインスタンスを使うとき
– 同じ生成コードを複数書く必要がある.
– 一つのオブジェクトの中で,他のオブジェクトをインスタンス化すると.
– 生成元は,生成先を知る必要があるから依存性が高くなる.
– 単体テストができなくなる場合がある.### MVVMの場合
– Viewは,ViewModelの生成方法(依存関係)を知る必要がある.
– ViewModelは,Modelの生成方法を知る必要がある.ということらしい
__理解を深めるために,実際にアプリを作ってみようというところ.__## はじめに
### アプリ開発上の参考資料
DIを利用している参考資料(サンプルアプリ)がないか探した結果…– __Jetpack ComposeによるAndroid MVVMアーキテクチャ入門__ [[1]](#参考文献).
こちらはMVVMアーキテクチャの理解を目
ActionBarでSearchViewを使うと意図せず他のアクションボタンが消えちゃう問題の解決策
Androidで`ActionBar`に`SearchView`のようなアクションビュークラスを使用してる時に発生するバグもどきに対する備忘録です。
# 問題の詳細
以下のコードで`SearchView`が開かれた(expand)状態でオーバーフローメニューをタップしたり`DialogFragment`を開いたりすると表示されていたアクションボタンがオーバーフローメニューに移り、更にその状態で`SearchView`を閉じると表示されていた`SearchView`を含めた全てのアクションボタンが消える。動画
![再現動画](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/807403/10e9a9ad-a45b-7798-c0dd-f0a3ae1594b4.gif)
“`xml:menu_main.xml
【Flutter / RESTAPI】簡単なAPIをFlutterで呼び出してみた!
## 初めに
iOSやAndroidの開発を今までやってきましたが、
ここ最近はFlutterを使用して開発をしている企業も
多いのではないかと感じます。フリーランスの案件にもちらほら見かけるので、
今更かもですが勉強しなくては。。Dartは簡単に触ったので、お馴染みのAPI操作を
やってみました!## 使用するAPI
郵便番号をパラメータとして使うことで、
住所の情報がJson形式で返却されるAPIを使用します。参考:郵便番号データ配信サービス
http://zipcloud.ibsnet.co.jp/
## 環境
・Android Studio
・url_launcher: 6.1.2
・flutter_html: 2.2.1
・http: 0.13.3## 実装
全体のソースというよりは、テンプレート見たいな感じで
順に説明します。
### 0. 事前準備
“`
// ①pubspec.yamlで使用するパッケージを入力
# The following adds the Cupertino Icons font to your application.
【WSA】WindowsでAndroidアプリ実行! GooglePlay も入れてみた
WSAがリリースされて日本語パックにも含まれたらしいので早速使ってみたいなと!!
# WSAとは
知らなかったらこの記事見ないだろってことで、、# 公式WSAは…うん。。
公式によると MicrosoftStore から Amazon appstore を入れれば一緒にWSAも入るとのこと
https://learn.microsoft.com/ja-jp/windows/android/wsa/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/7ac50581-85b5-d495-6c45-ff7a2d8176b5.png)WSAを入れるだけならこれでOK
ただこのAmazonAppstoreが酷えんだわ
全然アプリがない
(一応APKあればインスコはできるみたいだけど不便が過ぎる。。ので、やはりGooglePlayを入れたい
# GooglePlay入りのWSAのインストール
色々調べてみたけど下記が一番入れやすそう
https://github
WebViewの設定について
# はじめに
今回はwebViewを触る機会があり少し調べたりもしたので、そこで調べて見つけたものを記事にします。# 設定一覧
**JavaScriptを有効にする**
“`
webView.settings.javaScriptEnabled = true
“`**リンク先をブラウザにせず、WebView内でリンクさせる**
“`
webView.webViewClient = WebViewClient
“`**スクロールバー領域を消す**
“`
webView.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
“`
または、
“`
webView.setVerticalScrollbarOverlay(true)
“`**ローカルのHTMLファイルを表示させる**
“`
val padh = “/data/index.html”
webView.loadUrl(“file://$padh”)
“`
ローカルのファイルをwebViewに表示させるには http:// の代わりに file:// に
親子関係のあるFragment間でactivityViewModelsを使わずにviewModelsを使ってViewModelを共有する
[Googleの公式ドキュメント](https://developer.android.google.cn/guide/fragments/communicate?hl=ja#viewmodel)では、`activityViewModels`を使ってFragment間でViewModelを共有する方法が紹介されています。しかし、どうにか`viewModels`だけで済ませられないかと思い、**親子関係のあるFragment間**であれば実現できそうなので紹介します。
## 実装
早速見ていきましょう。ここでは子のDialogFragmentを親のFragmentで生成して呼び出す場合を想定しています。
### 親Fragment
ViewModelの生成には`viewModels`を使います。子Fragmentを生成する際には`childFragmentManager`を渡してあげます。
“`kotlin:ParentFragment.kt
class ParentFragment : Fragment() {
val shareViewModel by viewM
テーマ別アプリアイコン表示方法
今回はテーマ別アプリアイコンの端末での設定方法を紹介していきます。
まずは、端末の設定を開きます。
Walloaoer&Style(壁紙とスタイル)を選択します。
![Screenshot_20220918_184757.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/339ee1ef-af02-0d3a-91df-6a6adac981eb.png)そしたら下にスクロースをして、テーマアイコンのスイッチをONにします。
![Screenshot_20220918_184902.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/3fbd3c65-daf5-bd63-cd4c-5624011dc873.png)
そうするとこのようになります。
![Screenshot_20220918_184247.png](https://qiita-image-store.s3.ap-north
vistaでandroid studio その25
# 概要
vistaでandroid studio 1.1.0やってみた。
jniやってみた。
練習問題やってみた。# 練習問題
jniでopenglでコンパイル済みライブラリーを使え。# 方針
– ライブラリーは、assimp使う。
– ndk-build使う。# 写真
![device-2022-09-18-055504.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/fbfae074-a664-d4e2-5d3a-42352e742a9a.png)
# Android.mk
“`
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= libassimp1
LOCAL_SRC_FILES:= $(LOCAL_PATH)/../externals/assimp-3.0/libs/armeabi-v7a/libassimp.so
LOCAL_EXPORT_C_INCLUDES := $(L
Oculus Questのブラウザを自分好みに拡張する
Android版のChromeは拡張機能をインストールできないので,操作を自動化したり,サイトにちょっとした機能追加をしたいときに不便です.ChromiumをベースにしているOculus(Meta) Questのブラウザも同様の問題があります.
最低限,動画サイトで倍速再生したり,広告をブロックしたり,ファイルをGoogle Driveに保存したりできないと不便なので,[Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) を使って特定のURLにアクセスした時にJavaScriptを実行するツールを書いたら便利になりました.
やったことは単純でこれといって面白い部分もありませんが,思ったより面倒だったのでまとめておきました.
# GoでDevTools Protocolを使う
Goで実装するため[Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) を使うためのライブラリを
Androidアプリ忘備録 ~文法メモ
Android Studioにおける
kotlinプロジェクト文法について忘備録です。
# HTMLにおけるDOCTYPみたいなもの
“`kotlin
“`
# LinearLayoutの書き方
“`kotlin
…
“`
# ListViewの書き方
“`kotlin
【APK, Android Studio】WindowsでAndroidアプリのAPKを抽出・インストールする方法
## 環境
+ Microsoft Windows 10.0.22000.978
+ Android 9## 目次
前半:[APKを抽出する手順](#apkを抽出する手順)
後半:[APKをインストールする手順](#apkをインストールする手順)## APKを抽出する手順
Android Studioをインストール済みの場合は [2. abdコマンドのパスを通す](#2-abdコマンドのパスを通す) へ。### 1. SDKのインストール(Android Studioをインストールしていない場合)
[Android Studio 公式サイト](https://developer.android.com/studio/?hl=ja)からAndroid Studio(Download Android Studioをクリック)またはコマンドラインツール(Download optionsをクリック → Command line tools only)をダウンロード### 2. abdコマンドのパスを通す
Android Studioをインストールすると、以下の場所に `adb.
FlutterでAndroidの通知チャンネルを作成する
# 概要
通知チャンネルをFlutterで作成する方法を記載します。
通知チャンネルについては[こちら](https://developer.android.com/guide/topics/ui/notifiers/notifications?hl=ja#ManageChannels)。
[flutter_local_notification](https://pub.dev/packages/flutter_local_notifications)というパッケージを使用します。# プラグインの初期化処理
プロジェクトのmain関数内に以下の処理を追加します。“`dart
final FlutterLocalNotificationPlugin notificationPlugin =
FlutterLocalNotificationPlugin();
await notificationPlugin.initialize(
InitializationSettings(
android: AndroidInitializationSettings(‘
【Android】RecyclerViewアプリを作成
# はじめに
業務で初めて触った時、訳が分からなかったのがRecylerViewでした。改めて学習してみると意外とシンプルで、きちんと手順踏んだらすぐに実装することができます。# 実装
・まず表示するデータです。
居酒屋のドリンクメニュー風。
“`java:MainRow.kt
package com.example.recyclerviewappimport java.util.ArrayList
data class MainRow(val title: String, val price: Int)
val menu : ArrayList
= arrayListOf(
MainRow(“生ビール”, 500),
MainRow(“ハイボール”, 400),
MainRow(“レモンサワー”, 400),
MainRow(“グレープフルーツサワー”, 400),
MainRow(“ウーロンハイ”, 400),
MainRow(“緑茶ハイ”, 400),
MainRow(“コーン茶ハイ”, 4
ActivityとFragment間でViewModelを共有したい
### はじめに
前提として、deprecatedになっているViewModelProviders.ofやfragment-ktxを導入せずにViewModelを使ってデータ共有したいと思い調べた。### 手順
– 引数なしのViewModel
– AndroidViewModel(application)を継承していて引数がapplicationだけのときであればViewModelProviderを使用した以下のコードでとても簡単に共有することができる。
~~~kotlin:MainActivity.kt
//FirstFragmentとSecondFragmentと共有
private val viewModel by lazy {
ViewModelProvider(this)[MainViewModel::class.java]
}
~~~~~~kotlin:FirstFragment.kt
//SecondFragmentとMainActivityと共有
private val parentViewModel by lazy {
ViewMod
【Flutter】import するパッケージが多くなった時の対処法
## 初めに
コーディングをしていく中で、一つのファイルでインポートするパッケージやページの数が増えてきてしまいました。
初期に書いたコードの中では、以下のように大量の import 文が並んでいるものもありました。
![スクリーンショット 2022-09-12 16.46.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609901/72fa0578-f6bc-63e0-e65e-95bea5fc3c52.png)
流石にここまで import 文が並ぶことは無いかもしれませんが、大きなプロジェクトになると大量のページやパッケージを import する機会はあると思うので、今回はその対処法を共有したいと思います。## 記事の対象者
+ ファイル内の大量の import を無くしたい方
+ 大規模なアプリを開発中の方
+ コードを綺麗に保ちたい方## 実装
大量の import 文を無くすためには `export` を使います。
まずは新たに 「 importer.dart 」 というフ
[Flutter]BLoC 7.0系から8.0系の破壊的変更に対応した話(mapEventToState廃止)
## はじめに
私の携わっているプロジェクトではflutter_blocを採用しており、
今回7系から8系にアップデートを行いました。https://pub.dev/packages/flutter_bloc
元々v7.0.0を利用しておりましたが8系で1点破壊的変更が入っており、
対応に関する日本語での記事が少なかった為、今回共有をさせて頂きます。## 破壊的変更点 (mapEventToState廃止)
v7.0.0を利用していた当初、何かしらのEventを発火させた後にBLOCクラス内では`mapEventToState`を用いて各種Eventのハンドリングを行なっておりました。
この`mapEventToState`は**v7.2.0から非推奨**になり**v8.0.0以降は廃止**となるようです。> In bloc v7.2.0, mapEventToState was deprecated in favor of on
. mapEventToState will be removed in bloc v8.0.0.
https://blocli
vistaでandroid studio その24
# 概要
vistaでandroid studio 1.1.0やってみた。
jniやってみた。
練習問題やってみた。# 練習問題
jniでopenglで箱を回転、表示せよ。# 写真
![device-2022-09-15-115037.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/a7de5048-6f2e-3cc3-ac88-a99e6fcd9fb5.png)
# サンプルコード
“`
#include
#include
#include
#include
#include
#include
#include
#include “Matrix.hpp”#define LOG_TAG “libNative”
#define LOGI(…) __android_log_print(ANDROID_LOG_I