アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

Android

【Android】ViewBindingの使用から応用

ViewBindingがもうすぐStableになるので使用してみました。ActivityやFragmentの最新版との組み合わせを書いていきます。 公式ドキュメントはこちらになります。 https://developer.android.com/topic/libraries/view-binding 使用準備 build.gradleにViewBi…

Bitmapから暗黙的Intentでのシェアまで

Android Q時点のコードです。 Bitmap->Uri class ImageRepository( private val application: Application ) { private val IMAGE_PATH = "image" private val imagePath = application.getFileStreamPath(IMAGE_PATH).apply { // シェアのために一時的に保…

【Android】Room 2.1の更新点

I/Oセッション youtu.be Coroutineのサポート 関数にsuspendと付ける事でCancelableなコードが生成されるようになります。 全文検索のサポート SQLiteの拡張機能である、全文検索を利用できるようになります。 EntityにFTS4拡張と使用することを書きます。 …

Android Studio 3.5からのDataBindingの進化、3.6からのViewBinding

Viewへのアクセス方法が進化していきます。 I/Oセッション youtu.be DataBinding Annotation Processingの速度が20%向上 Incremental Annotation Processing android.databinding.incremental=true で増分コンパイルが有効化される。 XMLの即時反映 XMLに追…

【Android】SavedStateHandleでViewModelをプロセスキルを乗り越えるようにする

I/Oセッション youtu.be ViewModel このようなカウントするLiveDataがあります。 class MainViewModel : ViewModel() { val counter = MutableLiveData(0) } 押したら1増やします。 ViewModelを使用すれば画面回転を乗り越えられます。 当たり前ですが、プロ…

【Android】DerInputStream.getLength(): lengthTag=109, too big.

DerInputStream.getLength(): lengthTag=109, too big. にてビルドはできるものの署名ができず、インストールできない。 AndroidXへ移行した際に発生した。ただ、環境によっては問題が出なかったので関係あるか不明。 gradle-4.10.1→gradle-4.10.2にすること…

【Android Q】Beta2→3 READ/WRITE_EXTERNAL_STORAGEの復活

以下が消えて - READ_EXTERNAL_STORAGE - WRITE_EXTERNAL_STORAGE 以下が出てきたが - READ_MEDIA_IMAGES - READ_MEDIA_AUDIO - READ_MEDIA_VIDEO 「READ_EXTERNAL_STORAGE」、「WRITE_EXTERNAL_STORAGE」が復活した。 ただ、Scoped Storageが宛先になるよう…

【Android】PreviewのVERSION_CODESとSDK_INT

VERSION_CODES AndroidQ Preview2のコード public static class VERSION_CODES { public static final int BASE = 1; public static final int BASE_1_1 = 2; public static final int CUPCAKE = 3; public static final int CUR_DEVELOPMENT = 10000; publi…

【Android】リソースのプレフィックスをモジュールごとに強制する

モジュールが違っていてもリソースIDは被ってはいけない。 モジュールが違えばレイアウトID(ファイル名)を被らせる事はできてしまう。 以下をGradleに記述する事で警告を出す事ができる。 android { resourcePrefix 'modulename_' } たまたまHyperionのバグ…

【Android】CustomViewでPreviewが正常に生成されない場合に

CustomViewを作ったことがある、更にCustomViewの中でonDrawなどを書いた事があればわかるのですが、その内容はレイアウトエディタに反映されます。addViewしても反映されます。つまりAndroidStudioがCustomView内の処理を走らせてレイアウトや装飾を確認し…

RecyclerViewのスクロール後にクリックできなくなる問題

問題 以下の動画のように末尾や先頭にスクロールした後に一回クリックイベントが効かなくなります。しかし、暫く待てばクリックすることができます。 これはGooglePayアプリでも発生しています。 再現環境 自分の場合はBottomSheetにFragmentとしてRecyclerV…

【Android】VectorDrawable AnimatedVectorDrawableを理解する

VectorDrawable、AnimatedVectorDrawableってなんなの。SVGから変換できるけどそれとは何が違うのって思いました。 SVGとVectorDrawable なので何が違うか確認しましょう。 適当に大きさの違う円形と楕円形のSVGを作ったものとそれをAnimatedVectorDrawable…

AndroidXプロジェクトでExoPlayer flac extensionを使う

アノテーションとかがサポートライブラリの方を参照しようとして参照できなくてエラーが出ます。 トップレベルのgradle.propertiesは以下のようになっています。 android.enableJetifier=true android.useAndroidX=true 書き換えやってくれないの?って思い…

個人データを保持したままWindowsを再インストールした場合のAndroid Studioインストール

OS入れ直してAndroid Studioを再インストールした時にハマったのでメモ。 発生したこと Android SDKがインストールできない 原因 JetBrains製品はUser/{UserName}/.{AppName}にデータを保存している。 Android Studioを再インストールして初回起動時にこれを…

Gradle repositoriesでjcenterよりも先にgoogleを書け

ある日このようなエラーが出ました。 Failed to resolve: play-services-stats Open File Failed to resolve: play-services-base Open File Failed to resolve: play-services-tasks Open File Failed to resolve: play-services-basement Open File build.…

GooglePlayアプリ削除祭りが開催。暫くアプリを放置している人は確認しよう。

削除のお知らせ 朝起きるとアプリが削除されていました。 子供向け設定されていないアプリが削除されています。しかし全て削除されているわけでありませんでした。基準は謎。 わかりやすくマークされています。 これですね。 いいえにしておけばいいと思いま…

Android Profiler, Fragment, EditText, 画面遷移で強制終了

まさかAndroid Profilerのせいだとは思いもしなかった。 Android Profilerのタブに触れたが最後、強制終了するapkが生成されるようになります。 環境 Android Studio 3.1.2 (3.1.1でも報告がある) Android 8.0.0 compileSdkVersion 27 buildToolsVersion '27…

画面のオーバーレイでシステムUIが落ちると思ったらアダプティブアイコンのせいだった

画面オーバーレイしようと思ったらシステムUIが落ちる。 今までオーバーレイは普通にやってたのに何故…と思ったらアダプティブアイコンのせいだったという話です。 はじまり 画面オーバーレイをしようと思ったらシステムUIが止まった。 Logcatでフィルターを…

Android Studio 3.1 + Kotlin + DataBinding + 大文字名前空間 → 死

毎度おなじみAndroid Studioのアップデート。毎回苦労させられる。 まずこれ DataBindingUtil.bind()がnullableになった。 DataBindingUtil.bind()!!としてしまった。 本題 DataBinding関連で大文字名前空間を使うと死にます。因みに先頭大文字のみっぽい。K…

TwitterKit3-Androidで認証

メモ private val EXTRA_CONSUMER_KEY = "ck" private val EXTRA_CONSUMER_SECRET = "cs" private val TWITTER_PACKAGE_NAME = "com.twitter.android" private val SSO_CLASS_NAME = TWITTER_PACKAGE_NAME + ".SingleSignOnActivity" val authConfig = Twitt…

Android Oreで「startForegroundService」を使わないでオーバーレイした時に起きる通知画面との問題

API Levelとオーバーレイ Android Oreo(API Level 26)からWindowManager周りが変わってオーバーレイをするには色んなレイヤーがありましたが「TYPE_APPLICATION_OVERLAY」にまとめられたり「startForegroundService」を呼んで「startForeground」を使わない…

AccessibilityService開発中にAccessibilityServiceが起動しなくなる

最初は問題なかったが暫くすると何故か起動しなくなる。今のところAPI Level 26で再現。 取り敢えず一通り環境 Android Studio 3.0.1 com.android.tools.build:gradle:3.0.1 compileSdkVersion 27 buildToolsVersion "27.0.3" minSdkVersion 17 targetSdkVer…

ToolBarとかのサポートライブラリでDataBinding

Android data bindingで定義済みの属性リスト - Qiita 「android:onMenuItemClick」とか定義されてるはずなのに使えんなと思ってまさかと思い確認。 原因 extensions/baseAdapters/src/main/java/android/databinding/adapters/ToolbarBindingAdapter.java -…

Android Kotlin DataBindingのTwo-wayでisHogeというフィールド名が使えない

エラー文 Error:java.lang.IllegalStateException: failed to analyze: android.databinding.tool.util.LoggedErrorException: Found data binding errors. ****/ data binding error ****msg:The expression [...] cannot be inverted: Two-way binding can…

Overlayアプリを7.x→8.0→8.1と対応させる

7.x→8.0 startService ↓ startForegroundService TYPE_PHONE TYPE_PRIORITY_PHONE TYPE_SYSTEM_ALERT TYPE_SYSTEM_OVERLAY TYPE_SYSTEM_ERROR ↓ TYPE_APPLICATION_OVERLAY startForegroundは5秒以内に呼び出す。 これだけですね。TYPE_PHONEとかTYPE_SYSTEM_…

Android OreoのOverlayアプリを対応させたはずかパーミッション設定で有効化できない

前提条件 Android 6.0(M)に対応させていること 対応 TYPE_SYSTEM_ALERT → TYPE_APPLICATION_OVERLAY 以上 問題 あれ、切り替えできない。 原因 これAPI27のエミュレーター使っているのが問題でした。 targetSdkVersionとcompileSdkVersionを27にしたら解決。…

Android Studioの危ない置換機能

たまにやってしまうこの置換時のエラー。検索から来る人のためにエラー文を。 エラー文 Some error(s) occurred while processing annotations. Please see the error messages above. Unresolved reference: hogehoge 原因 カスタムView、ViewName.java(自…

【Android】ToolbarのTitleを後から変更する

Kotlinの書き方ですがJavaとやってることは同じですのでご了承ください。 やりたいこと ToolbarのTitleを更新したかった。 セットする時はよくこんなコードを見ます。 val toolbar = findViewById(R.id.toolbar) as Toolbar toolbar.title = "" setSupportAc…

[Android]GooglePlayディベロッパーページを作り、DL数を上げる

GooglePlayではディベロッパーごとのページを持つことができます。 こういうのですね。 最初は大きいディベロッパーしか持てないと思っていたのですがどうも誰でも持てるみたいなので作ってみました。 メリット 作るメリットとしてはおすすめアプリを1個登録…

[Magick.NET]同じsvgデータから複数サイズpngを出力する

Androidだとhdpi、xhdpi、xxhdpi、xxxhdpi UWPだとScale 100、125、150、200、400 同じデータから一気にpngに出力したい!! って時が多くあったので作りましょう。 Androidはsvg1個あれば大丈夫になったというのにUWPと来たら時代遅れなんだから… 先に言っ…