UNITYからRTL-SDRを使ってみる
はじめに
以前紹介したとおり、AndrouidStudioからはRTL-SDRを使用できたが、今回はUNITYから使用してみたいと思い、挑戦する。
ポイントはドライバーの呼び出しができるかどうかというところ
やってみる
AndroidStudioでは下記のようなコードで呼び出していた
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("marto.rtl_tcp_andro", "com.sdrtouch.rtlsdr.DeviceOpenActivity");
intent.setData(Uri.parse("iqsrc://-a 0.0.0.0 -p 1234 -n 1"));
startActivityForResult(intent, RTL2832U_RESULT_CODE);
UNITYではどうなるか、intentで検索して、下記が参考になった
この後("currentActivity")でフィールドが見つからないと
エラーになってしまったが、無視してビルドなどしていたら
なぜかエラーは出なくなった?・・・問題ないかはまだ不明
さらにエラーが続き、下記を参考に構築しなおし
下記の通りドライバーが読み込めた
結果は下記の通り
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject Activity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent");
//intent.setClassName("marto.rtl_tcp_andro", "com.sdrtouch.rtlsdr.DeviceOpenActivity");
intent.Call<AndroidJavaObject>("setClassName", "marto.rtl_tcp_andro", "com.sdrtouch.rtlsdr.DeviceOpenActivity");
//intent.setData(Uri.parse("iqsrc://-a 0.0.0.0 -p 1234 -n 1"));
string url = "iqsrc://-a 0.0.0.0 -p 1234 -n 1";
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject uriData = uriClass.CallStatic<AndroidJavaObject>("parse", url);
intent.Call<AndroidJavaObject>("setData", uriData);
Activity.Call("startActivity", intent);
これでUNITYからRTL-SDRが使えそう