くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Android

Flutterのアプリ名を多言語化する

Flutterの多言語対応(internationalization/l10n)は、 flutter_localizationsをつかった方法が公式ドキュメントはこれ Internationalizing Flutter apps | Flutter Android/iOSのビルド関連はこのあたりに書かれているけど、 Build and release an Android a…

Flutter doctor --android-licensesでエラーになる

ひさびさにflutter doctorを実行するとこんなエラーが。。 $ fvm flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.16.9, on macOS 13.2.1 22D68 darwin-arm64, locale ja-JP) [!] Android tool…

Androidでカスタムビューコンポーネントを作ってみる

今まではstyleとかで作っていたけど、 UIコンポーネントっぽい感じで作りたいなと思い、 いろいろ調べてみたときの備忘録(*´ω`*) 公式ドキュメントだとこのあたり カスタムビューコンポーネントを作成する | Android デベロッパー | Android Developers ク…

Androidでリソースディレクトリを分割する

Androidのリソースファイルが多くなって、 res/layouts配下などの見通しが悪くなる。。 ある程度のまとまりで分割したいなと思ったときの備忘録(*´ω`*) ドキュメントはこのあたりで、app/build.gradleで、 リソースディレクトリを追加することができるっぽ…

Retrofit2でAuthorizationヘッダを自動で設定する

AndroidでRetrofit2を使うときに、 アクセストークンを毎回設定するのはめんどくさいので、 よい方法はないかなと調べてみたときの備忘録(*´ω`*) OkHttpClientのInterceptorで挿入するとよいっぽい。 ApiClientインターフェースの作成 ヘッダーが必要な場合…

【Android】NetworkInfo.StateとNetworkInfo.DetailedStateとSupplicantStateの関係

AndroidでWifiの状態を知りたいなーと思ったら、いろいろなStateがあるらしい。。 対応関係がわからないな...と思ったので調べてみたときの備忘録。 対応関係はこんな感じ。SupplicantStateだと、 NetworkInfo.StateのCONNECTEDとSUSPENDEDに当たるものがな…

各言語でGoogle Playストアの表示を確認する(hl/glパラメタ)

ストアの掲載情報を多言語対応したときに、 各言語での表示確認をする方法を調べたときの備忘録。 PCで確認すると、ストアのURLはこんな感じになってるはず。 https://play.google.com/store/apps/details?id=<applicationId>&hl=ja&gl=jp URL末尾のhl=ja&gl=jpが言語と国を</applicationid>…

AndroidでGIFアニメを表示する(Glide)

Android向け画像読み込みライブラリ「Glide」 いつもお世話になってるけど、GIFアニメもOKだった(´ω`) でも、ループしてほしくないな〜とおもったら、 issueに対応方法があったので、調べたときの備忘録。 build.gradle dependencies { implementation 'com…

Android10からバックグラウンドからActivityを起動できなくなった(SYSTEM_ALERT_WINDOW権限)

Android10の変更点で「バックグラウンドからのアクティビティの起動に関する制限」が追加され、Service内などバックグラウンドからActivityを開くのに制限がかかるようになったよう。 基本的には、「いきなりAcitivityを開くのではなく、通知を使ってね」と…

Androidで全画面表示にする方法(テーマで設定/プログラムで設定)

よくやるのに忘れるので、備忘用(´ω`) テーマで設定する <resources> <style name="AppTheme.FullScreen" parent="@style/Theme.AppCompat.Light"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> </resources>

Androidでカスタムビュー: NumberPickerのmin/maxをxmlで設定できるようにする

Androidの開発をしてて、NumberPickerのmin/maxをXMLで指定したいなと思って、いろいろ調べた備忘録。 カスタムビューにすればできるらしい(´ω`) 設定できる属性を定義する(attrs.xml) まずは、xmlで使える属性を設定する。 res/values/attrs.xmlに設定を書…

AndroidでCameraXを使ってみる(プレビューの表示)

ひさびさにAndroid Jetpackのページを見ていたら、 CameraXなるものがあったので試してみたときの備忘録。 CameraXとは? 公式ドキュメントの説明はこんな感じ。 CameraX は、カメラアプリの開発を簡単に行うための Jetpack サポート ライブラリです。ほとん…

Android: 画面サイズよりも大きいViewを縦/横/斜めでスクロールする

Androidで画像など、画面よりも大きいサイズのViewをドラッグでぐりぐりしたくて、 いろいろ調べてみたときの備忘録。 いくつか方法があるけど、 基本はScrollViewとHorizontalScrollViewを両方使う感じ。 XML XMLはこんな感じ。 ScrollViewwカスタマイズし…

【Android】BuildConfigに独自の変数を追加したり、buildTypesにごとにresoureを自動生成する

ひさびさのAndoridネタ。ビルドごとに定数を書き換えてたりファイルを用意していたけど、 build.gradleでBuildConfigに追加したり、resouceを自動生成できるらしい。 こんな感じ。 apply plugin: 'com.android.application' android { compileSdkVersion 28 …

【Android】生成するapk/aabのファイル名にバージョン名や実行日時を入れる

ひさびさのAndoridネタ。生成するファイル名にバージョンや実行日時を書き換えてたのを build.gradleで設定して見たときの備忘録。 こんな感じ import java.text.SimpleDateFormat // 実行日時を表示したいので、時刻を取得 def date = new SimpleDateFormat…

Retrofit2で自己証明書のサーバへのアクセスできるようにする

Retrofit2でオレオレ証明書なサーバにアクセスすると、 こんなエラーが出る。その時の対処方法の備忘録。 java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. javax.net.ssl.SSLHandshakeException: java.secu…

AndroidのDatePickerDialogで最初に年選択を表示する

Twitterみていたら@_monoさんのすてきなツイートを見つけたので、さっそく試してみたときの備忘録 年のところを押すと年選択できるの分かりにくいので、僕は初期表示を年選択モードにしてる( ´・‿・`)(選択済みの場合は日付選択モードを初期表示) https://t.c…

【Android】アドフリくんをAndroid9.0を使うための追加設定

Androidアプリの広告表示にアドフリくんを使っているけど、Android9.0にしたらクラッシュした。。 Android9.0でいろいろ変わったらしいので、そのときの備忘録。 変更点は以下でアナウンスされている。 動作の変更点: API レベル 28+ をターゲットとするアプ…

【Android】drawable配下にあるURI

drawableにある画像を、URIでImageViewに渡したいなと思ったときの備忘録。 Stack Overflowにあったので、引用。 URIは、"android.resource://<パッケージID>drawable/<drawableのID>"らしい Uri uri = Uri.parse("android.resource://your.package.here/drawable/image_na</drawableのid>…

Androidで回転情報(EXIF情報のTAG_ORIENTATION)を含めて画像を縮小する

Androidからサーバに画像を保存する際に、Android側で縮小したいなと思った時の備忘録。 特にハマったのはローテート情報... 縮小するだけだとEXIFがないので、ImageViewで表示すると回転しない。。 流れとしては、以下の感じ 元画像のローテーション情報(EX…

AndroidのListViewで先頭に要素を自然に追加する

ツイッターみたいに、上方向の自動読み込みを実装したいなと思い、 ListViewの先頭に追加しても、スムーズにスクロールできる方法を、いろいろ調べたときの備忘録。 ほぼこの記事のまま、すごい。。 以下は、コメントとかを追加したくらい // 要素を一番上に…

Android EmulatorでDBのバージョンを手動で戻す

正攻法は、バックアップ&リストアだけれど、開発中だとちょっとだけ戻して、 スキーマの更新の処理を確認したいときがある。 Androidで使うデータベースのバージョンは、SQLiteのuser_versionを使っているので、 無理やり手動で変更すれば、OK。やり直しが…

AndroidのEmulatorに入ってSQLite3でDBの中をみてみる

AndroidのEmulatorに入ってSQLite3でDBの中身をみるときの備忘録。 ひさびさにDBのマイグレーションをするときに、今どうだっけ?を見たかったが、 やり方忘れてたので、その時のメモ Emulatorにログイン $ adb shell アプリの権限に変更 $ run-as <package-name> dbの中を</package-name>…

AndroidのWebViewでInstagramを表示する

InstagramのOAuthをAndroidで使おうと思ったら、WebViewが開けず。。 そのときにいろいろ調べたときの備忘録 JavaScriptを有効にすればOK WebViewのSettingsでJavaScriptを有効にするとうまく動いた! WebView webView = findViewById(R.id.webView); webVie…

【Android】パーミッション無しで画像のURIを取得する

別のActivityをファイル選択ダイアログ的に使う方法。 よくやるけど忘れるやつ。よく忘れるのでφ(..)メモメモ 画像選択するActivityを開く int RESULT_PICK_IMAGEFILE = 1000; Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory…

AndroidのAlarmManagerに再度入門する

いつもAlarmMangerには悩まされるのので、再度調べてみたときの備忘録。。version追従辛い。。 AlarmManagerで設定するサンプル Context context = ....; // AlarmManagerを取得する AlarmManager alarmManager = (AlarmManager) context.getSystemService(C…

Android7.xで電話・通話の自動応答できるようにするまで

Androidはバージョンが上がるごとにセキュリティ対策が進み、利用できなくなるAPIがある。 電話の自動応答もその一つで。数少ない情報も使えない場合が多い。 調べてやってみたこと ITelephonyを使って、acceptCall()を実行する(The internal ITelephony.aid…

【小ネタ】取得したファイルをURIをRetrofitで送信する

表題まま。取得したファイルをURIをRetrofitで送信したときの備忘録。 そのままだとうまくいかないので、RetrofitをRequestBodyを継承して、 writeTo()時にファイル読み込むようにするといいっぽい private fun createRequestBody(uri: Uri, context: Contex…

AndroidでRetrofit2をつかってみた

AndroidでAPIクライアントライブラリのRetrofit2を使ってみたときの備忘録。 build.gradle // Retrofit compile 'com.squareup.retrofit2:retrofit:2.3.0' // OkHttpのログを見たいとき compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' // Adapte…

KotlinでDataBindingをはじめるときの簡単なメモ

ひさびさにKotlinしたらDataBindingで悩んだので、その時の備忘録。 Gradle 要点のみ。kaptを使う。 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' // F…