rokkonet

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

android開発

android開発 インターネット接続がwifiか、モバイル通信かを判定する

2021 Dec. 28. 引用元 【Android/Kotlin】インターネット接続の確認とNetworkInfo非推奨の解消 - Qiita ACCESS_NETWORK_STATE権限を許可する uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" AndroidManifest.xml

android開発 Snackbarのsnippet

2021 Dec. 11. 出典 [Android & Kotlin] Snackbar で通知とアクションを実装しカスタマイズする build.bradle(:app) implementation 'com.google.android.material:material:x.x.x'が必要 plugins { id 'com.android.application' id 'kotlin-android' } and…

android開発 ダイアログを開く

2021 Oct. 31. MainActivity.kt class MainActivity : AppCompatActivity() { // Bundleを利用してデータを渡す val str1 = "ab" val int1 = 12 val args = Bundle() args.putString("String1", str1) args.putInt("Integer1", int1) // DialogFragmentのイ…

android開発 Bundleを利用したデータの受け渡し

2021 Nov. 14. 2021 Oct. 31. 出典 onSaveInstanceStateについてちゃんと知る - Qiita Bundleの保存・読み込み onSaveInstanceStateはonPauseの直後に呼ばれる。 onSavedInstanceStateで保存した値は、onCreateもしくはonRestoreInstanceStateで復元が可能。…

android開発 アプリケーションの再起動

2021 Oct. 31. 出典 Restarting Android app programmatically - Stack Overflow val launchIntent = baseContext.packageManager .getLaunchIntentForPackage(baseContext.packageName) launchIntent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) finish() …

android開発 AlertDialogのボタンオブジェクトの取得

2021 Oct. 30. 出典 Android - android開発 DialogFragmentのonStart()内でのOKボタンのOnClickイベント捕捉|teratail 概要 DialogFragmentのonCreateDialog()内でのAlertDialog.Builderのcreate()時に、「ボタンオブジェクトを取得し、操作する」ハンドラ…

android開発 ダイアログ上の2つの EditText の両方に文字列がある時にOKボタンを有効にする

2021 Oct. 30. 出典 Android - android開発 DialogFragmentのonStart()内でのOKボタンのOnClickイベント捕捉|teratail 概要 TextWatcherでEditTextへの入力状況を監視し、条件を満たした時のみOKボタンを有効(isEnabled)にする。 TextWatcherのafterTextCha…

android開発 DialogFragmentのインスタンスはshowメソッドを実行するルーチン内のローカル変数とする

2021 Oct. 30. DialogFragmentのインスタンスはshowメソッドを実行するルーチン内のローカル変数とする。 表示が終わると自動で削除されることがあるので、グローバルに保持すると、メモリリークとなる恐れがある。 ボタン(btnOpenDialog)をタップしたらダイ…

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 Dec. 05. 2021 Nov. 14. 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…