前のアクティビティに戻る

この記事を作った動機 アクティビティの遷移方法をたんに記録するだけ。今回は二つの実装について書く。一つは単に、前のアクティビティに戻るだけで、もう一つは何か処理をしてから戻る方法について書く。 ただ戻るだけの時 具体的な処理をしない場合については以下のように実装できる。AndroidManifest.xml に親アクティビティ(android:parentActivityName)を設定する。コードは不要な模様。 ... <activity android:name=".loginActivity" android:exported="false" android:label="@string/login_activity" android:parentActivityName=".shareFolderListActivity1"/> ... 何か処理をしてから戻りたいとき 今回の場合でいえば、登録ボタンを押したら、フォームに打たれた情報をもとに何かしら処理を施してから元のアクティビティに戻りたい時は、以下のように finish() を呼び出す。 ... // 呼び出されたアクティビティの onCreate 関数内にて val registerButton = findViewById<Button>(R.id.Register) registerButton.setOnClickListener{ // 何かしらの処理 finish() } ... 参考にしたサイトとか How to Go Back to Previous Activity in Android? - GeeksforGeeks https://www.geeksforgeeks.org/how-to-go-back-to-previous-activity-in-android/ (2025年6月24日) Go Back to Previous Activity in Android https://www.tutorialspoint.com/how-to-go-back-to-previous-activity-in-android (2025年6月24日)

June 24, 2025

アクティビティを呼び出す

この記事を作った動機 ちょっと自分のために、アクティビティの呼び出し方をまとめるだけ。今回はボタンが押されたら、特定のアクティビティを呼び出すという動作について、例を載せておく。 アクティビティの呼び出し方(onCreate 関数内) val loginUIcall = findViewById<FloatingActionButton>(R.id.loginUIcall) loginUIcall.setOnClickListener { val activity = Intent(this,loginActivity::class.java) startActivity(activity) } 参考にしたサイトとか インテントとインテント フィルタ | App architecture | Android Developers https://developer.android.com/guide/components/intents-filters?hl=ja (2025年6月22日)

June 22, 2025

Android アプリでネットワーク接続に対応するの続き 1

この記事を作った動機 Android アプリでネットワーク接続に対応する の続きの記事です。前の記事でやっていたことに関して、進展があったので、とりあえず忘れないうちに記録しようというわけです。 まあ、理解より先に動くことを試していたので、間違ったこととかも書いていること大いにあり得ます。これはあくまで自分の理解を深めるために記事として書いてしまおうという感じです。ご注意ください。(それは他の記事でも言えることですが。。。) コード 専用クラス(ViewModel)にて ... class smbOperation1 : ViewModel(){ private val userLiveData = MutableLiveData<String>() val user: LiveData<String> get() = userLiveData init { // trigger user load. } fun doAction() { viewModelScope.launch { val test = withContext (Dispatchers.IO) { testSMB() } userLiveData.value = test } } ... } アクティビティ内にて ... class shareFolderListActivity1 : AppCompatActivity() { // https://github.com/hierynomus/smbj private val smb by viewModels<smbOperation1>() override fun onCreate(savedInstanceState: Bundle?) { ... val debugTestStart = findViewById<Button>(R.id.debugTestStart) val debugText = findViewById<TextView>(R.id.resultAndDebugConsole) smb.user.observe (this){ message: String -> debugLog(message) debugText.setText(message) } debugTestStart.setOnClickListener{ smb.doAction() } } ... } わかったこと(現時点での理解) LiveData というのを使う方仕組みの方が新しいっぽい AsyncTask クラスとは異なる、kotlin 側で用意されたスレッド管理の仕組みを使う方が簡単そう LiveData UI と ViewModel クラス間におけるデータの橋渡し的なやり取りを行う。UIスレッド側で監視される変数的なものである。ViewModel クラスのインスタンスのうち、 LiveData に変更があり次第オブザーバー内に登録された処理が実行され、UIが更新される。 ...

June 21, 2025

blender で面の向きの色が表示されない

この記事を作った動機 なんか blender で UV マッピングしようとしたらうまくいかず、調べている過程で、もしかしてメッシュの面の向きがおかしいのではないかと思った。 それで、面の向きを調べるために、以下の画像に示すように、Face Orientation を有効にしてみた。しかし、何も見えない。 通常正常に動作していれば、面が赤か青色に面が染まり、面が表向きなのかひっくり返っているのか表示されるはずが、何も見えないという事態に直面した。 blender はこういうなぜそうなっているのかさえ一人では分からないような、意地悪な動きをするので心が折れそうではあるが、とにかく調べてみたらどうしたらいいか分かったので、それを記録するだけ。 分かった原因 blender 4.4.3 のデフォルト設定では、面の向きの赤、青の色表示がなぜか透明に設定されており、一切見えない状態になっている。ミスなのか、何か意図があるか、思想的な仕様なのかは不明だが、とにかく理不尽ではある。 問題の状態と期待している状態の比較 問題の状態 期待している状態 対処方法 設定画面を開く theme(テーマ)設定を開き 3D viewport の項目を展開 Face Orientation の色をクリックして設定を変更 問題の設定 クリックしたときの色選択 問題を解消した状態の設定 面の裏表が視覚的に見えるようになる 参考にしたサイトとか 3d view - Face orientation viewport overlay doesn’t show up - Blender Stack Exchange https://blender.stackexchange.com/questions/315926/face-orientation-viewport-overlay-doesnt-show-up (2025年6月18日)

June 18, 2025

Android アプリでネットワーク接続に対応する

この記事を作った動機 単に、ネットワークを使うだけで、パーミッション周りの設定と、UIスレッドと分離されたスレッドによる、非同期処理が必要なので、忘れる前に記録しておこうという話。 権限の設定(AndroidManifest.xml) android.permission.INTERNET の権限を追加 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.INTERNET" /> ... </manifest> 権限を許可したいときに確認すべきところ Manifest.permission | API reference | Android Developers https://developer.android.com/reference/android/Manifest.permission (2025年6月14日) 非同期処理(とりあえず動くというだけ kotlin) 本当のところは、AsyncTask は廃止なので java.util.concurrent を使うべきらしい。 参照すべきドキュメント AsyncTask | API reference | Android Developers https://developer.android.com/reference/android/os/AsyncTask (2025年6月14日) 専用にクラスを定義する package com.example.smbfileviewer import android.os.AsyncTask import android.util.Log import com.hierynomus.smbj.SMBClient import com.hierynomus.smbj.auth.AuthenticationContext import com.hierynomus.smbj.session.Session import com.hierynomus.smbj.share.DiskShare import com.hierynomus.smbj.share.Share class smbOperation(val handler: (message:String) -> Unit) : AsyncTask<Void,Void,Unit>(){ override fun doInBackground(vararg params: Void?): Unit { handler(testSMB()) } fun testSMB(): String{ val client = SMBClient() // 何かネットワークを使う処理をする // 今回は SMB ファイルサーバのライブラリを試すという前提で。 return "do something" } } 作ったクラスをボタンを押されたときとかに呼び出す // 何かのアクティビティクラスの onCreate 内などのUIの処理にて class shareFolderListActivity1 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { val debugTestStart = findViewById<Button>(R.id.debugTestStart) debugTestStart.setOnClickListener{ val instance = smbOperation({ message -> debugLog(message) }) instance.execute() } } } 次の記事 Android アプリでネットワーク接続に対応するの続き 1 参考にしたサイトとか java - How can I fix ‘android.os.NetworkOnMainThreadException’? - Stack Overflow https://stackoverflow.com/questions/6343166/how-can-i-fix-android-os-networkonmainthreadexception (2025年6月14日) java - Permission for sockets - android manifest - Stack Overflow https://stackoverflow.com/questions/56582336/permission-for-sockets-android-manifest (2025年6月14日) Manifest.permission | API reference | Android Developers https://developer.android.com/reference/android/Manifest.permission (2025年6月14日) AsyncTask | API reference | Android Developers https://developer.android.com/reference/android/os/AsyncTask (2025年6月14日)

June 14, 2025

IPC の使い方

このページは、まだ未完成です。。。 nicotalk&キャラ素材配布所 http://www.nicotalk.com/charasozai_kt.html (2024年5月16日) この記事を作った動機 electron で何かアプリを作ろうかなと思ったとき、心理的障壁として、IPC によるやり取りがあったので、それについて、間違ってもいいのでとにかく自分なりにノートを作ろうと思っただけ。 IPC なにそれおいしいの? IPC(Inter Process Communication) とは、複数のプログラム間で、データをやり取りしたりするための仕組みの一つ。いろんな仕組みがある。ネットワークを使うとか特定のメモリ領域を共有するとか。。。 electron と何が関係あるの? 今の私の理解だと、electron は複数のプロセスからなっていて、単に一つのプログラムに対して、一つのプロセスが起動しているという感じではない。少なくとも、OS側の処理を担う、main と呼ばれているプロセスと、chromiumベースの描画用のプロセス(renderer.jsもここ)が存在している。 セキュリティの関係上、一つのプロセスとして全てが処理されておらず、分離されている。そのため、例えばファイル操作を実装したいとなったときなどには、main プロセスと、renderer.js などが動いている描画用プロセス間でデータをやり取りする必要がある。 そこで、データをやり取りする手段として、IPCがある。 ...

May 11, 2025

環境テクスチャを設定する

この記事を作った動機 私がやり方わかんなくなった時の記録として。 やり方 設定前の全体像 環境テクスチャを選択 設定後のパネルの様子 設定後の全体像 参考にしたサイトとか Environment Texture Node - Blender 4.4 Manual https://docs.blender.org/manual/en/latest/render/shader_nodes/textures/environment.html (2025年5月5日) Symmetrical Garden 02 HDRI • Poly Haven https://polyhaven.com/a/symmetrical_garden_02 (2025年5月5日)

May 5, 2025

Android アプリで最初に起動するアクテビティを指定する

この記事を作った動機 自分用の android studio におけるアプリ開発時に引っかかる部分の記録です。単にアクテビティなしのテンプレートからアプリを作ろうとしたとき、アプリ起動時のアクテビティを指定する必要があり、そのやり方を毎回忘れるというのが、この記事を書くきっかけです。 重要な部分(引用部分) <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> AndroidManifest.xml の全体像の例 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.FileShareViewsmb" tools:targetApi="31"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 参考にしたサイトとか android - Change application’s starting activity - Stack Overflow https://stackoverflow.com/questions/3631982/change-applications-starting-activity (2025年5月1日)

May 1, 2025

Morph tools でモデルをうまく動かせない

この記事を作った動機 blender と MMD Tools 使っていて Morph Tools というのを見つけて、色々モデルをうごすことができることは分かっていた。しかし、値を操作して動かせない Material などの項目がありなぜ動かせないのかしばらく実験していたら、方法が分かったので記録するだけ。 方法 問題の状態 赤線のところに、値を変更するためのスライダーがなく、Morph をMMDモデルに反映することができない状態が以下である。 Model setup の Morph を押す 解決した状態 参考にしたサイトとか MMD Tools/Manual | MMD & Blender Wiki | Fandom https://mmd-blender.fandom.com/wiki/MMD_Tools/Manual#Mesh/Armature/Physics/Display/Morphs (2025年3月29日) GitHub - MMD-Blender/blender_mmd_tools: MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. https://github.com/MMD-Blender/blender_mmd_tools (2025年3月29日)

March 29, 2025