2013-11-02 23 views
9

私はphonegapアプリを開発しています。それにカメラを使う。数日前に働いていました。私はここ数日で多くの変更を行いましたが、現在はカメラが正しく動作していません。それはカメラを開きますが、私が写真を撮ると、カメラアプリからです。 OKを押すと、アプリを再起動します。phonegapアプリのカメラ。アプリを再起動する

どうしているのか分かりません。私は実際に私のphonegapアプリから再起動できるかどうかを理解することができません。 JSコードまたはそれは、アンドロイドJavaコードから再起動することができます。

私はカメラにこのコードを使用しています:

function takePhoto() { 
navigator.camera.getPicture(onCameraPicSuccess, onCameraPicFail, {quality: 50, 
    destinationType: Camera.DestinationType.FILE_URI 
}); 

function onCameraPicSuccess(imageURI) { 
    alert("coming here in pic success"); 
    var img = '<div style="padding:4px; margin:10px; border: solid 2px #666;float: left; width:30%"><img src="' + imageURI + '" width="100%" /></div>'; 
    $('#images_area').append(img); 
} 

function onCameraPicFail(message) { 
    alert('Failed because: ' + message); 
} 

だから、任意のアイデア、なぜアプリという。カメラアプリを使用して再起動します。上記のコードを介して?私のJSコードはスプラッシュ画面を持っていませんが、私のJavaコードはそれを持っています。カメラのOKボタンを押すと、アプリが見えます。しばらくの間は結合していない。

何が起こっているのかは分かりません。皆さんがこのような経験やアイデアを持っていたら、自由に共有してください。

もっと知りたいことがいくつかある場合は、それから私に知らせてください。


はstackoverflow.com上のいくつかのより多くの検索を行った後、私は、Androidアプリを殺すように、その問題は、アンドロイドである知っているようになりました。メモリが少ない場合はバックグラウンドで実行します。だからメモリを解放する必要があります。しかし、私が気づいたのは、JQuery Mobile Formsを使用していたときにアプリケーションが正常に動作していたことです。しかし、私はそれをカスタムに変更した後、このカメラの問題が表示されます。したがって、これがメモリ関連の問題である場合、jqueryモバイルフォームを削除してカスタム作業を行う理由がなぜ発生したのでしょうか。実際、アプリケーションはカスタム作業でさらにスムーズです。だから私はそれがメモリ関連の問題であろうと何か他のものであると混同していますか?そして、このタイプのアプリに取り組む方法。 phonegapで開発されました。

答えて

4

PhoneGapのカメラのAPIは、あなたがここでそれを読んでください

navigator.camera.getPicture 

を使用するときにカメラアプリケーションを起動する - 場合は殺されてhttp://docs.phonegap.com/en/edge/cordova_camera_camera.md.html#Camera

これはバックグラウンドにアプリケーションをプッシュし、それはあなたのアプリケーションにつながる可能性があります十分なメモリではありません。

カメラの起動中にアプリケーションをバックグラウンドにしたくない場合は、フォアグラウンドカメラプラグインを使用する必要があります。それを見てくださいhere

あなたの要件に合わせて変更する必要があるかもしれません。

+0

しかし、その方法ではおそらくiOS用のプラグインが必要になるでしょうか? – Hafiz

+0

+1私に別の方法を示しても、まだテストできませんでしたので、あなたに試してみましょう – Hafiz

+0

このプラグインをプロジェクトページに記載されているようにプロジェクトに組み込んだら、コンパイルと作成ができません – Hafiz

1

メモリ関連の問題になる可能性があります。アプリケーションマニフェストファイルにandroid:largeHeap="true"を設定することにより、アプリケーションのヒープサイズを増やすことができます。

+0

なしに動作しませんでした違いは、カメラを使用して、それはアプリを再起動、同じ問題があります。撮影後にOKボタンを押してください。 – Hafiz

0

アンドロイドメニエストファイルでは、アクティビティのlaunchmodeを "singleTask"または "singleInstance"に設定しました。
あなたのapplictionが複数の時間に活動を開始するかもしれません。

+0

はsingleTaskとsingleInstanceの両方を試しましたが解決策を得られませんでした – Hafiz

0

これは実際にはphonegapとは関係ありませんが、アンドロイドの活動については説明しています。彼は、前景カメラプラグインと呼ばれるプラグインを使用することを提案します。

PhoneGap camera restarts the application

1

あなたは全体のカスタムフォアグラウンドカメラを作成する必要はありません、あなただけではなく、新しいインスタンスを開始する古い意図を取得する積極的なガベージコレクタを指定する必要があります。カメラのプラグインの中に保存された意図にフラグを設定してみてください:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

ここに私の記事を参照してください:https://stackoverflow.com/a/29630548/2782404

さらに、ヒープサイズを大きくし、singleTask/singleInstanceを使用すると、私のため

関連する問題