質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

受付中

cameraAPIで撮影した画像をPERSISTENTに移動させたい(Monaca)

agepan
agepan

総合スコア0

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0回答

0評価

1クリップ

1422閲覧

投稿2017/08/15 07:14

現在Monacaを利用して、cameraAPIとその撮影データをPERSISTENT領域に保存させる方法を勉強・模索しております。サンプルアプリのコードや他のページで紹介されていたコードを組み合わて調整をしたりすることで、iPhoneでカメラ起動・撮影・アプリ上に表示するところまではできましたが、2枚目以降撮影しても、最初の1枚目の写真が繰り返し表示されてしまう状況です。

今現在のコードで撮影画像がPERSISTENT領域にちゃんと保存されているかもよく分からないのですが、ひとまず複数撮影しても最初の1枚だけが繰り返し表示されてしまう問題箇所が分かればと思い、質問させていただきます。

ちなみに、コード中の「// ■■■ 撮影画像をPERSISTENTへ移動させる ■■■」より下のコードを削除すると、複数枚撮影しても正しく複数枚表示されるようになりますので、このあたりが原因ではないかと見ています。

コードを添付しますので、もし何かお分かりの方いらっしゃいましたらお知恵拝借できたらと思います。
よろしくお願いいたします。

// ■■■ ページ上のボタンをクリックしてカメラ起動 ■■■ function addTodoPicture\(\) { navigator\.camera\.getPicture\( /\*カメラ起動成功時はaddTodo実行、キャンセル時はアラート、3番目はセッティング情報\*/ addTodo, function\(\) { alert\("撮影をキャンセルしました"\); }, { quality : 50, destinationType : Camera\.DestinationType\.FILE_URI, } \); } // ■■■ 撮影した画像をページ上に表示 ■■■ function addTodo\(camera_url\) { //camera_urlで撮影した画像のパスを取得? var title = \$\("#todo-title"\)\.val\(\); var body = \$\("#todo-body"\)\.val\(\); var img_tag = ""; if \(camera_url\) { img_tag = "<img src='" \+ camera_url \+ "'>"; } \$\.mobile\.changePage\(\$\("#list-page"\)\); \$\("#todo-list"\)\.append\(img_tag\) \$\("#todo-list"\)\.listview\('refresh'\); getFileEntry\(camera_url\); }; // ■■■ 撮影画像をPERSISTENTへ移動させる ■■■ function getFileEntry\(camera_url\) { window\.resolveLocalFileSystemURL\(camera_url, function success\(fileEntry\) { // Do something with the FileEntry object, like write to it, upload it, etc\. // writeFile\(fileEntry, camera_url\); alert\("got file: " \+ fileEntry\.fullPath\); // displayFileData\(fileEntry\.nativeURL, "Native URL"\); moveToPersistent\(fileEntry\); //moveToPersistentを実行してPersistentへデータを移動 }, function \(\) { // 有効な FileEntry オブジェクトを取得できなかった場合、アプリ側の createNewFileEntry を呼び出す createNewFileEntry\(camera_url\); }\); } function createNewFileEntry\(camera_url\) { window\.resolveLocalFileSystemURL\(cordova\.file\.cacheDirectory, function success\(dirEntry\) { // JPEG file dirEntry\.getFile\("tempFile\.jpeg", { create: true, exclusive: false }, function \(fileEntry\) { // Do something with it, like write to it, upload it, etc\. // writeFile\(fileEntry, imgUri\); alert\("got file: " \+ fileEntry\.fullPath\); // displayFileData\(fileEntry\.fullPath, "File copied to"\); }, onErrorCreateFile\); }, onErrorResolveUrl\); } var persistentDirectoryEntry; document\.addEventListener\('deviceready', init, false\); function init\(\) { // あらかじめPERSISTENTファイルシステムを要求し,DirectoryEntryオブジェクトを取得しておく window\.requestFileSystem\(LocalFileSystem\.PERSISTENT, 0, getPersistentDirectoryEntry, failFS\); } function getPersistentDirectoryEntry\(fileSystem\) { //新しい画像ファイルでタスク登録できない原因はここっぽい persistentDirectoryEntry = fileSystem\.root; } function moveToPersistent\(fileEntry\) { // あらかじめ取得しておいたPERSISTENTファイルシステムのDirectoryEntryオブジェクトと // resolveLocalFileSystemURIメソッドで取得したFileEntryオブジェクトを用いて,ファイルをPERSISTENTに移動 fileEntry\.moveTo\(persistentDirectoryEntry, fileEntry\.name, moveToSuccess, failFS\); } function moveToSuccess\(fileEntry\) { alert\('画像ファイル「' \+ fileEntry\.name \+ '」を移動しました。\\n' \+ fileEntry\.fullPath\); } function failCamera\(message\) { alert\('カメラ操作に失敗しました。\\n' \+ message\); } function failFS\(error\) { alert\('ファイルシステム操作に失敗しました。\\nエラーコード: ' \+ error\.code\); }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。