Articles of cordova

使用Phonegap离线显示和导航大型自定义地图

我的问题是如何在离线Phonegap应用程序中有效地显示大型自定义地图,允许它们在仍然支持旧移动设备的同时平滑地进行平移和缩放? 我正在开发一个移动应用程序,该应用程序涉及使用地理位置来导航偏远地区的步行路线,在那里用户可能没有信号,因此也没有互联网连接。 重要的是该应用程序适用于Android 2.2+(因此SVG不是一个选项)以及iOS4 +。 我使用Adobe Illustrator以适合每条路线的分辨率绘制自定义矢量地图,平均值约为2000×2000像素,其中最大的一个到目前为止导致图像为4000×2400像素。 我之所以选择使用Phonegap / JQM而不是本机只是因为我来自网络编程背景,它似乎是最快的方式来启动和运行用户界面,而无需深入研究本机代码,尽管我已经为了电源和屏幕管理的目的,使用本机代码编写了几个Phonegap插件。 应用程序需要允许用户在地图上平移(通过拖动)和放大/缩小(通过捏合)原始图像大小的大约25%到200%。 我所做的大部分测试都是运行Android 2.3.3的HTC Desire和运行Android 2.2的HTC Wildfire,因为这些可能是应用程序必须运行的最低规格设备。 我已经尝试了各种方法来显示地图(详见下文),但到目前为止,每个方法都被certificate不适合用途,因为应用程序的内存使用量太大,所需的存储空间使应用程序太大而无法下载或CPU使用过于密集,导致平移/缩放时出现延迟。 任何建议非常感谢。 提前致谢。 我试过的方法: 1.使用标记将地图显示为栅格PNG 这是我尝试的第一种方法。 将Illustrator中的4000×2400像素图像导出为128色PNG-8,得到746Kb文件。 我通过相对于视口绝对定位图像来平移图像,并通过缩放标记的宽度/高度属性来缩放图像。 这种方法的问题在于,即使在1:1的缩放级别,Android应用程序也使用60Mb的RAM用于图像,并且放大到200%导致这增加120Mb,导致应用程序在HTC Wildfire上崩溃。 2.使用HTML5canvas显示光栅PNG的部分 为了避免放大导致内存使用量成比例增加的问题,我尝试通过JS加载图像,然后将要显示的图像部分复制到视口大小的canvas,如: var canvas = $(‘canvas#mycanvas’); canvas.width = $(window).width; canvas.height = $(window).height; … var img = new Image(); img.src = “map.png”; … var context = canvas[0].getContext(“2d”); context.drawImage(img, x, y, […]

在android 7.0中使用cordova发送短信时的安全例外

我试图通过添加corodova发送sms插件从使用短信管理器的设备发送短信。这个应用程序工作正常,直到android6.0设备它发送短信也,但当我试图从android7.0发送短信时,它显示我以下安全例外。在发送短信之前,它要求获得许可,我也同意了。 例外: java.lang.SecurityException: at android.os.Parcel.readException(Parcel.java:1683) at android.os.Parcel.readException(Parcel.java:1636) at com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy.getGroupIdLevel1(IPhoneSubInfo.java:583) at android.telephony.TelephonyManager.getGroupIdLevel1(TelephonyManager.java:2163) at android.telephony.SmsMessage.hasEmsSupport(SmsMessage.java:854) at com.android.internal.telephony.SmsMessageBase.calcUnicodeEncodingDetails(SmsMessageBase.java:409) at com.android.internal.telephony.gsm.SmsMessage.calculateLength(SmsMessage.java:796) at android.telephony.SmsMessage.fragmentText(SmsMessage.java:354) at android.telephony.SmsManager.divideMessage(SmsManager.java:450) at com.cordova.plugins.sms.Sms.send(Sms.java:143) at com.cordova.plugins.sms.Sms.access$400(Sms.java:22) at com.cordova.plugins.sms.Sms$1.run(Sms.java:102) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) 发送短信的代码: var smsdata = ‘ தேதி: ‘ + this.currentbilldate + ‘ பில் எண்: ‘ + this.save_details.vehicle_bill_no + ‘ எடுக்கப்பட்ட பொருட்களின் விவரங்கள்: ‘ […]

在Phonegap android上清除用户数据或清除缓存

如何使用PhoneGap和Android清除用户数据或清除缓存? 下面的代码不起作用。 我应该在哪里进行更改; 在HTML方面还是在Java方面? 此外,我正在访问一个AJAX请求,并且在第二次尝试PUT方法时,数据不会更新,因此我的主要疑问是Android存储的用户数据。 我在我的AJAX请求中添加了cache: false以确保它不存储缓存。 但它仍然无效。 有想法该怎么解决这个吗? 我有这个代码来自另一个问题。 public static void deleteCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) {} } public static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for […]

使用phonegap进行Android的签名捕获

我想在android中使用phonegap执行一个应用程序,它捕获用户输入的签名并拍摄它的快照并存储,然后在下次登录时将签名与存储的签名进行比较,如果匹配则打开应用程序。任何人都可以帮助我用一些好的链接或例子来实现这一点?一些有用的例子非常有用。 谢谢。

无法在inAppBrowser中的phonegap中捕获“document。(…).tagName”

我通过注入的javascript(又名inappbrowser回调)在打开的浏览器中打开并执行此函数。 该function有效,因为我看到了警报。 通过window.open(…)打开inappbrowser: var f_el_tname = document.body.getElementsByTagName(“the_tag”)[0]; //the above alerted “undefined” in android browser and the correct value in the desktop //rewriting variable for debug purposes f_el_tname = document.body.getElementsByTagName(“the_tag”); alert(f_el_tname.length); //this gives “0” in phonegap android browser and “1” in desktop (correct) for(var i = 0; i < f_el_tname.size; i++){ alert(f_el_tname); //this does not even […]

如何从phonegap中的图库中选择video?

请帮助我任何人如何只选择在android和iOS中的图库中的video我在线索我试过这个点击这里从媒体中选择video,但它不适合我… var pictureSource; var destinationType; var mediaType; document.addEventListener(“deviceready”, onDeviceReady, false); function onDeviceReady() { pictureSource = navigator.camera.PictureSourceType; destinationType = navigator.camera.DestinationType; mediaType = navigator.camera.MediaType; } navigator.camera.getPicture(onPhotoURISuccess, onFail, { destinationType: destinationType.FILE_URI, mediaType: mediaType.VIDEO, sourceType: source }); function onPhotoURISuccess(imageURI) { console.log(imageURI); } function onFail(message) { console.log(message); } 我使用相同的代码在我的应用程序中实现,但它不能来….

使用apache cordova构建android应用程序时出错

我已经在linux薄荷17.1 xfce,jdk和android上安装了cordova,npm还可以,我可以创建新的cordova应用程序并添加android平台: cordova创建… cordova平台添加android .. 但是当我想构建android时我得到一个错误:cordova build … Running command: /home/nasser/Desktop/app/app01/platforms/android/cordova/build ANDROID_HOME=/home/nasser/android/sdk JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386 Running: /home/nasser/Desktop/app/app01/platforms/android/gradlew cdvBuildDebug -b /home/nasser/Desktop/app/app01/platforms/android/build.gradle -Dorg.gradle.daemon=true FAILURE: Build failed with an exception. * Where: Script ‘/home/nasser/Desktop/app/app01/platforms/android/CordovaLib/cordova.gradle’ line: 64 * What went wrong: A problem occurred evaluating root project ‘android’. > No installed build tools found. Please install the Android build tools version […]

build.phonegap写入文件的问题

我正在尝试通过应在iOS和Android上运行的在线构建服务构建PhoneGap应用程序,但这个问题主要集中在Android部分。 该应用程序的主要目标是能够访问和修改文件系统。 受到Raymond Camden博客文章的启发,我最终编写了一个与他非常相似的示例应用程序,它以读/写权限访问文件系统。 主要区别在于我的应用程序是在线构建的,没有安装任何SDK,也没有关心任何androidManifes.xml文件。 我的问题是我能够访问文件系统(列表目录,读取文件),但我无法在其上写任何内容。 我在confix.xml中包含了必要的标记,以获得文件访问权限: 以下是我的应用程序中使用的一些示例代码: 读取文件代码: // Request fileSystem fileSystem.root.getFile(fileName, {create:true}, readFile, onError); // Function that reads a file function readFile(file){ var reader = new FileReader(); reader.onloadend = function(e) { console.log(“contents: “, e.target.result); } reader.readAsText(file); } 写/附加文件代码: fileSystem.root.getFile(fileName, {create:true}, function(file){ file.createWriter(function(writer) { writer.onwrite = function() { console.log(‘writing’, arguments); } writer.onerror = function(e) […]

cordova要求问题,没有安装android目标

我正在尝试在Windows 7上安装Cordova。我正在关注本教程: https : //www.tutorialspoint.com/cordova/cordova_first_application.htm 当我运行cordova要求时 ,它表示没有安装android目标并设置ANDROID_HOME环境variables I:\CordovaProject\hello>cordova requirements Requirements check results for android: Java JDK: installed 1.8.0 Android SDK: installed true Android target: not installed Android SDK not found. Make sure that it is installed. If it is not at the default location, set the ANDROID_HOME environment variable. Gradle: installed Error: Some of requirements […]

如何使用cli在cordova中添加facebook插件

我正在使用cordova 3.3.0 cli。我find了用于eclipse / xcode项目的手动安装文档。 还有我们在config.xml中做的phonegap构建的文档。我只想安装Facebook插件到我的cordova项目,我正在通过cordova CLI构建 更新 :我从问题中解决了。谢谢Kal的帮助。 我为它写了一个完整的教程。 我的Facebook插件教程