Skip to content

Commit 64da851

Browse files
author
Dennis Mantz
committed
Version 2.2: Bookmarks, Airspy HF+, RTL-SDR Direct Sampling, use libhackrf, upgrade libhydrasdr, low performance mode, bugfixes
1 parent b79e344 commit 64da851

183 files changed

Lines changed: 44736 additions & 3565 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,6 @@ app/src/main/assets/docs
2525
# Vim and ctags
2626
tags
2727
*.swp
28+
29+
# tmp
30+
ipc

Readme.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ phone both practical and fun.
1818
- Real-time **FFT and waterfall display** with scroll and pinch-to-zoom
1919
- Audio demodulation: **CW**, **AM**, **nFM**, **wFM**, **LSB**, **USB**
2020
- Record raw IQ data
21+
- Comprehensive Bookmark Manager for Stations (Frequencies) and Bands
22+
- Download and Synchronize EiBi Shortwave Radio Database, POTA & SOTA Spots
2123
- Modern and dynamic UI with a bottom (or side) drawer for full control
2224
- Adjustable Settings such as averaging, peak hold, FFT size, color maps, color
2325
theme, screen orientation and more
@@ -27,9 +29,10 @@ phone both practical and fun.
2729

2830
## Supported Devices
2931

30-
- HackRF (via [hackrf_android](https://github.com/demantz/hackrf_android))
32+
- HackRF (via [libhackrf](https://github.com/greatscottgadgets/hackrf/tree/master/host/libhackrf))
3133
- RTL-SDR dongles (via [rtl-sdr driver](http://sdr.osmocom.org/trac/wiki/rtl-sdr))
3234
- Airspy (via [libairspy](https://github.com/airspy/airspyone_host/tree/master/libairspy))
35+
- Airspy HF+ (via [libairspyhf](https://github.com/airspy/airspyhf/tree/master/libairspyhf))
3336
- HydraSDR (via [libhydrasdr](https://github.com/hydrasdr/rfone_host/tree/main/libhydrasdr))
3437
- File input (from previously recorded IQ files or external sources)
3538

@@ -57,6 +60,7 @@ Topics include:
5760
- User Interface & Controls
5861
- SDR & FFT Configuration
5962
- Demodulation Modes
63+
- Bookmark Manager
6064
- Signal Identification Tips
6165
- Recording & Playback
6266
- Advanced SDR Topics (dB, FFT theory, ham radio...)

app/build.gradle.kts

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
13
plugins {
24
alias(libs.plugins.android.application)
35
alias(libs.plugins.kotlin.android)
46
alias(libs.plugins.kotlin.compose)
57
alias(libs.plugins.android.devtools)
68
alias(libs.plugins.dagger.hilt)
9+
alias(libs.plugins.kotlin.serialization)
10+
alias(libs.plugins.androidx.room)
711
}
812

913
android {
@@ -14,8 +18,8 @@ android {
1418
applicationId = "com.mantz_it.rfanalyzer"
1519
minSdk = 28
1620
targetSdk = 36
17-
versionCode = 20107
18-
versionName = "2.1.1"
21+
versionCode = 20205
22+
versionName = "2.2"
1923

2024
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2125
}
@@ -53,9 +57,6 @@ android {
5357
sourceCompatibility = JavaVersion.VERSION_11
5458
targetCompatibility = JavaVersion.VERSION_11
5559
}
56-
kotlinOptions {
57-
jvmTarget = "11"
58-
}
5960
buildFeatures {
6061
compose = true
6162
buildConfig = true
@@ -66,6 +67,16 @@ android {
6667
useLibrary("android.test.mock")
6768
}
6869

70+
kotlin {
71+
compilerOptions {
72+
jvmTarget.set(JvmTarget.JVM_11)
73+
}
74+
}
75+
76+
room {
77+
schemaDirectory("$projectDir/schemas")
78+
}
79+
6980
// Build static site from /docs and make it available in the app's assets:
7081
tasks.register<Exec>("generateDocs") {
7182
description = "Builds the MkDocs static website"
@@ -85,7 +96,6 @@ tasks.named("preBuild") {
8596
}
8697

8798
dependencies {
88-
implementation(files("lib/hackrf_android.aar"))
8999
implementation(libs.androidx.core.ktx)
90100
implementation(libs.androidx.appcompat)
91101
implementation(libs.androidx.lifecycle.runtime.ktx)
@@ -99,14 +109,23 @@ dependencies {
99109
implementation(libs.androidx.media3.common.ktx)
100110
implementation(libs.androidx.localbroadcastmanager)
101111
implementation(project(":nativedsp"))
112+
implementation(project(":libhackrf"))
102113
implementation(project(":libairspy"))
114+
implementation(project(":libairspyhf"))
103115
implementation(project(":libhydrasdr"))
104116
implementation(libs.androidx.navigation.compose)
105117
implementation(libs.androidx.foundation.android)
106118
implementation(libs.androidx.room.runtime)
119+
implementation(libs.androidx.room.paging)
107120
implementation(libs.androidx.material3.android)
108121
implementation(libs.androidx.datastore.core.android)
109122
implementation(libs.androidx.datastore.preferences)
123+
implementation(libs.androidx.sqlite.ktx)
124+
implementation(libs.androidx.compose.runtime.saveable)
125+
implementation(libs.androidx.paging.runtime)
126+
implementation(libs.androidx.paging.runtime.ktx)
127+
implementation(libs.androidx.paging.compose)
128+
implementation(libs.androidx.compose.animation)
110129
annotationProcessor(libs.androidx.room.compiler)
111130
ksp(libs.androidx.room.compiler)
112131
implementation(libs.androidx.room.common)
@@ -117,7 +136,9 @@ dependencies {
117136
debugImplementation(libs.androidx.ui.tooling)
118137
implementation(libs.androidx.security.crypto)
119138
implementation(libs.dagger.hilt)
139+
implementation(libs.hilt.navigation.compose)
120140
ksp(libs.dagger.hilt.compiler)
141+
implementation(libs.kotlinx.serialization.json)
121142

122143
// Flavor-specific dependencies:
123144
add("playImplementation", libs.billing) // "play" is the flavor

app/lib/hackrf_android.aar

-13.5 KB
Binary file not shown.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
{
2+
"formatVersion": 1,
3+
"database": {
4+
"version": 1,
5+
"identityHash": "88212c38aec27c44a2ea5e92074ff515",
6+
"entities": [
7+
{
8+
"tableName": "recordings",
9+
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `frequency` INTEGER NOT NULL, `sampleRate` INTEGER NOT NULL, `date` INTEGER NOT NULL, `fileFormat` TEXT NOT NULL, `sizeInBytes` INTEGER NOT NULL, `filePath` TEXT NOT NULL, `favorite` INTEGER NOT NULL)",
10+
"fields": [
11+
{
12+
"fieldPath": "id",
13+
"columnName": "id",
14+
"affinity": "INTEGER",
15+
"notNull": true
16+
},
17+
{
18+
"fieldPath": "name",
19+
"columnName": "name",
20+
"affinity": "TEXT",
21+
"notNull": true
22+
},
23+
{
24+
"fieldPath": "frequency",
25+
"columnName": "frequency",
26+
"affinity": "INTEGER",
27+
"notNull": true
28+
},
29+
{
30+
"fieldPath": "sampleRate",
31+
"columnName": "sampleRate",
32+
"affinity": "INTEGER",
33+
"notNull": true
34+
},
35+
{
36+
"fieldPath": "date",
37+
"columnName": "date",
38+
"affinity": "INTEGER",
39+
"notNull": true
40+
},
41+
{
42+
"fieldPath": "fileFormat",
43+
"columnName": "fileFormat",
44+
"affinity": "TEXT",
45+
"notNull": true
46+
},
47+
{
48+
"fieldPath": "sizeInBytes",
49+
"columnName": "sizeInBytes",
50+
"affinity": "INTEGER",
51+
"notNull": true
52+
},
53+
{
54+
"fieldPath": "filePath",
55+
"columnName": "filePath",
56+
"affinity": "TEXT",
57+
"notNull": true
58+
},
59+
{
60+
"fieldPath": "favorite",
61+
"columnName": "favorite",
62+
"affinity": "INTEGER",
63+
"notNull": true
64+
}
65+
],
66+
"primaryKey": {
67+
"autoGenerate": true,
68+
"columnNames": [
69+
"id"
70+
]
71+
}
72+
}
73+
],
74+
"setupQueries": [
75+
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
76+
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '88212c38aec27c44a2ea5e92074ff515')"
77+
]
78+
}
79+
}

0 commit comments

Comments
 (0)