Revert "Merge pull request #33 from N0BOY/dev"

This reverts commit 295ff4d1f2, reversing
changes made to 356f5f90f0.
pull/35/head^2
wangg 2023-05-01 22:48:51 -04:00
rodzic 295ff4d1f2
commit d94e5ddcd9
504 zmienionych plików z 1219 dodań i 2266 usunięć

Plik binarny nie jest wyświetlany.

42
LICENSE
Wyświetl plik

@ -1,21 +1,21 @@
MIT License MIT License
Copyright (c) 2023 BG7YOZ Copyright (c) 2023 BG7YOZ
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software. copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.

286
README.md
Wyświetl plik

@ -1,278 +1,8 @@
# FT8CN
``` Developed by BG7YOZ and hosted by N0BOY
免责声明:
FT8CN旨在研究的目的学习如何对FT8信号进行解码、发射等操作不对使用者操作本APP所产生的后果负责。 Run FT8 natively on Android
在中华人民共和国境内使用FT8CN请遵守《中华人民共和国无线电管理条例》等相关规定。
考虑到手机的性能和续航的限制,对信号的处理采用轻量化的运算,未做深度解码等处理。 Check [Releases](https://github.com/N0BOY/FT8CN/releases) to download the latest apk file.
如有好的建议或问题可以提交到到”有问题要吐槽“。
(More info coming up soon, check back in a while)
Disclaimer
FT8CN aims to learn how to decode, transmit FT8 signal for research purposes, which is not responsible for the consequences caused by the user's operation.
Please comply with local laws and regulations when using FT8CN.
Considering the performance and endurance limitations of the mobile phone, the processing of the signal adopts lightweight operations instead of deep decoding and other processing.
Please click "FAQ" if you have good suggestions or questions .
BG7YOZ
2022-07-01
2023-05-02(0.88)
1.增加音频输出设置(位深、采样率)。
2.增加日志可以按条件查询并导出。
3.修改日志查询以时间为降序显示。
4.修正SWL QSO记录重复的问题。
5.针对各主流浏览器优化后台UI。
2023-03-24(0.87)
1.增加查询的通联日志结果在地图中定位显示功能。
2.增加FlexRadio仪表显示和参数设置(目前暂不支持发射)。
3.增加时间自动同步功能服务器是Microsoft NTP
4.增加SWL模式对解码消息以及QSO有保存和导出的功能(SWL的QSO认定标准至少要有双方的报告以及结束语73、RR73、RRR)。
5.丰富后台数据的查询功能。
6.修正后台查询“呼号与网格映射表”中距离计算的错误。
7.针对协谷G90S未来的新固件调整电台型号选项。
8.解决解码消息较多时界面会卡顿的问题。
9.优化日志查询性能。
2023-02-06(0.86)
1.提高日志导入的健壮性,反馈格式错误的日志信息。
2.修正在推算SNR时偶尔会出现数组下标越界造成闪退的问题。
3.修正导入日志后数量计算不准确的问题。
2023-01-28(0.85)
1.增加排除的呼号前缀功能(排除的呼号前缀的动作具有最高优先级,为自动程序排除掉不需要的呼叫)。
2.增加GridTracker中地图的日落日出灰线。
3.增加清空关注呼号列表功能。
4.增加清空缓存的通联QSO消息功能。
5.增加呼叫修饰符功能。例如 CQ POTA xxxxxx xxxx、或CQ DX xxxxxx xxxx。修饰符范围是000-999,A-Z,AA-ZZ,AAA-ZZZ,AAAA-ZZZZ。
2023-01-08(0.84)
1.优化地图的色彩模式。
2.修补因线程不同步,导致提示消息操作闪退的问题。
3.解决部分日志字段表述不标准,造成导入日志失败的问题。
4.优化呼号的哈希表处理。
2023-01-07(0.83)
1.增加自由文本发射功能。
2.修改因Execute-only memory violation错误造成的闪退问题。
3.修改某型号电台设置错误的问题。
4.修改日志导入导出操作,增加导出日志中确认字段,通过导入日志自动更新确认项。
5.排除多个内存泄漏点。
6.解决部分日志QSO中对方网格不准确的问题。
7.解决长期在网格追踪的界面下,会息屏的问题。
2022-12-31(0.8.1)
再见2022愿明天更好
注意!此版本数据库结构有更新,升级前,请导出日志备份,升级后,将无法回退到旧的版本。
注意此版本开始支持ICOM的网络控制功能建议使用电台的WIFI连接手机的AP优先选项或手机连接电台的AP。
注意!不建议使用路由器来连接,如果路由器的性能不够,会造成发射音频是丢包!!!
1.增加ICom系列电台的网络Wifi支持。
2.增加ICom系列电台驻波比、ALC值过高警告功能。
3.增加建伍TS系列电台驻波比、ALC值过高警告功能。
4.增加YAESU各系列电台驻波比、ALC值过高警告功能。
5.增加Elecraft系列电台驻波比、ALC值过高警告功能。
6.增加ICom部分电台在不同的连接方式下自动切换Connectors的Data mode。
7.增加调整信号强度功能用于调节ALC。
8.增加支持3位呼号的呼叫能力。
9.增加支持的电台。
10.增加获取最新版本的入口。https://github.com/N0BOY/FT8CN/releases
11.增加呼号与网格的映射表(升级数据库)。
12.增加地图可视化展示功能类似于GridTracker
13.增加在地图中呼叫的能力。
14.解决部分设备在处理音频数据时,因内存抖动造成程序崩溃的问题。
15.解决部分消息的QTH不准确的问题。
16.修正了在一些情况下,发射条目上有分区图标显示的问题。
17.修正了发射含有3位呼号消息时闪退的问题。
18.优化频谱图,解决低辨率下文字信息显示不正常的问题,
19.更新部分地区的坐标
20.优化消息列表处理策略,减少内存抖动。
21.修正当达到无回应阈值,切换目标呼号后,提示消息没有随之变化的问题。
22.解决部分非标准呼号地理位置无法解析的问题。
23.修正因高版本安卓及高版本ARM64的内存访问机制造成异常崩溃的问题。
2022-11-08(0.79)
1.协谷X6100的操作模式改为U-DIG模式。
2.把音频数据格式从16位整型改为32位浮点模式。
3.修正FFT过程存在内存泄漏的问题。
4.增加Flex-6000系列网络连接模式支持目前仅支持接收不支持发射。
5.增加禁止锁屏休眠。
6.控制历史消息数量暂时设置在3000条以内
7.增加全屏模式。
8.增加快速切换频率。
9.修正部分电台iCOM、协谷因数据传输质量不好造成闪退的问题。
10.修正对小于6位的非标准呼号识别错误的问题。
存在的问题:
1.连接Flex电台只能在同一网段内暂时没有增加输入IP直接连接的方式。
2022-11-18(0.79 Patch 4)
1.解决部分设备解码按钮失效的问题。
2.增加连接Flex电台可以用输入IP的方式直接连接解决跨网段连接的问题。
2022-10-06(0.78)
1.继续优化自动程序逻辑,修正自动呼叫打开时,目标不专一的问题。
2.对日志删除动作,弹出删除确认对话框。
2022-10-01(0.77)
1.修改统计按波段统计大小写被区分的问题。
2.对曾经通联过的呼号,不在当前波段的,以蓝色字体颜色显示。
3.新增电台型号。
2022-09-24(0.76)
1.调整历史通联呼号规则,以波段(波长)区分。
2.修改发射监管会自减的错误。
3.继续解决日志信号报告不准确的问题。
4.继续优化自动程序策略。
2022-09-17(0.75)
1.继续修改通联日志的信号报告问题(信号报告反了、数值不准确)。
2.增加针对安卓12申请蓝牙连接权限。
3.针对某型号电台USB线连接后指令反应不及时的问题启用延时发送指令。
4.YAESU FT450D的操作模式改为USER-U模式。
5.继续优化自动程序,调整自动程序的运行机制,自动记录日志提前。
6.退出应用时如果处于发射状态自动关闭PTT。
7.解决带哈希呼号的消息因过采样造成重复的问题。
8.增加日文、希腊、西班牙UI。
9.修正关注的消息不在同一频段内自动呼叫的错误。
2022-09-09(0.74)
1.增加英文版帮助。
2.呼号查询结果以时间降序显示。
3.ICOM电台操作模式改为USB-D模式。
4.增加对呼号的QRZ查询功能。
5.修正了日志中信号报告值不严谨的问题。
2022-09-03(0.73)
1.修正某些日志起始时间不准确的问题。
2.优化对为通联过的分区标注。
3.基于消息的历史,把没有网格报告的消息也标注出距离。
2022-08-28(0.72)
1.解决自动程序中自己呼叫自己的问题。
2.对通联成功的呼号以通联成功的频率做出区分。
3.丰富了一下后台”跟踪运行信息“内容。
4.重新增加通联记录中呼号查询列表,并调整了显示的内容。
5.解决因数组下标溢出导致闪退的问题。
6.减少权限申请,取消存储权限,保留麦克风、位置权限(可以拒绝)。
7.解决没有麦克风权限造成闪退的问题。
2022-08-27(0.71)
1.优化发射周期PTT打开的时长确保接收消息周期的完整。
2.解决Q900蓝牙发送、接收音频适配的问题真正实现蓝牙控制、音频收发能力。
3.美化在消息的分区标注。
4.新增电台支持。
5.解决有时新增消息后,消息列表不自动上移的问题。
2022-08-22(0.7)
1.加入DXCC分区数据统计。
2.加入ITU分区数据统计。
3.加入CQ分区数据统计。
4.对各频段的距离做统计。
5.对未通联过的DXCC、ITU、CQ分区呼号做标注。
6.解决前缀1位字母2位数字呼号计算不准确的问题。
2022-08-13(0.63)
1.修正了对非标准呼号的认定,解决对部分非标准呼号计算错误的问题。
2.继续优化了一些布局(尤其是横屏)。
3.增加了繁体位置信息。
2022-08-11(0.62)
1.把FT-817/818系列的工作模式由USB改为DIGI模式。
2.把发射消息回显到呼叫栏中。
3.解决部分设备在手动中断发射时,闪退的问题。
4.解决我的呼号为空时,发射闪退的问题。
5.解决某型号电台控制问题。
6.增加英文语言包。
7.优化了布局。
2022-08-06(0.6)
1.重构与电台有关的底层架构,适应多型号电台。
2.完成国赫YAESUKENWOOD部分型号电台的指令集。
3.完成通过蓝牙串口(SPP模式)进行控制功能。
4.实现对蓝牙音频的采集。
5.修改了规则,不能自己呼叫自己。
6.增加了对非标准呼号、复合呼号的支持。
7.增加了发射时,如果采集不到声音,会把发射的消息提交到呼叫列表。
2022-07-17(0.51)
1.在BA2BI的帮助下解决频段波长不正确的问题。
2.修复设置页面载波频段列表内容重复的问题。
3.解决DTR不能发射的问题。
4.增加电台频率变化后,保存电台的频率值,如果通联成功,以电台频率为准。
5.增加对WSPR-2频率的保护功能当电台选择的频率在WSPR-2的范围内禁止发射。
6.解决0.5版日志中对方呼号没有网格信息的问题。
7.解决0.5版对自动关注的CQ目标不自动呼叫的问题。
8.解决了后台无法删除关注的呼号问题。
9.添加发射、监听的进度条。
10.增加日志导入导出的同步功能并自动LoTW确认。
11.增加手工确认。
12.增加电台PTT响应延迟设定。
13.增加在消息列表中向左滑动开始快速呼叫本周期前2.5秒内起作用)。
14.对日志导出中,增加了”今天的日志“。
15.解决无法删除带斜线的呼号问题。
16.通联记录查询添加简单的过滤功能。
2022-07-10(0.5)
此版本属重大更新。完善了自动程序增加日志查询导出功能。到此基本完成一个可以具备通联能力的APP。
此外,还有如下变化:
1.修复瀑布图文字重叠问题。
2.增加电台支持,以及波特率。
3.修复当没有定位权限,启动崩溃问题。
4.增加DTR支持。
5.修复一些随时发现的小错误。
6.增加自动发射的监管。
7.增加自动关注CQ开关。
8.增加自动呼叫关注的呼号开关。
9.增加对消息偏移时间过长做标注。
存在的问题:
1.如果对方是从第2个消息开始呼号我保存的日志中就没有对方的网格其实在消息上下文中存在对方的网格信息。
2.如果自动关注CQ消息并打开自动回复关注开关当有CQ的消息时并不回复。
以上问题将在下一个版本中解决。
2022-07-02(0.44)
1.增加问题收集反馈的入口。
2.修正在设置页面会闪退的BUG。
3.把x5105加到设备列表中。
2022-07-01(0.43)
1.在BG7IKK的帮助下解决部分电台使用RTS控制PTT的问题。
2.BI1NIZ注册了一个项目问题收集反馈和FAQ的账号。
3.在频谱的标尺上加了发射频率的红色标记。
2022-06-30(0.42)
1.BH7ACO帮助解决了协谷X6100的驱动。未解决的问题协谷6100有时会莫名断开解决办法设置SSB模式的指令延迟1秒发送解决得不够理想
2022-06-29(0.41)
1.反馈705、7100、7300控制测试成功。
2.BH2RSJ帮助建立了一个APP测试群群成员在陆续反馈使用的情况提出了一些修改意见。
3.修改了一下启动方式,确保配置参数能按时读入。
4.修改了对电台修改频率会把filter变为FIL2的错误。
2022-06-27
1.增加了电台CAT控制功能目前支持部分ICOM系列电台。目前只对IC-705做测试成功因为手中没有ICOM的其他型号不清楚串口的驱动能否识别并使用。
2.查找到可以支持CI-V指令控制的ICOM电台列表以及各型号电台的默认地址。
2022-06-20
1.增加了帮助功能
2.增加了瀑布图的标记功能
3.对android 10版本以上的深色模式做了一些适配
4.更换了图标BG7YOY设计
致敬:
Steve Franke(K9AN)、Bill Somerville(G4WJS)、Joe Taylor(K1JT)提出FT8和FT4协议FT是Franke和Taylor的首字母并在论文《The FT4 and FT8 Communication Protocols》详细介绍了FT4和FT8的设计初衷和在WSJT-X中的具体实现细节成为完成本APP的根本指南。
Karlis Goba(YL3JG)在代码的具体实现上提供了参考。
鸣谢:
BG7YOY在FT8CN开发阶段为我在无线电基本理论上作出指导并为FT8CN设计了图标。
BG4IGX在我刚刚入门业余无线电时为我在具体实践上作出指导。抖音上您可以搜到很多他的教学视频。
BD7MXN帮助我对部分电台的连接控制做了一些测试并提出改进建议。
BH2RSJ帮助我建立了一个FT8CN测试群为测试和后续改进提出了很多宝贵意见。
BH7ACO帮助解决了某电台的驱动和相关的配置参数。
BG7IKK帮助解决了只支持通过RTS控制PTT发射的电台的测试。
BI1NIZ帮助注册账号用于收集问题反馈和FAQ的功能。
BD3OOX以及石家庄业余无线电俱乐部FT8CN的呼号地区归属数据提取至JTDX石家庄版使呼号定位可以精确到中国的省级。
VR2UPU(BD7MJO)在FT8的开发和使用经验上提供指导并在多语言方面给予帮助。
BA2BI在业余无线电的基础知识和通联的日志处理方面上给予帮助和指导。
BI3QXJ在对某品牌系列电台的指令集上给予专业性的指导。
BG6TQD在对某型号电台的指令集测试上给予帮助。
BG5CSS提供某型号电台用于测试。
BG7YXN提供某型号电台用于测试。
BG7YRB对呼号规则运算提供帮助。
BG8KAH提供设备用于测试。
BA7LVG、JE6WUD完成日文的翻译校对工作。
BG6RI帮助解决日志的信号报告问题。
SV1EEX完成希腊文、西班牙文UI的翻译工作。
VR2VRC帮助修正历史呼号读取规则。
BA7NQ提供设备用于测试。
BD7MYM对某型号的电台测试给予指导。
NØBOY帮助提供Github源以及翻译工作。
BG5JNT帮助修正非标准呼号的识别问题。
BH3NEK协助对某型号电台进行测试。
BG2ALB协助对某型号电台进行测试。
BG6DRU协助对某型号电台进行测试。
BG7NQF提供某型号电台的隐藏指令对一些设备做兼容性测试。
BH2VSQ协助对某型号电台进行测试。
BG7YBW协助对部分功能惊醒测试。
BH1RNN协助对部分功能进行测试。
BG7BSM协助对一些BUG进行调试。
BH4FTI发现并协助对一些BUG进行调试。
BG8BXMM哥为FT8CN的使用做推广抖音和B站上有很多他的教学视频。
BG7MFQ为FT8CN的使用做推广帮助测试。
```

0
ft8CN/.gitignore vendored 100644 → 100755
Wyświetl plik

0
ft8CN/.idea/.gitignore vendored 100644 → 100755
Wyświetl plik

0
ft8CN/.idea/.name 100644 → 100755
Wyświetl plik

4
ft8CN/.idea/compiler.xml 100644 → 100755
Wyświetl plik

@ -1,8 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="11"> <bytecodeTargetLevel target="11" />
<module name="Ft8CN.app" target="1.8" />
</bytecodeTargetLevel>
</component> </component>
</project> </project>

Wyświetl plik

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\jmsmf\.android\avd\Pixel_XL_API_30.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-05-01T08:38:28.258277700Z" />
</component>
</project>

0
ft8CN/.idea/gradle.xml 100644 → 100755
Wyświetl plik

Wyświetl plik

@ -6,8 +6,5 @@
<option name="m_reportAllNonLibraryCalls" value="false" /> <option name="m_reportAllNonLibraryCalls" value="false" />
<option name="callCheckString" value="java.io.File,.*,java.io.InputStream,read|skip|available|markSupported,java.io.Reader,read|skip|ready|markSupported,java.lang.AbstractStringBuilder,capacity|codePointAt|codePointBefore|codePointCount|indexOf|lastIndexOf|offsetByCodePoints|substring|subSequence,java.lang.Boolean,.*,java.lang.Byte,.*,java.lang.Character,.*,java.lang.Double,.*,java.lang.Float,.*,java.lang.Integer,.*,java.lang.Long,.*,java.lang.Math,.*,java.lang.Object,equals|hashCode|toString,java.lang.Short,.*,java.lang.StrictMath,.*,java.lang.String,.*,java.lang.Thread,interrupted,java.math.BigDecimal,.*,java.math.BigInteger,.*,java.net.InetAddress,.*,java.net.URI,.*,java.nio.channels.AsynchronousChannelGroup,.*,java.util.Arrays,.*,java.util.Collections,(?!addAll).*,java.util.List,of,java.util.Map,of|ofEntries|entry,java.util.Set,of,java.util.UUID,.*,java.util.concurrent.CountDownLatch,await|getCount,java.util.concurrent.ExecutorService,awaitTermination|isShutdown|isTerminated,java.util.concurrent.ForkJoinPool,awaitQuiescence,java.util.concurrent.Semaphore,tryAcquire|availablePermits|isFair|hasQueuedThreads|getQueueLength|getQueuedThreads,java.util.concurrent.locks.Condition,await|awaitNanos|awaitUntil,java.util.concurrent.locks.Lock,tryLock|newCondition,java.util.regex.Matcher,pattern|toMatchResult|start|end|group|groupCount|matches|find|lookingAt|quoteReplacement|replaceAll|replaceFirst|regionStart|regionEnd|hasTransparentBounds|hasAnchoringBounds|hitEnd|requireEnd,java.util.regex.Pattern,.*,java.util.stream.BaseStream,.*,java.util.stream.DoubleStream,.*,java.util.stream.IntStream,.*,java.util.stream.LongStream,.*,java.util.stream.Stream,.*" /> <option name="callCheckString" value="java.io.File,.*,java.io.InputStream,read|skip|available|markSupported,java.io.Reader,read|skip|ready|markSupported,java.lang.AbstractStringBuilder,capacity|codePointAt|codePointBefore|codePointCount|indexOf|lastIndexOf|offsetByCodePoints|substring|subSequence,java.lang.Boolean,.*,java.lang.Byte,.*,java.lang.Character,.*,java.lang.Double,.*,java.lang.Float,.*,java.lang.Integer,.*,java.lang.Long,.*,java.lang.Math,.*,java.lang.Object,equals|hashCode|toString,java.lang.Short,.*,java.lang.StrictMath,.*,java.lang.String,.*,java.lang.Thread,interrupted,java.math.BigDecimal,.*,java.math.BigInteger,.*,java.net.InetAddress,.*,java.net.URI,.*,java.nio.channels.AsynchronousChannelGroup,.*,java.util.Arrays,.*,java.util.Collections,(?!addAll).*,java.util.List,of,java.util.Map,of|ofEntries|entry,java.util.Set,of,java.util.UUID,.*,java.util.concurrent.CountDownLatch,await|getCount,java.util.concurrent.ExecutorService,awaitTermination|isShutdown|isTerminated,java.util.concurrent.ForkJoinPool,awaitQuiescence,java.util.concurrent.Semaphore,tryAcquire|availablePermits|isFair|hasQueuedThreads|getQueueLength|getQueuedThreads,java.util.concurrent.locks.Condition,await|awaitNanos|awaitUntil,java.util.concurrent.locks.Lock,tryLock|newCondition,java.util.regex.Matcher,pattern|toMatchResult|start|end|group|groupCount|matches|find|lookingAt|quoteReplacement|replaceAll|replaceFirst|regionStart|regionEnd|hasTransparentBounds|hasAnchoringBounds|hitEnd|requireEnd,java.util.regex.Pattern,.*,java.util.stream.BaseStream,.*,java.util.stream.DoubleStream,.*,java.util.stream.IntStream,.*,java.util.stream.LongStream,.*,java.util.stream.Stream,.*" />
</inspection_tool> </inspection_tool>
<inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ADDITIONAL_TAGS" value="date" />
</inspection_tool>
</profile> </profile>
</component> </component>

7
ft8CN/.idea/misc.xml 100644 → 100755
Wyświetl plik

@ -172,11 +172,4 @@
<component name="ProjectType"> <component name="ProjectType">
<option name="id" value="Android" /> <option name="id" value="Android" />
</component> </component>
<component name="VisualizationToolProject">
<option name="state">
<ProjectState>
<option name="scale" value="0.027632950990615225" />
</ProjectState>
</option>
</component>
</project> </project>

Wyświetl plik

0
ft8CN/app/.gitignore vendored 100644 → 100755
Wyświetl plik

4
ft8CN/app/build.gradle 100644 → 100755
Wyświetl plik

@ -5,7 +5,7 @@ plugins {
id 'com.android.application' id 'com.android.application'
} }
def currentTime = getCurrentTime() def currentTime = getCurrentTime();
static def getCurrentTime() { static def getCurrentTime() {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd") DateFormat df = new SimpleDateFormat("yyyy-MM-dd")
@ -22,7 +22,7 @@ android {
minSdk 23 minSdk 23
targetSdk 33 targetSdk 33
versionCode 1 versionCode 1
versionName '0.88' versionName '0.87'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
dataBinding{ dataBinding{

BIN
ft8CN/app/libs/arm64-v8a/libft8cn.so 100644 → 100755

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

BIN
ft8CN/app/libs/x86/libft8cn.so 100644 → 100755

Plik binarny nie jest wyświetlany.

BIN
ft8CN/app/libs/x86_64/libft8cn.so 100644 → 100755

Plik binarny nie jest wyświetlany.

0
ft8CN/app/proguard-rules.pro vendored 100644 → 100755
Wyświetl plik

Wyświetl plik

@ -0,0 +1,26 @@
package com.bg7yoz.ft8cn;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.bg7yoz.ft8cn", appContext.getPackageName());
}
}

Wyświetl plik

Wyświetl plik

Wyświetl plik

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -1,5 +0,0 @@
关于音频输出设置
采样位深也称采样精度FT8CN只有16位整型和32位浮点可选。采样位数是表示声音强度量化后的精细程度它的数值越大波动幅度的分辨率也就越高所发出声音的能力越强。
采样率:也称取样频率, 指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,但占的资源也多。

Wyświetl plik

@ -1,5 +0,0 @@
Audio Output Setting
Bit depth: Choose 16-bit int or 32-bit float. Bit depth dictates the number of possible amplitude values of audio sample. A higher bit depth will produce a higher resolution audio.
Sample rate: Sample rate refers to the number of samples that are present within one second of digital audio. Higher sample rate provides more accurate audio waveform, but consume more system resources.

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

0
ft8CN/app/src/main/assets/cty.dat 100644 → 100755
Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

@ -1,5 +1,5 @@
免责声明: 免责声明:
FT8CN旨在研究的目的学习如何对FT8信号进行解码、发射等操作不对使用者操作本APP所产生的后果负责。 FT8CN旨在出于研究的目的学习如何对FT8信号进行解码、发射等操作不对使用者操作本APP所产生的后果负责。
在中华人民共和国境内使用FT8CN请遵守《中华人民共和国无线电管理条例》等相关规定。 在中华人民共和国境内使用FT8CN请遵守《中华人民共和国无线电管理条例》等相关规定。
考虑到手机的性能和续航的限制,对信号的处理采用轻量化的运算,未做深度解码等处理。 考虑到手机的性能和续航的限制,对信号的处理采用轻量化的运算,未做深度解码等处理。
如有好的建议或问题可以提交到到”有问题要吐槽“。 如有好的建议或问题可以提交到到”有问题要吐槽“。
@ -14,14 +14,7 @@ Please click "FAQ" if you have good suggestions or questions .
BG7YOZ BG7YOZ
2022-07-01 2022-07-01
2023-05-02(0.88) 2023-03-10(0.87)
1.增加音频输出设置(位深、采样率)。
2.增加日志可以按条件查询并导出。
3.修改日志查询以时间为降序显示。
4.修正SWL QSO记录重复的问题。
5.针对各主流浏览器优化后台UI。
2023-03-24(0.87)
1.增加查询的通联日志结果在地图中定位显示功能。 1.增加查询的通联日志结果在地图中定位显示功能。
2.增加FlexRadio仪表显示和参数设置(目前暂不支持发射)。 2.增加FlexRadio仪表显示和参数设置(目前暂不支持发射)。
3.增加时间自动同步功能服务器是Microsoft NTP 3.增加时间自动同步功能服务器是Microsoft NTP

Wyświetl plik

Wyświetl plik

@ -41,7 +41,7 @@ YAESU FT-DX Other series,00,4800,3
KENWOOD(建伍) TK-90,00,9600,5 KENWOOD(建伍) TK-90,00,9600,5
KENWOOD(建伍) TS-480,00,9600,7 KENWOOD(建伍) TS-480,00,9600,7
KENWOOD(建伍) TS-590,00,9600,7 KENWOOD(建伍) TS-590,00,9600,7
KENWOOD(建伍) TS-2000,00,9600,14 KENWOOD(建伍) TS-2000,00,9600,7
KN990,00,38400,1 KN990,00,38400,1
Elecraft K3S\K3\KX3\KX2,00,38400,10 Elecraft K3S\K3\KX3\KX2,00,38400,10
mcHF-QRP sdr,00,4800,1 mcHF-QRP sdr,00,4800,1

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

Wyświetl plik

@ -14,8 +14,6 @@ import com.bg7yoz.ft8cn.connector.ConnectMode;
import com.bg7yoz.ft8cn.database.ControlMode; import com.bg7yoz.ft8cn.database.ControlMode;
import com.bg7yoz.ft8cn.database.DatabaseOpr; import com.bg7yoz.ft8cn.database.DatabaseOpr;
import com.bg7yoz.ft8cn.ft8transmit.QslRecordList; import com.bg7yoz.ft8cn.ft8transmit.QslRecordList;
import com.bg7yoz.ft8cn.html.HtmlContext;
import com.bg7yoz.ft8cn.icom.IcomAudioUdp;
import com.bg7yoz.ft8cn.log.QSLRecord; import com.bg7yoz.ft8cn.log.QSLRecord;
import com.bg7yoz.ft8cn.rigs.BaseRigOperation; import com.bg7yoz.ft8cn.rigs.BaseRigOperation;
import com.bg7yoz.ft8cn.timer.UtcTimer; import com.bg7yoz.ft8cn.timer.UtcTimer;
@ -35,9 +33,6 @@ public class GeneralVariables {
public static boolean saveSWLMessage=false;//保存解码消息开关 public static boolean saveSWLMessage=false;//保存解码消息开关
public static boolean saveSWL_QSO=false;//保存解码消息消息中的QSO开关 public static boolean saveSWL_QSO=false;//保存解码消息消息中的QSO开关
public static boolean audioOutput32Bit =true;//音频输出类型true=float,false=int16
public static int audioSampleRate=12000;//发射音频的采样率
public static MutableLiveData<Float> mutableVolumePercent = new MutableLiveData<>(); public static MutableLiveData<Float> mutableVolumePercent = new MutableLiveData<>();
public static float volumePercent = 0.5f;//播放音频的音量,是百分比 public static float volumePercent = 0.5f;//播放音频的音量,是百分比
@ -548,9 +543,21 @@ public class GeneralVariables {
int order = 0; int order = 0;
for (String key : callsignAndGrids.keySet()) { for (String key : callsignAndGrids.keySet()) {
order++; order++;
HtmlContext.tableKeyRow(result,order % 2 != 0,key,callsignAndGrids.get(key)); if (order % 2 == 0) {
result.append("<tr class=\"bbb\" >");
} else {
result.append("<tr>");
}
result.append("<td align=center class=\"default\" >");
result.append(key);
result.append("</td>\n");
result.append("<td align=center class=\"default\" >");
result.append(callsignAndGrids.get(key));
result.append("</tr>\n");
} }
return result.toString(); return result.toString();
} }
public static synchronized void deleteArrayListMore(ArrayList<Ft8Message> list) { public static synchronized void deleteArrayListMore(ArrayList<Ft8Message> list) {
@ -575,11 +582,4 @@ public class GeneralVariables {
return false; return false;
} }
/**
*
*/
public enum AudioOutputBitMode{
Float32,
Int16
}
} }

Wyświetl plik

@ -71,7 +71,6 @@ import com.bg7yoz.ft8cn.rigs.GuoHeQ900Rig;
import com.bg7yoz.ft8cn.rigs.IcomRig; import com.bg7yoz.ft8cn.rigs.IcomRig;
import com.bg7yoz.ft8cn.rigs.InstructionSet; import com.bg7yoz.ft8cn.rigs.InstructionSet;
import com.bg7yoz.ft8cn.rigs.KenwoodKT90Rig; import com.bg7yoz.ft8cn.rigs.KenwoodKT90Rig;
import com.bg7yoz.ft8cn.rigs.KenwoodTS2000Rig;
import com.bg7yoz.ft8cn.rigs.KenwoodTS590Rig; import com.bg7yoz.ft8cn.rigs.KenwoodTS590Rig;
import com.bg7yoz.ft8cn.rigs.OnRigStateChanged; import com.bg7yoz.ft8cn.rigs.OnRigStateChanged;
import com.bg7yoz.ft8cn.rigs.XieGu6100Rig; import com.bg7yoz.ft8cn.rigs.XieGu6100Rig;
@ -367,12 +366,12 @@ public class MainViewModel extends ViewModel {
} }
@Override @Override
public void onTransmitByWifi(Ft8Message msg) { public void onAfterGenerate(float[] data) {
if (GeneralVariables.connectMode == ConnectMode.NETWORK) { if (GeneralVariables.connectMode == ConnectMode.NETWORK) {
if (baseRig != null) { if (baseRig != null) {
if (baseRig.isConnected()) { if (baseRig.isConnected()) {
sendWaveDataRunnable.baseRig=baseRig; sendWaveDataRunnable.baseRig=baseRig;
sendWaveDataRunnable.message=msg; sendWaveDataRunnable.data=data;
//以线程池的方式执行网络数据包发送 //以线程池的方式执行网络数据包发送
sendWaveDataThreadPool.execute(sendWaveDataRunnable); sendWaveDataThreadPool.execute(sendWaveDataRunnable);
} }
@ -747,9 +746,6 @@ public class MainViewModel extends ViewModel {
case InstructionSet.XIEGU_6100: case InstructionSet.XIEGU_6100:
baseRig = new XieGu6100Rig(GeneralVariables.civAddress);//协谷6100 baseRig = new XieGu6100Rig(GeneralVariables.civAddress);//协谷6100
break; break;
case InstructionSet.KENWOOD_TS2000:
baseRig = new KenwoodTS2000Rig();//建伍TS2000
break;
} }
mutableIsFlexRadio.postValue(GeneralVariables.instructionSet==InstructionSet.FLEX_NETWORK); mutableIsFlexRadio.postValue(GeneralVariables.instructionSet==InstructionSet.FLEX_NETWORK);
@ -885,12 +881,11 @@ public class MainViewModel extends ViewModel {
} }
private static class SendWaveDataRunnable implements Runnable{ private static class SendWaveDataRunnable implements Runnable{
BaseRig baseRig; BaseRig baseRig;
//float[] data; float[] data;
Ft8Message message;
@Override @Override
public void run() { public void run() {
if (baseRig!=null&&message!=null){ if (baseRig!=null&&data!=null){
baseRig.sendWaveData(message);//实际生成的数据是12.64+0.04,0.04是生成的0数据 baseRig.sendWaveData(data);//实际生成的数据是12.64+0.04,0.04是生成的0数据
} }
} }
} }

Some files were not shown because too many files have changed in this diff Show More