mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Full port of the CW/Morse decoder from Morse Expert 1.15 (com.ve3nea.morse_expert), preserving obfuscated class names and logic. Ads (gms.ads), billing (BillingClient), and library code were removed per user; SettingsActivity deferred to Compose integration. Ported modules: - pas.*: decoder engine interface + JNI (libnativedecoderjni.so, armeabi-v7a) - k3.*: FFT library (pseudo-enum q rewritten from smali; sun.misc stubs for Unsafe/Cleaner since Android lacks them; FFT path uses float[] branch) - i3.*, g3.*, j3.*, s.*, d1.AbstractC1518b: DSP/sin-cos tables (long[] tables f/f11589g restored from smali) - H2.a/b: audio capture + decode control core (jadx catch-block illusions cleaned per smali; recording try/catch restored around write block) - J2.a/b: waterfall OpenGL renderer + palette (r10 = anchor color per smali) - E2.g: waterfall touch frequency picker (height = ScaleView per smali) - B0.b/B.RunnableC0001b: status-bar + decoded-text UI runnables (real constructors recovered from smali) - MainActivity → controller class (Activity injected; immersive status bar inlined); C1646n trimmed to view holder; D.n keeps waterfall texture case - F2.a: text selection menu (Save/Share) Verified: :feature:cw:compileDebugJavaWithJavac BUILD SUCCESSFUL.
43 lines
1.4 KiB
Java
43 lines
1.4 KiB
Java
package I0;
|
|
|
|
/**
|
|
* 照搬自 Morse Expert 1.15 I0.d, 类名保持混淆原名。
|
|
* R8 合并类手术: 只保留 (i3.d, int, int, float[]) FFT 任务构造;
|
|
* run() 按 smali 原样还原: R8 已将任务体优化为死代码(aget 后 throw null,
|
|
* 永不执行), 保留原语义(行为与原 APK 完全一致)。
|
|
* SystemForegroundService(work 库)case 已裁剪。
|
|
*/
|
|
public final class d implements Runnable {
|
|
public final /* synthetic */ int f = 0;
|
|
|
|
/* renamed from: g, reason: collision with root package name */
|
|
public final /* synthetic */ int f653g;
|
|
|
|
/* renamed from: h, reason: collision with root package name */
|
|
public final /* synthetic */ int f654h;
|
|
|
|
/* renamed from: i, reason: collision with root package name */
|
|
public final /* synthetic */ Object f655i;
|
|
|
|
/* renamed from: j, reason: collision with root package name */
|
|
public final /* synthetic */ Object f656j;
|
|
|
|
public d(i3.d dVar, int i4, int i5, float[] fArr) {
|
|
this.f656j = dVar;
|
|
this.f653g = i4;
|
|
this.f654h = i5;
|
|
this.f655i = fArr;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
int i6 = this.f654h;
|
|
int i7 = this.f653g;
|
|
if (i7 >= i6) {
|
|
return;
|
|
}
|
|
float f = ((float[]) this.f655i)[i7 * 2];
|
|
// R8 原代码: aget 后 throw null(死代码, 永不执行) —— 照搬语义, 不执行任何计算
|
|
}
|
|
}
|