Stockholm 1998-03-10 3UHOLPLQlU6SHFLILNDWLRQ I U *36VW\UGVW\UG0HGLD6SHODUH +DVWLQJV Uppdragsgivare: Mats Erixon Gruppmedlemmar: Cecilia Sjöman, Projektledare Peter Lindgren, Samordnare Magnus Hübner, Sekreterare Nicklas Nilsson, Webansvarig Markus Skoog, Dokumentationsansvarig Elisabeth Björkman Johanna Östman Anders Ljusberg
Innehållsförteckning 1. Problembeskrivning...3 1.1. Bakgrund...3 1.2. Syfte...3 1.3. Krav...3 1.3.1. Funktioner...3 1.3.2. Datormiljö...3 1.3.2.1. Hårdvara...3 1.3.2.2. Mjukvara...3 1.3.3. Användare...3 2. Förslag till lösning...3 2.1. Systemskiss...3 2.1.1. Moduler...3 2.1.1.1. Moduler...3 2.1.1.2. Databastabeller...10 2.1.1.2.1. Huvuddatabas...10 2.1.1.2.2. Reklamdatabas...10 2.1.1.2.3. Kategoridatabas...10 2.1.2. Flödesdiagram...11 2.2. Skiss av användargränssnittet...13 2.2.1. Användargränsnitt...13 2.2.2. Editeringsgränssnitt...14 3. Aktiviteter och tidsplanering...16 3.1. Administration och Möten...16 3.2. Implementation av moduler...17 3.3. Dokumentation...17 Preliminär Specifikation 2
1. Problembeskrivning 1.1. Bakgrund Vi är en grupp studenter på KTH som går kursen 2d1954, Program Utvecklings Projekt, PrUP. Vi har förmånen att göra ett projekt kallat GPS-Styrd Mediaspelare. Vårt arbetsnamn på projektet är och vår uppdragsgivare är Mats Erixon, Match Production. 1.2. Syfte Syftet med projektet är att konstruera en prototyp till en Mediaspelare som styrs av en GPS, Global Positioning System. Mediaspelaren skall kunna spela upp flera olika sorters media som t.ex. bildspel, ljud eller videofilmer. Dessa skall startas beroende på vilken position man befinner sig på. En vision för en framtida färdig produkt kan vara t.ex. en turistguide, få löpande information om landskapet man åker genom när man sitter på ett tåg. 1.3. Krav Nedan följer de krav som ställs på projektet. 1.3.1. Funktioner Mediaspelaren skall kunna spela upp ljud, video, bildspel, visa texter. Allt skall triggas av GPS-positioner. Det skall vara användarvänligt. Man skall kunna välja vad man vill se och höra. (Selektionsmetod). Det skall finnas ett enkelt editeringgränssnitt som kan lägga in saker i databasen. 1.3.2. Datormiljö Bärbar alt. Stationär PC på tåg eller annat färdmedel. 1.3.2.1. Hårdvara PC med Pentium processor 32 MB Internminne, färgskärm, dugligt grafik kort, ljudkort krävs för att man skall kunna köra Mediaspelaren. Utvecklingen kommer att ske på liknande fast stationära PC datorer. 1.3.2.2. Mjukvara Programmet kommer att utvecklas i Delphi 3 under Windows 95. 1.3.3. Användare Kan vara vem som helst. Användarna kommer att ha mycket olika datorvana. Det ställer krav på att systemet skall vara enkelt att hantera. 2. Förslag till lösning 2.1. Systemskiss 2.1.1. Moduler 2.1.1.1. Moduler THMaster Update() Uppdaterar prioritetslistan Byter prioritetslistan i THListBox Preliminär Specifikation 3
ShowPage(THAbstractPage) gar föregående sidan Visar nya sidan Startar timer (skicka Next när slut) Back() Hämta föregående sida Kör ShowPage Next() Hämta första från priolistan Kör ShowPage ShowHelp() Hämta hjälpsidan från databasen Kör ShowPage ShowAd(THAd) ShowPage(THAd) THAdMaster ShowAd() gar föregående reklam Visar ny reklam Startar timer (skicka ShowAd när slut) ShowFull() Visar reklamen på full skärm. (THMaster.ShowAd) THVisible TextHandler : THTextHandler Hämtar caption på rätt språk ResHandler : THResHandler Sätter X, Y, Width, Height för rätt upplösning Update() Kollar caption och upplösning Preliminär Specifikation 4
THListBox (THVisible) PrioList : THList Lista med THPage som ska visas i listrutan Events OnClick(THPage) Någon har klickat på THPage sidan (i slutändan ska THMaster.ShowPage(THPage) köras) THWebBrowser (THVisible) ShowPage(URL : String) Visar sidan med URLn URL. THAdBrowser (THWebBrowser) Events OnClick() Någon har klickat på reklamen (i slutändan ska THAdMaster.ShowFull) THButton (THVisible) Events OnClick() Knappen har klickats på BackBmp : String Knappens bakgrundsbitmap (hämtas med ResHandler) Caption : String Knappens caption (hämtas med TextHandler) Glyph : String Knappens mini-bild (hämtas med ResHandler) Update() Uppdaterar BackBmp, Caption och Glyph Preliminär Specifikation 5
THCategoryBtn (THButton) Down : Boolean Knappen är nedtryckt THTextHandler Language : String Nuvarande språk FileName : String Filnamn på filen som liksom alla språkberoende saker ligger i, va. GetString(Handle : String) : String Returnerar en översättning av Handle till någonting vettigt. THSystem IncVolume() Ökar volymen DecVolume() Minskar volymen GetTime() : TTime Returnerar systemklockans tid SetTime(TTime) Sätter systemklockans tid THGPS Position : THPosition Nuvarande position Time : TTime Exakt och bra tid Preliminär Specifikation 6
Velocity : THVelocity Nuvarande hastighet UpdateInterval : Integer Hur ofta ska GPSens läge kontrolleras Events OnPosChanged Positionen har ändrats (i slutändan ska THMaster.Update köras) OnTimeChanged Tiden har ändrats (i slutändan ska THInfoBox.Time och THMaster.Update köras/ändras) OnVelocityChanged Hastigheten har ändrats (i slutändan ska THInfoBox.Velocity och THMaster.Update köras/ändras) THInfoBox (THVisible) Time : TTime Tiden som ska visas Velocity : THVelocity Hastigheten som ska visas TimeFormat : String Formatteringssträng för tid/datum, på formatet: YY = år MM = månad DD = dag HH = timme NN = Minut SS = Sekund Exempel: YYMMDD HH:NN:SS VelocityFormat : String Formateringssträng för hastigheten, på formatet S = Siffror Exempel S km/h VelocityConversion : Double Konstant som hastigheten multipliceras med för att få den på rätt format. För km/h är denna konstant 1. Preliminär Specifikation 7
THResHandler FileName : String Filnamn på filen som liksom alla upplösningsberoende saker ligger i, va. SetResolution(ScreenW, ScreenH : Integer) Byt upplösning till den som ligger närmast under den givna. GetResolution(var W, H : Integer) Vilken upplösning använder vi oss av GetPosition(Handle : String; var X, Y, W, H : Integer) Givet ett handle på exempelvis en knapp, returnera dess koordinater i nuvarande upplösning. GetFontSize(Handle : String) : Integer Givet ett handle på exempelvis en knapp, returnera dess fontstorlek GetBitmap(Handle : String) : String Givet ett handle på en bitmap, returnera dess filnamn i nuvarande upplösning. THBackground (THVisible) BackBmp : String Ett handle till bakgrundsbitmappen. THAbstractPage URL : String URL till den sida som ska visas i THWebBrowsern Time : Integer Hur länge ska sidan visas (-1 om hur länge som helst) THPage (THAbstractPage) Description : String Beskrivning att visas i THListBox Category : THCategory Kategori som sidan tillhör Preliminär Specifikation 8
THAd (THAbstractPage) AdURL : String URL till reklamens banner. THCatContainer (THVisible) SelectedCategories : THList Lista med valda kategorier (THCategory) THCategory Glyph : TBitmap Mini-bitmap till kategorin Description : String Namnet på kategorin (i aktuellt språk) TH FileName : String gens filnamn (URL : String; TimeShowed : Integer) gar att URL har visats i TimeShowed sekunder. THVelocity Velocity : Double Hastigheten (i km/h) THPosition Lat, Long : Double Latitud och longitud Preliminär Specifikation 9
2.1.1.2. Databastabeller 2.1.1.2.1. Huvuddatabas Fältnamn Beskrivning (Defaultvärde) idnummer Inget man lägger in men nåt som systemet har x-position I vilken position är klippet aktuellt y-position Som x-pos Radie Inom vilket område spelas klippet upp Startvinkel Vinklarna används för att definiera riktning 0 Slutvinkel 360 Starttid Under vilken tid på dygnet visas klippet 00:00:00 Sluttid 23:59:59 Startdatum Säsong för klippet, en vecka, sommaren 98 etc. Null Slutdatum Null Min-hastighet Skall klippet trigga på viss hastighet Null Max-hastighet Null Alltid Boolean som overridar datum m.m. True URL adress till den HTML fil som presenteras beskrivning Textsträng som ger info om klippet kategori I vilket fack hör klippet hemma Skapat av Vem administrerade inläggningen i databasen Språk Vilket språk är klippet gjort på? Prioritet För att kunna prioritera om flera klipp krockar 2.1.1.2.2. Reklamdatabas Fältnamn Beskrivning (Defaultvärde) idnummer Inget man lägger in men nåt som systemet har x-position I vilken position är klippet aktuellt y-position Som x-pos Radie Inom vilket område spelas klippet upp Startvinkel Vinklarna används för att definiera riktning 0 Slutvinkel 360 Starttid Under vilken tid på dygnet visas klippet 00:00:00 Sluttid 23:59:59 Startdatum Säsong för klippet, en vecka, sommaren 98 etc. Null Slutdatum Null Min-hastighet Skall klippet trigga på viss hastighet Null Max-hastighet Null URL adress till den HTML fil som presenteras beskrivning Textsträng som ger info om klippet Språk Vilket språk är klippet gjort på? 2.1.1.2.3. Kategoridatabas Fältnamn Beskrivning Kategori Vilken kategori är det inte nödvändigt ett namn Språk Vilket språk hör kategorin till? Bitmapp Bild som representerar kategorin Lokaltnamn Namnet på kategorin Preliminär Specifikation 10
2.1.2. Flödesdiagram CatogoryContainer Down Category SelectedCategories Master PrioList ListBox ShowPage Update WebBrowser GPS Update AdMaster PrioList AdBrowser ShowPage WebBrowser Click HelpButton ShowHelp Master Click AdBrowser ShowFull AdMaster ShowPage Master ShowPage WebBrowser ShowPage WebBrowser Click NextButton Next Master PrioList ListBox Preliminär Specifikation 11
ShowPage WebBrowser Click BackButton Back Master PrioList ListBox Click VolumeButton Inc/Dec Volume System ShowPage WebBrowser Time Out for Web page Master PrioList ListBox ShowAd AdBrowser Time Out for Ad page AdMaster Click CategoryButton Update Master OnTimeChanged GPS Time InfoBox Preliminär Specifikation 12
OnVelocityChanged GPS Velocity InfoBox 2.2. Skiss av användargränssnittet 2.2.1. Användargränsnitt Följande övergripande saker antas behöva behandlas: Reklamruta Prioruta, med scrollbar Hjälpknapp Knapp för val av språk Ruta i vilken hastighet/tid/position rullar... Meny Stor mediaruta, HTML Volym kontroll Verktyg som styr text storlek, tre storlekar lagom? Användarvänlighet Text Ljud och Bild Bilden visar vilka områden som applikationen har tänkt att ha. Utförligare om olika funktionalitet Text Ljud Bild Video Vad som skall kunna visas/spelas i det stora huvudfönstret. Alla dokument som skall kunna visas skall vara HTML dokument med ljud, bild eller video inbäddat. Fönstret kommer med stor sannolikhet att vara en browser exempelvis Internet Explorer. HTML Enkelt att bädda in olika medier i HTML dokument. Huvudfönstret kommer därför att anpassas för att visa HTML dokument. Prioruta I den här rutan skall de olika mediaklipp som triggas av GPS positioner komma upp i en liten lista. Listan skall omarbetas för varje nytt objekt som kommer upp. Det får plats i listan beroende på vilken prioritet klippet har. Man skall kunna spela alla klipp i listan genom att peka på dem. Varje objekt har en kategori. Om man i menyn väljer andra kategorier så förändras listan. Priolistan saknar default väljare. Reklamruta Skall vara helt automatstyrd. Är en HTML browser som spelar upp reklam klipp. Reklamklippen skall vara GPStriggade. Reklamklippen saknar ljud. Preliminär Specifikation 13
Meny Den ruta som på bilden kallas meny skall vara en meny fylld av "knappar" med olika kategorier som skall gå att "markera/avmarkera". Dessa knappar styr vilka klipp som kommer upp i priolistan eftersom klippen har en kategori. Hjälpknapp Trycker man på knappen kommer ett hjälpdokument som förklarar hur applikationen fungerar att visas i huvudfönstret. Språknapp Trycker man på för att välja ett annat språk. Den skall vara en bild som intuitivt uppfattas som en blandning av flaggor. Där kommer även att stå språkval på det aktuella språket. Nästa-knapp Spelar översta klippet i priolistan Föregående-knapp Kan gå tillbaka X senaste spelade klipp. Text-kontroll Kan ändra storleken på texten i klippet. Förslag på att ha tre olika storlekar; stor, mellan, liten Volym-kontroll Hur hög volym vill användaren ha? 2.2.2. Editeringsgränssnitt Här följer en liten beskrivning av hur det är tänkt att man skall kunna mata in olika klipp i databaserna för GPSstyrd Mediaspelare ("Hastings98"). HuvudDatabasTabellen Saker som man alltid antas vilja fylla i... "URL" är sökvägen till det klipp man vill lägga in. Om den fil man lägger till är en fil av typ skild från HTML kommer vi att "wrappa" den. Då kommer en meddelande ruta upp som går att välja bort till nästa gång om man vill. Preliminär Specifikation 14
Väljer "kategori" gör man med en Lookup box kopplad mot kategori tabellen. Trycker man på knappen "Lägg till ny kategori" så har man möjlighet att lägga till en kategori om den saknas. (Se under rubriken KategoriTabellen) "Prioritet" kan man välja bland ett antal fördefinierade i en Lookup box. "Språk", kan man välja i Lookup box bland de språk som är inlagda i systemet. (Vi behöver kanske en språk databas tabell) I rutan "positionsdata"... "X-koordinat"...(från GPS:en) "Y-koordinat"...(från GPS:en) "Radie"...(i nåt bra mått) "Skapat av"... där ser man vem som har lagt in klippet. "Lagra" trycker man på när man har ställt in klart... "Avancerade inställningar"... saker som har default värden men som kan ändras... trycker man på kanppen får man upp en ny dialog ruta. Riktningen defineras av ett vinkelfält... start och slut skall matas in... (Default är 0 till 360.) Datum... för att kunna spela ett klipp under en viss säsong. Start och slutdatum skall matas in om man vill ändra här. (Default är Null då det inte antas vara för vanligt med säsongsklipp) Detta görs med en Date-pick-ruta. Tid för att bara spela vissa klipp dagtid eller kanske lunchtid. (Default är 00.00.00-23.59.59) Detta görs med en Time-pick-ruta. Hastighet... vill vi att nåt speciellt skall hända vi vissa hastigheter inom vissa områden. max och min hastighet går att mata in. (default NULL) Visas alltid... samma sak som att sätta alla värden till default... Kategori tabellen. När man klickar på knappen "lägg till ny kategori" (se ovan) så kommer man hit... Preliminär Specifikation 15
Här fyller man i namnet på den nya kategorin. Man talar om var bilden till den nya ikon man skall ha till den finns. Man kan leta efter befintliga kategorier. (Så man kan se vilka som finns och inte lägga till nåt för liknande igen) Ta bort ett mediaklipp Har man lagt in nåt fel eller vill ta bort nåt som inte används längre så vill man ta bort det ur databasen. Det görs med en dialogruta. Där kan man söka på klippets beskrivning, kategori, språk och URL. Reklam Databastabellen Det finns även en databas som beskriver reklam- och alternativa mediaklipp. Dess editeringsgränssnitt kommer att se väldigt lika ut. Skillnaden är att det är färre saker att mata in där. 3. Aktiviteter och tidsplanering 3.1. Administration och Möten Gruppen har möten en gång per vecka som minst. På dessa möten diskuteras funktionalitet och vad som skall göras. Vi har även regelbundenkontakt med uppdragsgivaren. Alla mötesanteckningar skrivs i HTML och läggs upp på gruppens hemsida så att frånvarande gruppmedlemmar samt andra intressenter kan se vad som hänt under Preliminär Specifikation 16
mötet. Via gruppens hemsida går det även att nå material som har med projektet att göra. Här finns också information om nästa möte och hur man kan nå gruppens medlemmar. 3.2. Implementation av moduler Måndagen den 27 april skall alla moduler vara så gott som klara. Därefter kommer vi att foga samman alla modulerna till en prototyp som skall feltestas och förbättras. Närmare planering kommer att ske när vi fått respons på vår preliminära specifikation. 3.3. Dokumentation Varje steg dokumenteras efter att det är utfört. Vissa saker mer ingående än andra. Så fort dokumentation av ett delsteg är utförd skickas det till webansvarig och dokumentationsansvarig. Preliminär Specifikation 17