feat(ft8): 4.5.5 integrate FT8CN 0.93 (full port, original UI)

Full FT8 mode integration (user chose scope C: complete port, keep
original visual style):

- feature/ft8 module: 213 Java classes from FT8CN 0.93 source
  (com.bg7yoz.ft8cn namespace preserved so code needs zero changes),
  DataBinding enabled, BuildConfig fields (APPLICATION_ID/VERSION_NAME/
  apkBuildTime) restored for AGP9
- libft8cn.so from the user's FT8CN_0.93 APK (armeabi-v7a, 1.53MB;
  differs from repo copy, APK version used)
- 237 res files + 58 assets + 4 local libs (MPAndroidChart spectrum,
  commons-net, nanohttpd, osmdroid map) copied verbatim
- Proguard keep rules for JNI classes (RegisterNatives)
- Entry: More menu "FT8" (default sub menu, after AMSAT) launches
  MainActivity via Intent (external activity, LAUNCHER filter removed
  to avoid double launcher)
- Manifest merged via module (RECORD_AUDIO/BT/location perms)
- Version 4.5.5/455 + What's new 5 languages (REPLACED per rule)
Verified: :feature:ft8:compileDebugJavaWithJavac + :app:compileDebugKotlin
BUILD SUCCESSFUL; check_strings 9 files OK.
This commit is contained in:
mckero committed 2026-08-05 04:49:35 +00:00
1 parent c9d87be289
commit 8a2b0a9aa3
526 files changed
+177814 -45

No files matched your search

+89
View File
@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 因需要录音和文件存储功能,所以需要申请录音和存储权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 存储数据权限 -->
<!-- <uses-permission -->
<!-- android:name="android.permission.WRITE_EXTERNAL_STORAGE" -->
<!-- tools:ignore="ScopedStorage" /> -->
<!-- 允许程序访问CellID或WiFi热点来获取粗略的位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:usesCleartextTraffic="true"
android:icon="@drawable/ft8cn_icon"
android:label="@string/app_name"
android:roundIcon="@drawable/ft8cn_icon"
android:supportsRtl="true"
android:theme="@style/Theme.Ft8CN">
<activity
android:name=".grid_tracker.GridTrackerMainActivity"
android:screenOrientation="sensorLandscape"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".FAQActivity"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<!-- 关联启动文件 -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:scheme="content" />
<data android:pathPattern=".*\\.txt" />
<data android:pathPattern=".*\\..*\\.txt" />
<data android:pathPattern=".*\\..*\\..*\\.txt" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.txt" />
<data android:pathPattern=".*\\.adi" />
<data android:pathPattern=".*\\..*\\.adi" />
<data android:pathPattern=".*\\..*\\..*\\.adi" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.adi" />
<data android:mimeType="text/plain" />
<data android:mimeType="application/octet-stream" />
<data android:mimeType="*/*" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
<service android:name=".bluetooth.BluetoothSerialService" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.bg7yoz.ft8cn.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
</application>
</manifest>