1

編集:

現在これを見ている人のために、私たちは問題を解決しました。説明と考えられる解決策については、この質問この質問に対する私の回答を参照してください。


わかりました、私はこれを理解したと思っていましたが、そうではありませんでした。

Android でカメラを起動すると、何が起こるかは通常です。写真を撮ると、メモリ要件により、システムはカメラを起動したアプリを強制終了します。私の問題は、アプリが強制終了された後、最近キャプチャした画像の URI を取得できないことです。私の検索では、ネイティブの Android アプリについては多くの解決策を見てきましたが、Phonegap については何もありませんでした。

これは、カメラが開始されるページが、アクティビティがデフォルトで読み込まれるページではないという事実によってさらに複雑になります。アプリが再起動すると、画像データの URI が必要なページではなく、このアプリのログイン ページで再起動する必要があります。

アプリが死ぬ前に最後のページを保存し、起動時にそれを思い出すようにしました。これで問題は解決すると思いましたが、カメラのコールバックはまだ呼び出されません。これはおそらく、同じページに戻っているにもかかわらず、そのページの別のインスタンスに戻っているためです。

私がこれまでに持っているものをお見せしましょう。

カメラを呼び出すコードは次のとおりです。

    function capturePhoto(){
        navigator.camera.getPicture(onPhotoURISuccess, onFail,
            { quality: 20, destinationType: Camera.DestinationType.FILE_URI } );
    };

    function onPhotoURISuccess(imageURI) {
        //Do some stuff with the image, like save the URI in localStorage
    }

かなり基本的で、特別なことは何もありません。onPhotoURISuccess() が呼び出されないだけです。最後のページを保存してリロードする方法は次のとおりです。これはすべて、DroidGap アクティビティで Java で行われます。

    //Save the last page that the user was on
    @Override
    public void onSaveInstanceState(Bundle savedState) {
        super.onSaveInstanceState(savedState);

        savedState.putString("lastPage", appView.getUrl());
    }

    //Recall the page
    @Override
    public void onCreate(Bundle savedState) {
        super.onCreate(savedState);

        //The default page is the login page
        String pageToLoad = "file:///android_asset/www/login.html";

        if(savedState != null && savedState.containsKey("lastPage")) {
            pageToLoad = savedState.getString("lastPage");
        }

        super.loadUrl(pageToLoad);
    }

したがって、これまでの私の考えでは、DroidGap アクティビティでカメラから onActivityResult を何らかの方法で取得することでしたが、それがどのように機能するかはわかりません。可能な限りクロスプラットフォームのコード。

もう 1 つの考えは、Phonegap から、アプリケーションのディレクトリに関連して、画像を保存する場所をカメラに伝えることです。次に、写真が必要なページは、指定されたディレクトリにある写真を取得するだけです。しかし、私はこれを行う方法を見つけることができませんでした。

検索で何かを見落としていたら申し訳ありません。これは繰り返しの質問です。ご協力いただきありがとうございます。

4

1 に答える 1

0

これを見ている人のために、私たちはそれ以来問題を解決しました。説明と可能な解決策については、この質問とこの質問に対する私の回答を参照してください。

于 2012-12-12T22:54:37.833 に答える