SlideShare a Scribd company logo
1 of 10
Download to read offline
HTML5 приложения за Android
Урок 06
Леон Анави
@leonanavi
leon@anavi.org
С подкрепата на:
@leonanavi
Съдържание
 Cordova File плъгин
 Запис във файл
 Четене от файл
 Асинхронни заявки към сървър
@leonanavi
Cordova File Plugin
 Cordova плъгин за работа с файлове
 Базиран на HTML5 File API:
http://www.w3.org/TR/FileAPI/
 Работи за Android, iOS, BlackBerry 10, Windows Phone,
Firefox OS
 Инсталация към съществуващ Cordova проект:
cordova plugin add org.apache.cordova.file
 Документация:
http://plugins.cordova.io/#/package/org.apache.cordova.file
@leonanavi
Запис във файл
var app = {
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, app.gotFS, app.fail);
},
gotFS: function(fileSystem) {
fileSystem.root.getFile("note.txt", {create: true, exclusive: false}, app.gotFileEntry, app.fail);
},
gotFileEntry: function(fileEntry) {
fileEntry.createWriter(app.gotFileWriter, app.fail);
},
gotFileWriter: function(writer) {
writer.onwriteend = function(evt) {
console.log("File saved.");
};
writer.write('hello');
},
fail: function(error) {
console.log(error.code);
},
};
@leonanavi
Четене от файл
var app = {
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, app.gotFS, app.fail);
},
gotFS: function(fileSystem) {
fileSystem.root.getFile("note.txt", null, app.gotFileEntry, app.fail);
},
gotFileEntry: function(fileEntry) {
fileEntry.file(app.gotFile, app.fail);
},
gotFile: function(file){ app.readAsText(file); },
readAsText: function(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log(evt.target.result);
};
reader.readAsText(file);
},
fail: function(error) { console.log(error.code); },
};
@leonanavi
Hypertext Transfer Protocol (HTTP)
Icons from Flaticon under CC BY 3.0 licence
> GET / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: example.com
> Accept: */*
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: max-age=604800
< Content-Type: text/html
< Date: Wed, 25 Feb 2015 00:04:02 GMT
< Etag: "359670651"
< Expires: Wed, 04 Mar 2015 00:04:02 GMT
< Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
* * *
@leonanavi
Най-често срещани HTTP статуси
Icons from Flaticon under CC BY 3.0 licence
 200 OK
 301 Moved Permanently
 400 Bad Request
 401 Unauthorized
 403 Forbidden
 404 Not Found
@leonanavi
Асинхронна HTTP комуникация
чрез jQuery
$.ajax({url: "http://anavi.org/example/?name=John&age=20",
success: function(result){
var person = JSON.parse(result);
},
error: function(xhr){
alert("Error: " + xhr.status + " " + xhr.statusText);
}
});
За повече информация:
http://api.jquery.com/jquery.ajax/
@leonanavi
Упражнение
Да се напише програма за Android, която:
 Съдържа имената на участниците в курса
 При натискане на бутон генерира на случаен
принцип отбор от двама участника и пореден номер
на задача, по която да работят
 Визуализира отборите и номера на задачата за всеки
от тях
 Запазва в постоянната памет на телефона отборите и
задачите (чрез local storage, WebSQL, IndexedDB или
текстов файл)
@leonanavi
KEEP CALM
AND
SUPPORT
FOSS

More Related Content

Similar to HTML5 приложения за Android, урок 6

Web and WS based Embedded Systems
Web and WS based Embedded SystemsWeb and WS based Embedded Systems
Web and WS based Embedded SystemsNikolay Kakanakov
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернетeismail
 
Безопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриБезопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриSava Zahariev
 
HTML5 приложения за Android, урок 2
HTML5 приложения за Android, урок 2HTML5 приложения за Android, урок 2
HTML5 приложения за Android, урок 2Leon Anavi
 
HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1Leon Anavi
 
Drupal security lecture
Drupal security lectureDrupal security lecture
Drupal security lectureslide9991
 
The better PHP API (BG)
The better PHP API (BG)The better PHP API (BG)
The better PHP API (BG)boen_robot
 

Similar to HTML5 приложения за Android, урок 6 (14)

Web and WS based Embedded Systems
Web and WS based Embedded SystemsWeb and WS based Embedded Systems
Web and WS based Embedded Systems
 
PHP Security
PHP SecurityPHP Security
PHP Security
 
PHP Introduction
PHP IntroductionPHP Introduction
PHP Introduction
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернет
 
Безопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриБезопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъри
 
6Plus4u Web Pro Edu DVD
6Plus4u Web Pro Edu DVD6Plus4u Web Pro Edu DVD
6Plus4u Web Pro Edu DVD
 
HTML5 приложения за Android, урок 2
HTML5 приложения за Android, урок 2HTML5 приложения за Android, урок 2
HTML5 приложения за Android, урок 2
 
HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1
 
Drupal security lecture
Drupal security lectureDrupal security lecture
Drupal security lecture
 
Seo plovdiv 2011
Seo plovdiv 2011 Seo plovdiv 2011
Seo plovdiv 2011
 
B3 t3 cookies
B3 t3 cookiesB3 t3 cookies
B3 t3 cookies
 
B3 t3 cookies
B3 t3 cookiesB3 t3 cookies
B3 t3 cookies
 
Real time web - week2
Real time web - week2Real time web - week2
Real time web - week2
 
The better PHP API (BG)
The better PHP API (BG)The better PHP API (BG)
The better PHP API (BG)
 

More from Leon Anavi

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Leon Anavi
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Leon Anavi
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedLeon Anavi
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Leon Anavi
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLeon Anavi
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesLeon Anavi
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware MakersLeon Anavi
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareLeon Anavi
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureLeon Anavi
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Leon Anavi
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiLeon Anavi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiLeon Anavi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareLeon Anavi
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiLeon Anavi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxLeon Anavi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux DevicesLeon Anavi
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT BrokersLeon Anavi
 

More from Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 

HTML5 приложения за Android, урок 6

  • 1. HTML5 приложения за Android Урок 06 Леон Анави @leonanavi leon@anavi.org С подкрепата на:
  • 2. @leonanavi Съдържание  Cordova File плъгин  Запис във файл  Четене от файл  Асинхронни заявки към сървър
  • 3. @leonanavi Cordova File Plugin  Cordova плъгин за работа с файлове  Базиран на HTML5 File API: http://www.w3.org/TR/FileAPI/  Работи за Android, iOS, BlackBerry 10, Windows Phone, Firefox OS  Инсталация към съществуващ Cordova проект: cordova plugin add org.apache.cordova.file  Документация: http://plugins.cordova.io/#/package/org.apache.cordova.file
  • 4. @leonanavi Запис във файл var app = { bindEvents: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, onDeviceReady: function() { window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, app.gotFS, app.fail); }, gotFS: function(fileSystem) { fileSystem.root.getFile("note.txt", {create: true, exclusive: false}, app.gotFileEntry, app.fail); }, gotFileEntry: function(fileEntry) { fileEntry.createWriter(app.gotFileWriter, app.fail); }, gotFileWriter: function(writer) { writer.onwriteend = function(evt) { console.log("File saved."); }; writer.write('hello'); }, fail: function(error) { console.log(error.code); }, };
  • 5. @leonanavi Четене от файл var app = { initialize: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, onDeviceReady: function() { window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, app.gotFS, app.fail); }, gotFS: function(fileSystem) { fileSystem.root.getFile("note.txt", null, app.gotFileEntry, app.fail); }, gotFileEntry: function(fileEntry) { fileEntry.file(app.gotFile, app.fail); }, gotFile: function(file){ app.readAsText(file); }, readAsText: function(file) { var reader = new FileReader(); reader.onloadend = function(evt) { console.log(evt.target.result); }; reader.readAsText(file); }, fail: function(error) { console.log(error.code); }, };
  • 6. @leonanavi Hypertext Transfer Protocol (HTTP) Icons from Flaticon under CC BY 3.0 licence > GET / HTTP/1.1 > User-Agent: curl/7.37.1 > Host: example.com > Accept: */* < HTTP/1.1 200 OK < Accept-Ranges: bytes < Cache-Control: max-age=604800 < Content-Type: text/html < Date: Wed, 25 Feb 2015 00:04:02 GMT < Etag: "359670651" < Expires: Wed, 04 Mar 2015 00:04:02 GMT < Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT * * *
  • 7. @leonanavi Най-често срещани HTTP статуси Icons from Flaticon under CC BY 3.0 licence  200 OK  301 Moved Permanently  400 Bad Request  401 Unauthorized  403 Forbidden  404 Not Found
  • 8. @leonanavi Асинхронна HTTP комуникация чрез jQuery $.ajax({url: "http://anavi.org/example/?name=John&age=20", success: function(result){ var person = JSON.parse(result); }, error: function(xhr){ alert("Error: " + xhr.status + " " + xhr.statusText); } }); За повече информация: http://api.jquery.com/jquery.ajax/
  • 9. @leonanavi Упражнение Да се напише програма за Android, която:  Съдържа имената на участниците в курса  При натискане на бутон генерира на случаен принцип отбор от двама участника и пореден номер на задача, по която да работят  Визуализира отборите и номера на задачата за всеки от тях  Запазва в постоянната памет на телефона отборите и задачите (чрез local storage, WebSQL, IndexedDB или текстов файл)