編集:
現在これを見ている人のために、私たちは問題を解決しました。説明と考えられる解決策については、この質問とこの質問に対する私の回答を参照してください。
わかりました、私はこれを理解したと思っていましたが、そうではありませんでした。
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 から、アプリケーションのディレクトリに関連して、画像を保存する場所をカメラに伝えることです。次に、写真が必要なページは、指定されたディレクトリにある写真を取得するだけです。しかし、私はこれを行う方法を見つけることができませんでした。
検索で何かを見落としていたら申し訳ありません。これは繰り返しの質問です。ご協力いただきありがとうございます。