1

Phonegap (Cordova 2.2) を使用してアプリを構築しようとしています。私は特にコードとjsにかなり慣れていないので、私の質問のいくつかがばかげていると思われる場合は、しばらくお待ちください. 私の質問にはいくつかの部分があります。ユーザーがプロファイルを作成するために、(デバイスのカメラを使用して) 名前と画像を入力できるようにしたいのです。私はエミュレーターでテストしましたが、これまでのところ、名前を入力してカメラで写真を撮ることができます。これらは両方とも、完了時にエミュレーターに表示されます。ただし、明らかにその詳細を保存したいので、DBを作成しました(読み取りから、ローカルストレージのサイズは制限されています)。1. データベースは正しく作成されていますか? エラー アラートも成功アラートも表示されません。2. 情報をデータベースに渡す方法のロジックに苦労しています。私' クリックイベントで populate_UsersDB() 関数を呼び出し、何らかの種類の INSERT INTO userProfiles VALUE を記述する必要があると推測しています。また、onPhotoFileSuccess() 関数から直接 Imagedata を取得し、そこからデータベースに送信できますか。3. 完了ボタンを表示したくない場合 (「ここをタップして写真を撮る」プレースホルダーを表示したい場合)、アクションが完了したことをテストし、情報をデータベースに送信するにはどうすればよいですか。読んだところ、onChange() を使用できると思いますが、よくわかりません。また、ポストを使用するか、どこかに行かなければならないと思いますか?アクションが完了したことをテストし、情報をデータベースに送信するにはどうすればよいですか。読んだところ、onChange() を使用できると思いますが、よくわかりません。また、ポストを使用するか、どこかに行かなければならないと思いますか?アクションが完了したことをテストし、情報をデータベースに送信するにはどうすればよいですか。読んだところ、onChange() を使用できると思いますが、よくわかりません。また、ポストを使用するか、どこかに行かなければならないと思いますか?

申し訳ありませんが、この質問には多くの質問があることを知っています。アドバイスやサポートは大歓迎です。ありがとう。これがコードです。

    //Use the device camera to capture an image of the user

var 画像ソース; // 画像ソース var destinationType; // 戻り値のフォーマットを設定

// Wait for PhoneGap to connect with the device
document.addEventListener("deviceready",onDeviceReady,false);

// PhoneGap is ready to be used!
function onDeviceReady() {
    pictureSource=navigator.camera.PictureSourceType;
    destinationType=navigator.camera.DestinationType;
}

// Called when a photo is successfully retrieved
function onPhotoDataSuccess(imageData) {
  // Get image handle
  var smallImage = document.getElementById('smallImage');

  // Unhide image elements
  //
  smallImage.style.display = 'block';

  // Show the captured photo
  // The inline CSS rules are used to resize the image
  //
  smallImage.src = "data:image/jpeg;base64," + imageData;
}

// Called when a photo is successfully retrieved
function onPhotoFileSuccess(imageData) {
  // Get image handle
  console.log(JSON.stringify(imageData));

  // Get image handle
  //
  var smallImage = document.getElementById('smallImage');

  // Unhide image elements
  //
  smallImage.style.display = 'block';

  // Show the captured photo
  // The inline CSS rules are used to resize the image
  //
  smallImage.src = imageData;
}

// A button will call this function
function capturePhotoWithData() {
  // Take picture using device camera and retrieve image as base64-encoded string
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality:50, destinationType:Camera.DestinationType.DATA_URL });
}
function getPhoto(source) {
  // Retrieve image file location from specified source
  navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
    destinationType: destinationType.FILE_URI,
    sourceType: source });
}

// Called if something goes wrong.
function onFail(message) {
  alert('Failed because: ' + message);
}

//CREATE THE DATABASE
document.addEventListener("deviceready", onDeviceReady, false);
    var db = window.openDatabase("Users_DB", "1.0", "User Profiles DB", 200000); //will create database or open it

    //function will be called when device ready
    function onDeviceReady(){
        db.transaction(populateUsers_DB, errorCB, successCB);
    }
    //create table
    function populateUsers_DB(tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS userProfiles (id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Image BLOB)');
        tx.executeSql('INSERT INTO userProfiles(Name) VALUE ("")');
    }
    //function will be called when an error occurred
    function errorCB(err) {
        alert("Error processing SQL: "+err.code);
    }
    //function will be called when process succeed
    function successCB() {
        alert("success!");
        db.transaction(queryDB,errorCB);
    }
    //select all from userProfiles
    function queryDB(tx){
        tx.executeSql('SELECT * FROM userProfiles',[],querySuccess,errorCB);
    }
    function querySuccess(tx,result){
        $('#userList').empty();
        $.each(result.rows,function(index){
            var row = result.rows.item(index);
            $('#userList').append('<li><a href="#"><h3 class="ui-li-heading">'+row['Image']+'</h3><p class="ui-li-desc">Name '+row['Name']+'</p></a></li>');
        });
        $('#userList').listview();
    }
4

0 に答える 0