feat(cw): port Morse Expert 1.15 CW decoder engine (feature:cw compiles)
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.
This commit is contained in:
1 parent
ff408747cd
commit
5dc7ce6a22
59 files changed
+11695
No files matched your search
@@ -0,0 +1,42 @@
|
||||
package k3;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public abstract class c {
|
||||
|
||||
/* renamed from: a, reason: collision with root package name */
|
||||
public static final ExecutorService f12093a;
|
||||
|
||||
/* renamed from: b, reason: collision with root package name */
|
||||
public static ExecutorService f12094b;
|
||||
public static final int c;
|
||||
|
||||
/* renamed from: d, reason: collision with root package name */
|
||||
public static final long f12095d;
|
||||
|
||||
/* JADX WARN: Type inference failed for: r1v0, types: [java.lang.Object, k3.a] */
|
||||
static {
|
||||
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool(new b(new a()));
|
||||
f12093a = newCachedThreadPool;
|
||||
f12094b = newCachedThreadPool;
|
||||
c = Runtime.getRuntime().availableProcessors();
|
||||
f12095d = 100000L;
|
||||
}
|
||||
|
||||
public static Future a(Runnable runnable) {
|
||||
if (f12094b.isShutdown() || f12094b.isTerminated()) {
|
||||
f12094b = f12093a;
|
||||
}
|
||||
return f12094b.submit(runnable);
|
||||
}
|
||||
|
||||
public static void b(Future[] futureArr) throws InterruptedException, java.util.concurrent.ExecutionException {
|
||||
// smali: 无 catch 直接向上抛 -> Java 声明 throws(忠实表达)
|
||||
for (Future future : futureArr) {
|
||||
future.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user