构建后PhoneGap相机无法正常工作 - Android

时间:2012-11-09 18:51:21

标签: javascript android jquery cordova jquery-mobile

我一直在制作一个使用phonegap来使用相机的应用程序。当我通过eclipse通过我的设备测试应用程序时,应用程序启动,一切都在我的手机上运行良好。

一旦我运行phoneGap构建服务并下载并测试应用程序,一切都很有效,除了点击捕获照片或从图书馆获取没有做任何事情。任何想法为什么它会在构建之前工作,而不是在它之后?

删除了代码

2 个答案:

答案 0 :(得分:2)

克林特,

首先,为什么:我怀疑你看到Phonegap的实际构建包与Eclipse的结果之间存在差异的原因是你的本地构建将会更慢" (由于包中的调试信息,或者因为来自eclipse的adb进程而在Android设备上的额外权重...等)因此在JS线程试图通过jQuery寻找这些元素之前给出了DOM时间。

当你解决问题时,正确的方法"处理这个问题就是将你的外部var定义保持在它们的位置......

// buttons for capturing and browsing for photo and uploading
        var capture_btn;   //     = $('#capture');     \
        var getImg_btn;    //     = $('#getImg');       >  do these later.
        var uploadImg_btn; //     = $('#uploadImg');   /

然后......

function onDeviceReady() {
    // now allocate DOM to buttons
        capture_btn    = $('#capture');    //
        getImg_btn     = $('#getImg');     // 'var'less, to keep in global scope
        uploadImg_btn  = $('#uploadImg');  //
    // rest of deviceReady as already written

你显然已经#34;让它运转了#34; (YAY!)但希望这解释了(更详细一点)为什么你会看到实时APK和本地调试之间的不同结果,这个更全面的答案将在未来帮助其他人...... :)

-TTFN和快乐的黑客,

Dx:)

答案 1 :(得分:1)

原来答案很简单。我在DOM加载它们之前调用了相机函数的变量。

// buttons for capturing and browsing for photo and uploading
        var capture_btn    = $('#capture');
        var getImg_btn     = $('#getImg');
        var uploadImg_btn  = $('#uploadImg');

所以它甚至都没有注册点击次数。奇怪的是,它在通过eclipse进行测试时起作用。

我将所有相机控件添加到deviceready事件和中提琴中。它可以正常工作。