kopia lustrzana https://github.com/N0BOY/FT8CN
Revert "Merge pull request #33 from N0BOY/dev"
This reverts commitpull/35/head^2295ff4d1f2
, reversing changes made to356f5f90f0
.
rodzic
295ff4d1f2
commit
d94e5ddcd9
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
42
LICENSE
42
LICENSE
|
@ -1,21 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 BG7YOZ
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
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
|
||||
SOFTWARE.
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 BG7YOZ
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
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
|
||||
SOFTWARE.
|
||||
|
|
286
README.md
286
README.md
|
@ -1,278 +1,8 @@
|
|||
|
||||
```
|
||||
免责声明:
|
||||
FT8CN旨在研究的目的,学习如何对FT8信号进行解码、发射等操作,不对使用者操作本APP所产生的后果负责。
|
||||
在中华人民共和国境内,使用FT8CN请遵守《中华人民共和国无线电管理条例》等相关规定。
|
||||
考虑到手机的性能和续航的限制,对信号的处理采用轻量化的运算,未做深度解码等处理。
|
||||
如有好的建议或问题可以提交到到”有问题要吐槽“。
|
||||
|
||||
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.完成国赫,YAESU,KENWOOD部分型号电台的指令集。
|
||||
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进行调试。
|
||||
BG8BXM(M哥),为FT8CN的使用做推广,抖音和B站上有很多他的教学视频。
|
||||
BG7MFQ,为FT8CN的使用做推广,帮助测试。
|
||||
|
||||
|
||||
```
|
||||
# FT8CN
|
||||
Developed by BG7YOZ and hosted by N0BOY
|
||||
|
||||
Run FT8 natively on Android
|
||||
|
||||
Check [Releases](https://github.com/N0BOY/FT8CN/releases) to download the latest apk file.
|
||||
|
||||
(More info coming up soon, check back in a while)
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="11">
|
||||
<module name="Ft8CN.app" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
<bytecodeTargetLevel target="11" />
|
||||
</component>
|
||||
</project>
|
|
@ -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>
|
|
@ -6,8 +6,5 @@
|
|||
<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,.*" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ADDITIONAL_TAGS" value="date" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
|
@ -172,11 +172,4 @@
|
|||
<component name="ProjectType">
|
||||
<option name="id" value="Android" />
|
||||
</component>
|
||||
<component name="VisualizationToolProject">
|
||||
<option name="state">
|
||||
<ProjectState>
|
||||
<option name="scale" value="0.027632950990615225" />
|
||||
</ProjectState>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
|
@ -5,7 +5,7 @@ plugins {
|
|||
id 'com.android.application'
|
||||
}
|
||||
|
||||
def currentTime = getCurrentTime()
|
||||
def currentTime = getCurrentTime();
|
||||
|
||||
static def getCurrentTime() {
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd")
|
||||
|
@ -22,7 +22,7 @@ android {
|
|||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 1
|
||||
versionName '0.88'
|
||||
versionName '0.87'
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
dataBinding{
|
||||
|
|
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
|
@ -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());
|
||||
}
|
||||
}
|
Plik binarny nie jest wyświetlany.
|
@ -1,5 +0,0 @@
|
|||
关于音频输出设置
|
||||
|
||||
采样位深:也称采样精度,FT8CN只有16位整型和32位浮点可选。采样位数是表示声音强度量化后的精细程度,它的数值越大,波动幅度的分辨率也就越高,所发出声音的能力越强。
|
||||
|
||||
采样率:也称取样频率, 指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,但占的资源也多。
|
|
@ -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.
|
|
@ -1,5 +1,5 @@
|
|||
免责声明:
|
||||
FT8CN旨在研究的目的,学习如何对FT8信号进行解码、发射等操作,不对使用者操作本APP所产生的后果负责。
|
||||
FT8CN旨在出于研究的目的,学习如何对FT8信号进行解码、发射等操作,不对使用者操作本APP所产生的后果负责。
|
||||
在中华人民共和国境内,使用FT8CN请遵守《中华人民共和国无线电管理条例》等相关规定。
|
||||
考虑到手机的性能和续航的限制,对信号的处理采用轻量化的运算,未做深度解码等处理。
|
||||
如有好的建议或问题可以提交到到”有问题要吐槽“。
|
||||
|
@ -14,14 +14,7 @@ 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)
|
||||
2023-03-10(0.87)
|
||||
1.增加查询的通联日志结果在地图中定位显示功能。
|
||||
2.增加FlexRadio仪表显示和参数设置(目前暂不支持发射)。
|
||||
3.增加时间自动同步功能(服务器是Microsoft NTP)。
|
||||
|
|
|
@ -41,7 +41,7 @@ YAESU FT-DX Other series,00,4800,3
|
|||
KENWOOD(建伍) TK-90,00,9600,5
|
||||
KENWOOD(建伍) TS-480,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
|
||||
Elecraft K3S\K3\KX3\KX2,00,38400,10
|
||||
mcHF-QRP sdr,00,4800,1
|
||||
|
|
|
@ -14,8 +14,6 @@ import com.bg7yoz.ft8cn.connector.ConnectMode;
|
|||
import com.bg7yoz.ft8cn.database.ControlMode;
|
||||
import com.bg7yoz.ft8cn.database.DatabaseOpr;
|
||||
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.rigs.BaseRigOperation;
|
||||
import com.bg7yoz.ft8cn.timer.UtcTimer;
|
||||
|
@ -35,9 +33,6 @@ public class GeneralVariables {
|
|||
public static boolean saveSWLMessage=false;//保存解码消息开关
|
||||
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 float volumePercent = 0.5f;//播放音频的音量,是百分比
|
||||
|
||||
|
@ -548,9 +543,21 @@ public class GeneralVariables {
|
|||
int order = 0;
|
||||
for (String key : callsignAndGrids.keySet()) {
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
public static synchronized void deleteArrayListMore(ArrayList<Ft8Message> list) {
|
||||
|
@ -575,11 +582,4 @@ public class GeneralVariables {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出音频的数据类型,网络模式不可用
|
||||
*/
|
||||
public enum AudioOutputBitMode{
|
||||
Float32,
|
||||
Int16
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,7 +71,6 @@ import com.bg7yoz.ft8cn.rigs.GuoHeQ900Rig;
|
|||
import com.bg7yoz.ft8cn.rigs.IcomRig;
|
||||
import com.bg7yoz.ft8cn.rigs.InstructionSet;
|
||||
import com.bg7yoz.ft8cn.rigs.KenwoodKT90Rig;
|
||||
import com.bg7yoz.ft8cn.rigs.KenwoodTS2000Rig;
|
||||
import com.bg7yoz.ft8cn.rigs.KenwoodTS590Rig;
|
||||
import com.bg7yoz.ft8cn.rigs.OnRigStateChanged;
|
||||
import com.bg7yoz.ft8cn.rigs.XieGu6100Rig;
|
||||
|
@ -367,12 +366,12 @@ public class MainViewModel extends ViewModel {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onTransmitByWifi(Ft8Message msg) {
|
||||
public void onAfterGenerate(float[] data) {
|
||||
if (GeneralVariables.connectMode == ConnectMode.NETWORK) {
|
||||
if (baseRig != null) {
|
||||
if (baseRig.isConnected()) {
|
||||
sendWaveDataRunnable.baseRig=baseRig;
|
||||
sendWaveDataRunnable.message=msg;
|
||||
sendWaveDataRunnable.data=data;
|
||||
//以线程池的方式执行网络数据包发送
|
||||
sendWaveDataThreadPool.execute(sendWaveDataRunnable);
|
||||
}
|
||||
|
@ -747,9 +746,6 @@ public class MainViewModel extends ViewModel {
|
|||
case InstructionSet.XIEGU_6100:
|
||||
baseRig = new XieGu6100Rig(GeneralVariables.civAddress);//协谷6100
|
||||
break;
|
||||
case InstructionSet.KENWOOD_TS2000:
|
||||
baseRig = new KenwoodTS2000Rig();//建伍TS2000
|
||||
break;
|
||||
}
|
||||
|
||||
mutableIsFlexRadio.postValue(GeneralVariables.instructionSet==InstructionSet.FLEX_NETWORK);
|
||||
|
@ -885,12 +881,11 @@ public class MainViewModel extends ViewModel {
|
|||
}
|
||||
private static class SendWaveDataRunnable implements Runnable{
|
||||
BaseRig baseRig;
|
||||
//float[] data;
|
||||
Ft8Message message;
|
||||
float[] data;
|
||||
@Override
|
||||
public void run() {
|
||||
if (baseRig!=null&&message!=null){
|
||||
baseRig.sendWaveData(message);//实际生成的数据是12.64+0.04,0.04是生成的0数据
|
||||
if (baseRig!=null&&data!=null){
|
||||
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
Ładowanie…
Reference in New Issue