Bouw een AudioPlayer met PhoneGap applicatie-instellingen

U hoeft geen platformspecifieke technologieën te gebruiken om krachtige en boeiende apps te ontwikkelen. In deze serie leer je hoe je een hybride app kunt maken - met name een audiospeler - met behulp van webtechnologieën en frameworks zoals jQuery Mobile en Cordova (ook bekend als PhoneGap). Het eerste raamwerk zal worden gebruikt om de interface te maken, terwijl verschillende van de API's van de tweede, zoals Media en het dossier, zal worden gebruikt om de bedrijfslogica te ontwikkelen.


Series Overzicht

  • Applicatie-instellingen
  • Application Logic
  • Toepassing afstemmen

De projectfuncties

De app die we over enkele ogenblikken zullen ontwikkelen, zal een eenvoudige audiospeler worden genoemd Audero Audiospeler. Het zal minimale gebruiksvereisten hebben. Deze app zoekt in het bestandssysteem en verzamelt eventuele audiobestanden waarnaar de gebruiker kan luisteren. De app verzamelt bestanden met een van de volgende extensies: .mp3, .wav, .m4a. Houd er rekening mee dat de ondersteunde indelingen sterk afhankelijk zijn van het platform waarop u de toepassing uitvoert, dus kies indelingen die op veel platforms werken.

Audero Audiospeler stelt de gebruiker ook in staat de lijst op elk gewenst moment bij te werken en andere bestanden op te nemen die ze mogelijk hebben gedownload nadat de bewerking voor de eerste keer is uitgevoerd. De gebruiker kan ook ongewenste audio uit de lijst verwijderen door op het pictogram aan de rechterkant van de naam van de audio te klikken. De lijst is alfabetisch gerangschikt met briefverdelers om items te organiseren en te groeperen. De lijst heeft een zoekvak om ook de bestanden te filteren.

U kunt de beschreven pagina bekijken door naar de onderstaande schermafbeelding te kijken:


Zodra de gebruiker een bestand kiest, wordt de controller van de speler getoond. De controller toont de bestandsnaam, het locatiepad, de speelduur en de duur. Het bevat knoppen voor afspelen / pauze, stop en een schuifregelaar om de audio heen en weer te bewegen.

Je kunt het uiterlijk en het gevoel van de speler in de onderstaande foto zien:



Betrokken technologieën

De volgende lijst geeft u een gedetailleerd inzicht in wat we zullen gebruiken:

  • HTML: Het wordt gebruikt om de opmaak van de pagina's te maken. Indien van toepassing, zal ik een aantal van de nieuwe HTML5-tags gebruiken.
  • CSS: De meeste CSS-verbeteringen zullen door jQuery Mobile worden gedaan, dus ik zal slechts een paar regels aangepaste CSS-code gebruiken. Het wordt voornamelijk gebruikt voor de speler zelf.
  • JavaScript: Dit is de taal die ik zal gebruiken om de bedrijfslogica te ontwikkelen.
  • jQuery: Ik zal jQuery voornamelijk gebruiken om elementen te selecteren en event handlers toe te voegen.
  • jQuery Mobile: Het wordt gebruikt om de applicatie-interface te verbeteren en te optimaliseren voor mobiele apparaten. Sommige van de gebruikte widgets zijn onder meer Listview, Dialog en Slider. Ik zal ook een aantal knoppen in de kop- en voettekst van de pagina's plaatsen om een ​​eenvoudige werkbalk te maken. De gebruikte versie is 1.3.0.
  • Cordova (PhoneGap): Cordova wordt gebruikt om de bestanden in te pakken, zodat u ze kunt compileren alsof u een native app hebt gebouwd. Bouwen Audero Audiospeler we maken gebruik van verschillende API's die door het framework worden aangeboden, zoals Storage, InAppBrowser, Notification, File en Media. De gebruikte versie is 2.3.0.

Naast de bovenstaande lijst, gebruik ik ook deze Cordova API's:

  • File API: An API voor het lezen, schrijven en navigeren van bestandssysteemhiërarchieën biedt een reeks objecten om met bestanden en mappen te werken. We gebruiken bijvoorbeeld de  DirectoryReader object om door het bestandssysteem te navigeren, gebruikmakend van zijn methode readEntries (), en doorzoek de geluiden. We zullen ook de LocalFileSystem object om de rootbestandssystemen van het apparaat te verkrijgen met behulp van zijn requestFileSystem () methode. U kunt meer informatie vinden in het officiële Document van de File API.
  • InAppBrowser API: Het is een webbrowser die in uw app wordt weergegeven wanneer u de window.open telefoontje. Het is niet veel meer dan dat, maar zoals u verderop in dit artikel zult ontdekken, is het van vitaal belang om externe links goed te beheren met deze API. Als u meer wilt weten over de methoden die deze API biedt, kunt u het officiële document van InAppBrowser bekijken.
  • Opslag API: Deze API biedt toegang tot de opslagopties van het apparaat. We zullen specifiek gebruik maken van de Cordova-implementatie van de Web Storage API en de methoden om de lijst met audiobestanden op te slaan en te laden. Als u een diepgaande uitleg nodig heeft, raadpleegt u het lokale opslag-API-document.
  • Media API: Het Media-object biedt de mogelijkheid om audiobestanden op een apparaat op te nemen en af ​​te spelen. Dit is een belangrijke API voor onze speler en we zullen bijna alle methoden gebruiken. We gebruiken bijvoorbeeld de spelen() methode om de geluiden te spelen, de hou op() methode om het afspelen van de audio te stoppen, en de getDuration () methode om de duur van het huidige verwerkte bestand op te halen. Meer over dit onderwerp is te vinden in de Media API-documenten.
  • Meldings-API: Hiermee kunt u de gebruiker op de hoogte stellen met visuele en hoorbare meldingen. We zullen het gebruiken alert () methode om de gebruiker op de hoogte te stellen in geval van fouten. Voor een meer diepgaand overzicht van deze API, lees de documentatie-API's.

Voordat we onze tutorial voortzetten, wil ik benadrukken dat Cordova voor elk besturingssysteem een ​​ander JavaScript-bestand gebruikt. Daarom, als u de toepassing alleen wilt compileren, moet u een specifieke IDE-SDK-bundel gebruiken. Als u bijvoorbeeld de Android-versie van onze speler wilt maken (en dus de relatieve .apk wilt maken), moet u Eclipse en de Android SDK gebruiken. Het gebruik van verschillende bundels voor elk platform kan problematisch zijn, dus Audero Audiospeler zal worden ontwikkeld met de aanname dat de compilatie zal worden gedaan met behulp van de Adobe-cloudservice, genaamd Adobe PhoneGap Build. Deze service bevat de juiste Cordova-bibliotheek voor elk platform op compilatietijd.


De structuur van het project

De structuur van het project zal vrij eenvoudig zijn. Om te beginnen met het bouwen van de speler, maakt u een map en geeft u deze een nieuwe naam "Audero-audio-player". Maak nu drie mappen in deze map met de volgende namen: css, afbeeldingen, en js. Zodra je dit hebt gedaan, download je de jQuery (ik gebruik versie 1.8.3) en jQuery Mobile (versie 1.3.0) -bibliotheken. Verplaats het jQuery en het JavaScript-bestand van jQuery Mobile naar de "js"map en plaats het jQuery Mobile CSS-bestand in de"css"map. Plaats de gebundelde jQuery Mobile-afbeeldingen ten slotte in de"afbeeldingenOmdat we de native structuur van jQuery Mobile enigszins hebben gewijzigd, moeten we de paden aanpassen die verwijzen naar de afbeeldingen in het CSS-bestand.afbeeldingen/ "deel met deze reeks" ... /afbeeldingen/ ". Als u een geautomatiseerde functie van de door u gekozen editor gebruikt, controleer dan of deze de reeks vijf keer heeft vervangen.

Nu u het framework hebt ingesteld, kunt u doorgaan naar de volgende stap. In de hoofdmap van de projectmap maken we de HTML-bestanden en plaatsen we het pictogram van de standaardtoepassing, het configuratiebestand van Adobe PhoneGap Build en het standaard startscherm. In deze zelfstudie maken we ook de volgende bestanden:

  • index.html: Dit is het beginpunt van de applicatie en waar we de links naar de gebruikte bibliotheken plaatsen, binnen de sectie.
  • files-list.html: Dit is de pagina waar je een lijst hebt met de geluiden die op je apparaat zijn opgeslagen, gegroepeerd zoals ik heb uitgelegd in de inleiding van dit artikel. Zoals je later zult zien, heb je ook een kleine werkbalk waarmee je terug kunt gaan naar de startpagina (de knop in de linkerbovenhoek) en de lijst met geluiden kunt vernieuwen (de knop in de rechterbovenhoek)..
  • player.html: Dit bevat eenvoudig de opmaak van de audiospeler.
  • aurelio.html: Dit is de pagina met app-credits; het bevat informatie over de auteur van de app.
  • style.css: Dit bestand bevat de paar aangepaste CSS-regels die door de app worden gebruikt en die voornamelijk worden gebruikt om de afspeelknoppen te stylen.
  • jquery.mobile.config.js: Dit bevat onze aangepaste configuratie voor het jQuery Mobile-framework.
  • appFile.js: Dit bestand bevat de klasse genaamd AppFile die we zullen gebruiken om de geluiden te beheren. Het fungeert als een interface voor de bestandentabel van onze database. Deze klasse stelt ons ook in staat om audio-informatie op te halen en te bewerken en om ons in staat te stellen om bestanden toe te voegen en te verwijderen van de opgeslagen lijst.
  • player.js: Het bestand inclusief de klasse, genaamd Speler, die de speler beheert en de spelerinterface opnieuw instelt.
  • utility.js: Dit zijn slechts een paar hulpprogramma's die door ons project worden gebruikt, en ik zal dit verder toelichten in het volgende artikel van de serie.
  • application.js: Dit is als een lijm die alle stukjes van ons project samenvoegt. Deze klasse is verantwoordelijk voor het initialiseren van het gedrag van de beschreven pagina's voordat gebeurtenissen worden gekoppeld met behulp van de tot nu toe besproken klassen.
  • config.xml: Dit XML-bestand bevat de metagegevens van de toepassing en wordt door de Adobe-cloudservice gebruikt om instellingen op te slaan, zoals het versienummer van de app en de beschrijving.

Dit is een heleboel dingen om te maken, maar ik beloof dat je een goede tijd zult hebben met dit project. Als laatste opmerking, naast de vermelde bestanden, Audero Audiospeler bevat enkele extra afbeeldingen - zoals de afspeel- / pauze- en stopknoppen - die in de "afbeeldingen"map.


De startpagina

jQuery Mobile laadt alle pagina's met AJAX, dus tenzij je expliciete aangepaste configuraties bouwt, zijn alle bestanden die nodig zijn door Audero Audiospeler, zoals de CSS- en JavaScript-bestanden, moeten door het toegangspunt worden geladen, index.html. Deze pagina bevat, behalve de titel en beschrijving van de toepassing, een knop voor toegang tot de lijst met geluiden. Het bevat ook een voettekst met een knop voor toegang tot auteursinformatie.

De volledige bron van de startpagina wordt hieronder weergegeven:

      Audero Audiospeler              

Audero Audiospeler

Audero Audio Player is een standaard audiospeler die het bestandssysteem van een apparaat doorzoekt, de gevonden audiobestanden verzamelt en de gebruiker vervolgens laat luisteren. Met deze app kan de gebruiker de lijst op elk gewenst moment bijwerken om bestanden op te nemen die mogelijk zijn gedownload nadat de bewerking voor de eerste keer is uitgevoerd. U kunt ook ongewenste audio verwijderen - bijvoorbeeld geluiden die worden gebruikt als meldingen in andere toepassingen - door op een pictogram aan de rechterkant van de naam van het nummer te klikken. De geluidlijst is alfabetisch gerangschikt met letterverdelingen om lijstitems te organiseren en te groeperen, en heeft een zoekvak om bestanden te filteren. U kunt de beschreven pagina bekijken door naar de onderstaande schermafbeelding te kijken.

Bestandslijst

Gemaakt door Aurelio De Rosa

credits

Zoals je in het volgende gedeelte zult zien, zijn de knoppen in de en de

tags, gebruik het kenmerk data-iconpos = "notext". Dit kenmerk is erg belangrijk voor het bereiken van het gewenste effect: een responsieve lay-out. Het geciteerde attribuut vertelt jQuery Mobile om de linktekst te verbergen, wat erg handig is om ruimte te besparen voor kleinere schermen. In de volgende sectie zal ik laten zien hoe een handler aan de pagebeforecreate en de orientationchange gebeurtenissen zodat we kunnen testen op de schermgrootte. Als er een scherm wordt gevonden dat groot genoeg is, wordt het kenmerk verwijderd en wordt de tekst weergegeven. In dit geval betekent "groot genoeg" dat de breedte van het scherm groter is dan 480 pixels.

Observant-lezers kunnen ook de twee JavaScript-regels net boven de hebben opgemerkt . Negeer dit voor het moment; we zullen later ingaan op hun betekenis.

Deze schermafbeelding geeft u een voorbeeld van hoe de pagina eruit zal zien:



De lijstpagina

Deze kleine pagina, genaamd files-list.html, heeft een aantal interessante widgets zoals de autodivider en de zoeken doos. Die widgets worden voor u gemaakt door jQuery Mobile, simpelweg door een paar attributen toe te voegen aan de

    label: data-autodividers = "true" en data-filter = "true". U hebt al gezien hoe deze pagina in een vorige sectie verschijnt en u moet hebben opgemerkt dat elk lijstitem een ​​grote "X" aan de rechterkant heeft. Dit is de knop waarmee de gebruiker het bestand uit de lijst en de database kan verwijderen. Deze twee items zijn een standaardeffect dat wordt bereikt met jQuery Mobile. U kunt meer over hen lezen door te kijken naar de officiële documentatiepagina.

    Het laatste stukje code dat de moeite van het bespreken waard is, is het

    element. Dit wordt getoond wanneer de code in de mappen van het besturingssysteem graaft om naar geluiden te zoeken. Het zoeken naar audio is behoorlijk zwaar en zelfs mijn apparaat (een Galaxy S3) leed, waardoor de hele software werd geblokkeerd. Een betere oplossing voor dit probleem zou zijn om multi-threading te gebruiken. Op deze manier kan de gebruiker tijdens het zoeken naar bestanden nog steeds spelen. Helaas, zoals u wellicht weet, heeft JavaScript geen multi-threading-mogelijkheden en kunt u niets doen om dat te veranderen. Een andere oplossing zou de loader tijdens dit proces kunnen tonen, maar deze aanpak faalde ook; het helemaal bevroor. Om deze reden heb ik ervoor gekozen de gebruikersinteractie volledig te blokkeren met een dialoog die alleen kan worden afgesloten met programmeren.

    Nu u volledig op de hoogte bent van de belangrijkste punten van deze pagina, kan ik de volledige bron vermelden:

            
    Terug

    Medialijst

    Update lijst

    Gemaakt door Aurelio De Rosa

    credits

    Updaten

    Zoeken naar audiobestanden, even geduld ...


    De spelerpagina

    De spelerpagina (player.html) heeft niet veel opwindende feiten om op te wijzen. Het is een set labels en koppelingen met bijgevoegde gebeurtenissen om het geluid te beheren. Het enige vermeldenswaardige element is de schuifregelaar die wordt gebruikt om de audio vooruit en achteruit te verplaatsen, gemaakt met de jQuery Mobile-schuifregelaar-widget.

    U kunt de code van de onderstaande pagina bekijken:

            
    Terug

    Speler

    Je luistert naar:

    Gevestigd in:

    gespeeld: van

    Gemaakt door Aurelio De Rosa

    credits

    De Credits-pagina

    De pagina aurelio.html is zeker de minst belangrijke, en het is ook heel simpel. Desalniettemin wil ik twee dingen noemen. De eerste is het gebruik van twee nieuwe HTML5-tags, 

    en
    . De
    element vertegenwoordigt een eenheid van inhoud, met een optionele bijschrift dat op zichzelf staat. Het beschreven bijschrift wordt verstrekt met behulp van het element
    . De 
      element vertegenwoordigt een component van een pagina die bestaat uit een zelfstandige compositie in een document, pagina, toepassing of site.

    De tweede is het gebruik van het attribuut target = "_ blank" die wordt toegepast op alle contactvermelding-koppelingen op de pagina. Dit kenmerk is heel gebruikelijk. In onze speler gebruiken we deze echter om een ​​handler aan alle externe links toe te voegen, zoals u in het volgende deel van deze serie zult leren.

    De hele code van aurelio.html wordt hieronder getoond:

          Aurelio De Rosa   
    Terug

    Aurelio De Rosa

    Foto van Aurelio De Rosa
    Aurelio De Rosa

    Ik ben een Italiaanse web- en app-ontwikkelaar met een bachelor in computerwetenschappen en meer dan 5 jaar programmeerervaring met HTML5, CSS3, JavaScript en PHP. Ik gebruik voornamelijk de LAMP-stack en frameworks zoals jQuery, jQuery Mobile, Cordova (PhoneGap) en Zend Framework. Mijn interesses zijn onder andere webbeveiliging, webtoegankelijkheid, SEO en WordPress.

    Ik ben momenteel zelfstandig, werk met de geciteerde technologieën en lever ook bijdragen aan het SitePoint- en Tuts + -netwerk, waar ik artikelen schrijf over de onderwerpen waarmee ik werk.

    Contacten

    • Website pictogram Bezoek mijn website: www.audero.it
    • E-mailpictogram Stuur me een e-mail: [email protected]
    • E-mailpictogram Stuur me een e-mail (alternatief adres): [email protected]
    • Twitter-pictogram Volg mij op Twitter (@AurelioDeRosa)
    • LinkedIn-pictogram Bekijk mijn profiel op LinkedIn
    • BitBucket-pictogram Bezoek mijn repository op BitBucket (AurelioDeRosa)

    Volgend deel

    In de tweede aflevering van deze serie gaan we dieper in op de bedrijfslogica van de app door te kijken naar de JavaScript-bestanden die onze speler van stroom voorzien.