0

phonegapを使ってカメラを活用するアプリを作っています。eclipse を介してデバイスからアプリをテストすると、アプリが起動し、携帯電話ですべてがうまく機能します。

phoneGap ビルド サービスを実行し、アプリをダウンロードしてテストすると、写真のキャプチャまたはライブラリからの取得をクリックしても何も起こらないことを除いて、すべてがうまく機能します。ビルド前に機能するのに、ビルド後に機能しない理由はありますか?

コードが削除されました

4

2 に答える 2

2

クリント、

まず、理由:Phonegapの実際のビルドパッケージとEclipseの結果に違いが見られた理由は、ローカルビルドが「遅くなる」ためだと思います(パッケージ内のデバッグ情報、またはeclipseからのadbプロセスのためにandroidデバイス...など)したがって、これは、JSスレッドがjQueryを介してこれらの要素をシークしようとする前にDOMが完了する時間を与えています。

あなたが解決したように、これを処理するための「正しい方法」は、外部変数定義をそれらが存在する場所に保持することです...

// 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

あなたは明らかに「うまくいった」(YAY!)が、うまくいけば、これがライブAPKとローカルdebugbuildの間で異なる結果が見られた理由を(もう少し詳しく説明して)説明し、このより完全な答えは将来他の人を助けるでしょう...: )。

-TTFNとハッピーハッキング、

Dx :)

于 2012-11-15T10:27:03.413 に答える
1

答えは簡単でした。カメラ関数の変数は、DOM がロードする前に呼び出されました。

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

そのため、クリックを登録することさえありませんでした。奇妙な部分は、日食を介してテストするときに機能したことです。

すべてのカメラ コントロールを deviceready イベントと viola に追加しました。正常に動作します。

于 2012-11-14T16:43:40.970 に答える