rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発

android開発 ダイアログのOKボタンを押しても条件によってはダイアログを開いておく(AlertDialog , DialogFragment)

2021 Oct. 10. 出典 Android Dialog/AlertDialog getButton NullPointerException | Lua Software Code 概要 AlertDialogのgetButton()により、OKボタン、Cancelボタンのインスタンスを取得する DialogFragmentのonStart()にokButton.setOnClickListener { }…

android開発 Dialogのデータを呼び出し元のActivityに渡す(独自リスナー利用)

2021 Oct. 17. 2021 Oct. 03. 出典 【Kotlin】DialogFragmentからActivityへ値を渡す - Qiita 手法 呼び出し元Activityにデータを渡す抽象メソッドを持つインターフェースをダイアログクラスに組み込む。 class MyDialogFragment: DialogFragment() { public…

android開発 DefaultSharedPreferences Android 10(API level 29)以降での設定

2021 Sep. 26. 出典 sharedpreferences - PreferenceManager getDefaultSharedPreferences deprecated in Android Q - Stack Overflow DefaultSharedPreferencesの利用は、Android 10(API level 29)以降は次の設定を要する build.gradle(modle:app) depend…

android開発 build.gradle(module:app) implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"は不要

2021 Sep. 26. 出典 kotlin-stdlibの依存関係をgradleに書く必要はなくなりました - 縁側プログラミング kotlin 1.4.0以降ではbuild.gradle(module:app)に次の設定は不要。 dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_vers…

android開発 kotlin EditTextへの文字列のセットにはsetText()を使う

2021 Sep. 23. EditTextへの文字列のセット val str: String = "abc" (NG) editTexr01.text = str // 「EditableにStringを代入しようとしている」とのエラーになる (OK) editTexr01.setText(str)

android開発 画面回転後のActivityにおいてLiveDataによるデータ更新を防ぐ

2021 Sep. 18. 状況 ViewModel内のLiveDataの値に従ってActivityで音楽再生するようにしていると、画面回転によって意図しない音楽再生となった時の対処 概要 Activityのcreateが直前にdestroyされたことによるものなのかどうかを示すフラグ変数を持つ。 onS…

android開発 ViewModel コルーチンで非同期ワーカースレッド内での処理結果をBoolean値で取得する

2021 Sep. 17. 概要 下記コード例では、 getConnectionSmb()において、非同期ワーカースレッドでSMB接続を行うconnectSmb(): Booleanの結果を取得している。 getConnectionSmb()内でviewModelScope.launch(Dispatchers.IO) { }を利用し、その中でconnectSmb(…

android開発 SMBサーバーもしくは端末内からランダムに1つの音声ファイルをストリーミング再生する

2021 Sep. 24. 2021 Sep. 16. 概要 SMBサーバーからランダムに1つの音声ファイルをストリーミング再生する。 SMBサーバーにつながらなかったら、android端末の外部共有ストレージからランダムに1つの音声ファイルをストリーミング再生する。 再生にはサード…

android開発 URIからファイルパスを取得する

2021 Sep. 12. 出典 Android: Files: Unable to get file path from content URI when file is selected from RECENT section in file browser - Stack Overflow fun getPathFromUri(context: Context, uri: Uri): String? { // DocumentProvider if (Build.…

android開発 Intentで起動するアプリを指定する

2021 Sep. 12. Intent#setPackageでアプリを指定する VLCメディアプレーヤーを指定したインテント例 val audioIntent = Intent() audioIntent.action = Intent.ACTION_VIEW audioIntent.setDataAndType(uri, "audio/*") audioIntent.setPackage("org.videola…

android開発 TextView Do not concatenate text displayed with setText. Use resource string with placeholders.

2021 Sep. 11. 事象 TextViewへのsetText()の引数に、変数・式といったリテラル以外を含む式を入れると"Do not concatenate text displayed with setText. Use resource string with placeholders."と警告される。 対応 コードではなく、Stringリソース(R.st…

android開発 kotlin コルーチン内でのThread.sleep( )はコルーチン内でsleep( )を実行したスレッドを指定時間停止する

2021 Sep. 09. 下記コードではワーキングスレッド(Dispatchers.Default)が5秒間停止する。 viewModelScope.launch { withContext(Dispatchers.Default) { Thread.sleep(5000L) } } 参考ページ Kotlin Coroutine 入門1: 起動と suspend - Qiita

android開発 SMBサーバーの音声ファイルをインテントを使ってアプリでストリーミング再生

2021 Sep. 06. 概要 ViewModelを使ったワーカースレッド内でSMBサーバーに接続する。 SMBサーバーへの接続にはjcifs-ngを利用。 ViewModelのLiveData機能でSMBサーバーファイルのファイルパスをメインスレッドに渡す。 メインスレッド内で、SMBサーバーファ…

android開発 ViewModel、LiveData、jcifs-ngを使ったSMBサーバーからのファイルダウンロード、進捗プログレスバー表示

2021 Sep. 05. 2021 Sep. 04. インストールしたandroid端末 android バージョン 10 コンパイル環境 compileSdkVersion 30 minSdkVersion 24 targetSdkVersion 30 android studioのプロジェクトのapp/libsにjcifs-ngライブラリを配置 jcifs-ng-2.1.6.jar http…

android開発 LiveDataの利用パターン

2021 Sep. 03. ViewModelクラス内でLiveDataを設定する 各LiveData対象について、書き換え可能なMutableLiveDataと読み込み専用のLiveDataの2つの変数を作る。 private val _FOO: MutableLiveData by lazy { MutableLiveData() } val FOO: LiveData get() = …

android開発 ViewModel内のコルーチン内の結果でActivityの動作を決めるには。Boolean型suspend関数の結果をActivityに渡す方法

2021 Sep. 05. 2021 Sep. 03. 参考ページ android ViewModelScopeコルーチンでメインスレッドを停止する方法は? - スタック・オーバーフロー コルーチンのlaunchブロック内のデータをlauchブロック外に渡すことはできない。 コルーチン内の結果で返り値を決…

android開発 ViewModelScopeコルーチンの利用

2021 Aug. 28. build.gradle(module:app)への設定 dependencies { implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0-alpha03" } viewModelScope のデフォルトCoroutineDispatcherはDispatchers.Main viewModelScope のデフォルトの Corout…

android開発 ViewModelを引数付きで生成・初期化する

2021 Aug. 29. 2021 Aug. 28. 概要 ViewModelを継承した引数付きクラスを定義する ViewModelProvider.Factoryを継承した、ViewModelの引数付きインスタンスを生成するためのクラスを定義する MainActivity内でViewModelProvider.Factoryの前記サブクラスのイ…

apply plugin: 'kotlin-kapt' build.gradle(module:app)内の記述場所

2021 Aug. 23. 次の記述で動いた plugins { id 'com.android.application' id 'kotlin-android' } apply plugin: 'kotlin-kapt' 次の記述ではFailedとなった apply plugin: 'kotlin-kapt' plugins { id 'com.android.application' id 'kotlin-android' }

android開発 jcifs-ngで接続したSMBサーバーファイルをandroid端末にコピーする

2021 Aug. 15. /* * リモートのSMBファイルをandroid端末にコピーする * コピー先は、android端末の外部ストレージのアプリキャッシュ領域 * smbFile コピー元リモートのSMBファイル * 返り値 コピー先ファイル */ private fun cpSmbFile2android(smbFile: S…

android開発 MediaPlayer利用時の後始末

2021 Aug. 15. { private val myPlayer: MediaPlayer = MediaPlayer() override fun onDestroy() { // 終了時のMediaPlayerの破棄 if (myPlayer != null) { myPlayer.reset() myPlayer.release() } override fun onCreate(savedInstanceState: Bundle?) { my…

android開発 SMBサーバーに接続し、ディレクトリ内のファイルを再帰的に取得する

2021 Sep. 06. 2021 Aug. 14. androidでjcifs-ng・コルーチンを使ってSMBサーバーに接続し、ディレクトリ内のファイルを再帰的に取得する実装例 app/libsに配置するライブラリ bcprov-jdk15to18-1.69.jar Maven Repository: org.bouncycastle » bcprov-jdk15…

android開発 画面上のキーボード(ソフトキーボード)を非表示にする

2021 Aug. 13. val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(it.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS)

android開発 SMBサーバーの音声ファイルをダウンロードしてMediaPlayerで再生する

2021 Sep. 06. 2021 Aug. 12. インストールしたandroid端末 android バージョン 10 コンパイル環境 compileSdkVersion 30 minSdkVersion 24 targetSdkVersion 30 概要 * SMBサーバーへの接続はメインスレッドでは禁止されており、非同期スレッドで行う必要が…

Android開発 ホーム画面を表示する

2021 Jul. 31. アプリのActivityを消してホーム画面を表示するには、ホーム画面へのインテントを発行する。 出典 Android - androidにてActivityをバックグラウンドにまわすコードは?|teratail var intent = Intent(Intent.ACTION_MAIN) intent.addCategor…

android開発 coroutineによる非同期スレッド実行

2021 Jul. 24. 参考ページ 雰囲気で利用しないためのAndroidにおけるKotlin-Coroutineメモ - Qiita 非同期処理のCoroutine(コルーチン)を始めてみよう!【Android・Kotlin】 ライブラリ導入 build.gradle(Module/App)に下記を記述するだけ jarファイルの配置…

android開発 ソフトキーボードを消す

2021 Jul. 25. ボタンがタップされたらソフトキーボードを画面から消す binding.button1.setOnClickListener { val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(it.getWindowToken(), InputMe…

android開発 Failed to load class "org.slf4j.impl.StaticLoggerBinder"

2021 Jul. 24. エラーメッセージ Failed to load class "org.slf4j.impl.StaticLoggerBinder" 対処 build.gradle(Module)にライブラリを記述 dependencies { implementation group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.32' }

android開発 Didn't find class "org.bouncycastle.asn1.ASN1ObjectIdentifier"

2021 Jul. 24. エラーメッセージ Failed resolution of: Lorg/bouncycastle/asn1/ASN1ObjectIdentifier Didn't find class "org.bouncycastle.asn1.ASN1ObjectIdentifier" 対処 プロジェクトのapp/libsにbcprov-jdk15to18-1.69.jarを配置する build.gradle(M…

android開発 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/slf4j/LoggerFactory

2021 Jul. 24. エラー現象 jcifsライブラリを利用してandroid端末をsmbクライントにするプログラムを作成したところ、 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/slf4j/LoggerFactory というエラーが出た。 対処 build.gradle(Module)に …