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();
}