1

現在、単純に写真をキャプチャして、カメラを閉じた直後に、その写真を HTML 画像のソースとして追加しようとしています。しかし、次のエラーが発生し続けます。

09-09 19:16:07.764: E/System(10719): Uncaught exception thrown by finalizer
09-09 19:16:07.780: D/dalvikvm(10719): GC_CONCURRENT freed <1K, 10% free 19133K/21127K, paused 1ms+2ms
09-09 19:16:07.788: E/System(10719): java.lang.IllegalStateException: Binder has been finalized!
09-09 19:16:07.788: E/System(10719):    at android.os.BinderProxy.transact(Native Method)
09-09 19:16:07.788: E/System(10719):    at android.database.BulkCursorProxy.close(BulkCursorNative.java:288)
09-09 19:16:07.788: E/System(10719):    at android.database.BulkCursorToCursorAdaptor.close(BulkCursorToCursorAdaptor.java:133)
09-09 19:16:07.788: E/System(10719):    at android.database.CursorWrapper.close(CursorWrapper.java:49)
09-09 19:16:07.788: E/System(10719):    at android.content.ContentResolver$CursorWrapperInner.close(ContentResolver.java:1591)
09-09 19:16:07.788: E/System(10719):    at android.content.ContentResolver$CursorWrapperInner.finalize(ContentResolver.java:1604)
09-09 19:16:07.788: E/System(10719):    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
09-09 19:16:07.788: E/System(10719):    at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
09-09 19:16:07.788: E/System(10719):    at java.lang.Thread.run(Thread.java:856)
09-09 19:16:08.585: D/dalvikvm(10719): GC_EXPLICIT freed 12354K, 68% free 6804K/21127K, paused 2ms+3ms
09-09 19:16:08.585: E/System(10719): Uncaught exception thrown by finalizer
09-09 19:16:08.585: E/System(10719): java.lang.IllegalStateException: Binder has been finalized!
09-09 19:16:08.585: E/System(10719):    at android.os.BinderProxy.transact(Native Method)
09-09 19:16:08.585: E/System(10719):    at android.database.BulkCursorProxy.close(BulkCursorNative.java:288)
09-09 19:16:08.585: E/System(10719):    at android.database.BulkCursorToCursorAdaptor.close(BulkCursorToCursorAdaptor.java:133)
09-09 19:16:08.585: E/System(10719):    at android.database.CursorWrapper.close(CursorWrapper.java:49)
09-09 19:16:08.585: E/System(10719):    at android.content.ContentResolver$CursorWrapperInner.close(ContentResolver.java:1591)
09-09 19:16:08.585: E/System(10719):    at android.content.ContentResolver$CursorWrapperInner.finalize(ContentResolver.java:1604)
09-09 19:16:08.585: E/System(10719):    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
09-09 19:16:08.585: E/System(10719):    at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
09-09 19:16:08.585: E/System(10719):    at java.lang.Thread.run(Thread.java:856)
09-09 19:16:08.585: D/DroidGap(10719): Resuming the App

現在、Android 4.0.3 と Cordova 2.3.0 を使用しています。現在、次のコードがあります。

HTML

<button onclick="capturePhoto();">Take Photo</button>
<img id="cameraPic" src="" style="width:auto;height:120px;"></img>

JavaScript

var pictureSource; 
var destinationType;

 function onDeviceReady() {
        pictureSource=navigator.camera.PictureSourceType;
        destinationType=navigator.camera.DestinationType;
    }


function capturePhoto(){
    navigator.camera.getPicture(uploadPhoto,null,{ quality: 20, allowEdit: true,
        destinationType: destinationType.DATA_URL });
};

function uploadPhoto(data){
// this is where you would send the image file to server
//output image to screen
    $("#cameraPic").src = "data:image/jpeg;base64," + data;
}

なぜこのエラーが発生するのか、本当にわかりません。どんな助けでも本当に感謝します。

私の config.xml ファイルには、次の権限があります。

<plugin name="Camera" value="org.apache.cordova.CameraLauncher"/>

そして、私のAndroidマニフェストには次のものがあります:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
4

2 に答える 2

2

次のコードで試してください。PhoneGap イベント リスナーを使用して onDeviceReady 関数を呼び出していないと思います。

    var pictureSource;   // picture source
    var destinationType; // sets the format of returned value

    document.addEventListener("deviceready",onDeviceReady,false);

    function onDeviceReady() {
        pictureSource=navigator.camera.PictureSourceType;
        destinationType=navigator.camera.DestinationType;
    }

    function capturePhoto() {
          navigator.camera.getPicture(uploadPhoto, uploadFail, { quality: 20, allowEdit: true,
            destinationType: destinationType.DATA_URL });
    }

    function uploadPhoto(data){
        $("#cameraPic").src = "data:image/jpeg;base64," + data;
    }

    function uploadFail(error) {
        alert('Failed because: ' + error);
    }
于 2013-09-10T08:25:00.383 に答える