Html代码 复制代码 代码如下: <linkrel="stylesheet"media="screen and (-webkit-device-pixel-ratio: 1.5)"href="hdpi.css"/> <linkrel="stylesheet"media="screen and (-webkit-device-pixel-ratio: 1.0)"href="mdpi.css"/> <linkrel="stylesheet"media="screen and (-webkit-device-pixel-ratio: 0.75)"href="ldpi.css"/>
WebStorage的API: Js代码 复制代码 代码如下: //清空storage localStorage.clear(); //设置一个键值 localStorage.setItem(“yarin”,“yangfegnsheng”); //获取一个键值 localStorage.getItem(“yarin”); //获取指定下标的键的名称(如同Array) localStorage.key(0); //return “fresh” //删除一个键值 localStorage.removeItem(“yarin”); 注意一定要在设置中开启哦 setDomStorageEnabled(true) 在Android中进行操作 Java代码 //启用数据库 webSettings.setDatabaseEnabled(true); String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); //设置数据库路径 webSettings.setDatabasePath(dir); //使用localStorage则必须打开 webSettings.setDomStorageEnabled(true); //扩充数据库的容量(在WebChromeClinet中实现) publicvoid onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { quotaUpdater.updateQuota(estimatedSize * 2); } 在JS中按常规进行数据库操作 Js代码 function initDatabase() { try { if (!window.openDatabase) { alert("Databases are not supported by your browser"); } else { var shortName = "YARINDB"; var version = "1.0"; var displayName = "yarin db"; var maxSize = 100000; // in bytes YARINDB = openDatabase(shortName, version, displayName, maxSize); createTables(); selectAll(); } } catch(e) { if (e == 2) { // Version mismatch. console.log("Invalid database version."); } else { console.log("Unknown error "+ e +"."); } return; } } function createTables(){ YARINDB.transaction( function (transaction) { transaction.executeSql("CREATE TABLE IF NOT EXISTS yarin(id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL,desc TEXT NOT NULL);", [], nullDataHandler, errorHandler); } ); insertData(); } function insertData(){ YARINDB.transaction( function (transaction) { //Starter data when page is initialized var data = ["1","yarin yang","I am yarin"]; transaction.executeSql("INSERT INTO yarin(id, name, desc) VALUES (?, ?, ?)", [data[0], data[1], data[2]]); } ); } function errorHandler(transaction, error){ if (error.code==1){ // DB Table already exists } else { // Error is a human-readable string. console.log("Oops. Error was "+error.message+" (Code "+error.code+")"); } returnfalse; }
function nullDataHandler(){ console.log("SQL Query Succeeded"); } function selectAll(){ YARINDB.transaction( function (transaction) { transaction.executeSql("SELECT * FROM yarin;", [], dataSelectHandler, errorHandler); } ); } function dataSelectHandler(transaction, results){ // Handle the results for (var i=0; i<results.rows.length; i++) { var row = results.rows.item(i); var newFeature = new Object(); newFeature.name = row["name"]; newFeature.decs = row["desc"]; document.getElementByIdx_x_x_x("name").innerHTML="name:"+newFeature.name; document.getElementByIdx_x_x_x("desc").innerHTML="desc:"+newFeature.decs; } } function updateData(){ YARINDB.transaction( function (transaction) { var data = ["fengsheng yang","I am fengsheng"]; transaction.executeSql("UPDATE yarin SET name=?, desc=? WHERE id = 1", [data[0], data[1]]); } ); selectAll(); } function ddeleteTables(){ YARINDB.transaction( function (transaction) { transaction.executeSql("DROP TABLE yarin;", [], nullDataHandler, errorHandler); } ); console.log("Table "page_settings" has been dropped."); }
注意onLoad中的初始化工作 复制代码 代码如下: function initLocalStorage(){ if (window.localStorage) { textarea.addEventListener("keyup", function() { window.localStorage["value"] = this.value; window.localStorage["time"] = new Date().getTime(); }, false); } else { alert("LocalStorage are not supported in this browser."); } } window.onload = function() { initDatabase(); initLocalStorage(); }
HTML5地理位置服务在Android中的应用 Android中Java代码 复制代码 代码如下: //启用地理定位 webSettings.setGeolocationEnabled(true); //设置定位的数据库路径 webSettings.setGeolocationDatabasePath(dir); //配置权限(同样在WebChromeClient中实现) publicvoid onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { callback.invoke(origin, true, false); super.onGeolocationPermissionsShowPrompt(origin, callback); } 在Manifest中添加权限 Xml代码 <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/> HTML5中 通过navigator.geolocation对象获取地理位置信息 常用的navigator.geolocation对象有以下三种方法: Js代码 //获取当前地理位置 navigator.geolocation.getCurrentPosition(success_callback_function, error_callback_function, position_options) //持续获取地理位置 navigator.geolocation.watchPosition(success_callback_function, error_callback_function, position_options) //清除持续获取地理位置事件 navigator.geolocation.clearWatch(watch_position_id) 其中success_callback_function为成功之后处理的函数,error_callback_function为失败之后返回的处理函数,参数position_options是配置项 在JS中的代码Js代码 //定位 function get_location() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(show_map,handle_error,{enableHighAccuracy:false,maximumAge:1000,timeout:15000}); } else { alert("Your browser does not support HTML5 geoLocation"); } } function show_map(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; var city = position.coords.city; //telnet localhost 5554 //geo fix -82.411629 28.054553 //geo fix -121.45356 46.51119 4392 //geo nmea $GPGGA,001431.092,0118.2653,N,10351.1359,E,0,00,,-19.6,M,4.1,M,,0000*5B document.getElementByIdx_x_x_x("Latitude").innerHTML="latitude:"+latitude; document.getElementByIdx_x_x_x("Longitude").innerHTML="longitude:"+longitude; document.getElementByIdx_x_x_x("City").innerHTML="city:"+city; } function handle_error(err) { switch (err.code) { case 1: alert("permission denied"); break; case 2: alert("the network is down or the position satellites can"t be contacted"); break; case 3: alert("time out"); break; default: alert("unknown error"); break; } }