Android-sovellus
- Compose-käyttöliittymä ja Media3-toistokerros
- Taustatoisto omana palvelunaan mediakontrolleineen
- Asemien ja asetusten pysyvyys DataStoressa
- Tuki Android 8:sta (API 26) alkaen, käännetty API 36:ta vasten
Android-sovellus
Julkaistu Google Playssa
WaveIQ Radio yhdistää vakaan taustatoiston, laajan asemahaun ja suosituskerroksen, joka rakentuu käyttäjän oman kuunteluhistorian päälle. Sovellus ei ole pelkkä soitin: taustalla on oma palvelu, joka kerää kuuntelutapahtumat, kuvaa asemien ominaisuuksia ja seuraa striimien toimintakuntoa.
Internet-radioita on tarjolla kymmeniä tuhansia, ja niistä oman suosikin löytäminen on hankalampaa kuin itse kuuntelu. WaveIQ Radio keskittyy juuri tähän: löytämiseen, luotettavaan toistoon ja siihen, että sovellus osaa kertoa miksi se ehdottaa tiettyä asemaa.
Radion kuuntelijoille, jotka haluavat muutakin kuin listan valmiiksi valittuja asemia: hakua maittain, kielittäin ja genreittäin sekä ehdotuksia oman kuuntelun perusteella.
Verkkoradiot katkeilevat ja kuolevat. Sovellus seuraa striimien toimintakuntoa, palautuu katkoista hallitusti ja auttaa löytämään uusia asemia sen sijaan että käyttäjä selaisi loputonta listaa.
Asemia haetaan nimellä, genrellä, maalla tai kielellä – tai kuvaamalla haluttu tunnelma omin sanoin. Löydetyt asemat tallentuvat omaan listaan, ja suositukset tarkentuvat kuuntelun myötä.
Suosituskerros on backend-vetoinen ja rakentuu kuunteluhistorian, makuprofiilin ja asemista kerätyn metadatan päälle. Se ei toimi itsenäisesti taustalla eikä muuta soittolistaa käyttäjän puolesta.
Backend muodostaa ehdotukset kuuntelutapahtumista ja makuprofiilista. Ehdotus on aina lista asemia, jotka käyttäjä voi kuunnella tai ohittaa – sovellus ei vaihda asemaa automaattisesti.
Palvelinpuolen kerros kuvaa asemaa kuuntelu- ja metadatahistorian perusteella: kuinka musiikkipainotteinen tai puhevoittoinen asema on ja kuinka vakaa sen striimi on.
Yhdestä asemasta voi hypätä listaan samankaltaisia asemia. Vertailu perustuu Station DNA -tietoon, ja hakua voi tarkentaa eri painotuksilla.
Suosituskortti voi avata lyhyen selityksen siitä, mihin ehdotus perustuu. Selitys näytetään vain, jos asemasta on siihen riittävästi tietoa, ja se tuotetaan käyttäjän kielellä.
Taustatyö tarkistaa striimien tilan säännöllisesti. Tietoa käytetään hakutulosten merkintöihin; asemia ei poisteta listalta automaattisesti.
Suositukset perustuvat kuunteluhistoriaan ja asemien metadataan. Ne ovat ehdotuksia, eivät automaattisia valintoja.
Kokonaisuus on Android-sovellus, oma rajapintapalvelu ja analytiikkatietokanta. Suosituslogiikka ja asemien analyysi on tarkoituksella palvelinpuolella.
Sovellus toimii ilman käyttäjätiliä. Kirjautumista tarvitaan vain Google Drive -varmuuskopioon.
Radion kuuntelu, asemahaku, suosikit ja suositukset toimivat ilman käyttäjätiliä. Google-kirjautuminen liittyy ainoastaan Drive-varmuuskopiointiin.
Suojatut rajapinnat vaativat Play Integrity -varmennuksen ja Firebase App Check -tokenin. Ilman niitä palvelin ei suorita pyyntöä, joten rajapintaa ei voi käyttää suoraan sovelluksen ulkopuolelta.
Palvelin tallentaa kuuntelutapahtumia, asemien metatietoja, striimien toimintakuntoa ja niistä johdettua makuprofiilia suosituksia varten. Käyttäjä tunnistetaan sovelluskohtaisella laitetunnisteella, ei henkilötiedoilla.
Varmuuskopio sisältää asemat, logot ja asetukset ja tallentuu käyttäjän omaan Google Driveen. Automaattisen varmuuskopion voi rajata Wi-Fi-yhteyteen.
Mobiilidataa käytetään toiston vakauttamiseen vain, jos käyttäjä on sallinut sen erikseen. Data Saver ja verkkovierailu estävät sen, ja rajoitus koskee vain radiotoistoa.
Sovelluksella on julkiset tietosuoja-, tuki-, käyttöehto- ja tietojen poistosivut Play Consolen vaatimusten mukaisesti.
Kuvat ovat sovelluksen Google Play -kuvakaappauksia. Klikkaamalla kuva avautuu täysikokoisena.
Sovellus on Google Play -kaupan tuotantoraiteella paketilla com.janstech.radioplayer ja käyttää Play App Signing -allekirjoitusta. Google Drive -varmuuskopioinnin OAuth-konfiguraatio on tuotantotilassa. Kuuntelu, haku ja suositukset toimivat ilman käyttäjätiliä.