flashcast:フリーで働くITエンジニア集団のブログ: Stray ChildをAndroid対応(gears編)でAndroidでも現在地の住所を表示できるようにしました。今回は、Androidでも住所の保存・閲覧・削除ができるようにします。
住所の保存は、iPhone同様、SQLiteを利用します。
また、前回同様、Gears API – Google Codeを利用します。
Database2API – gears – A proposal to add native HTML5 SQL API to Gears – Project Hosting on Google Codeが利用できれば、データを処理する部分はほとんど修正する必要はなかったのですが、試してみたところ、うまくいかず、まだサポートされていないようでしたので、Database API – Gears API – Google Codeで実装しました。
データベースをオープンする処理です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function checkGearsDbConnect() { var isDbConnect = true ; try { db = google.gears.factory.create( 'beta.database' ); db.open( 'StrayedChild' ); } catch (error) { isDbConnect = false ; } finally { return isDbConnect; } } |
iPhoneの時は、データベース名にスペースが含まれていても大丈夫だったのですが、
1 | db = openDatabase( 'Strayed Child' , '1.0' , 'Strayed Child' ); |
Gearsの場合はダメみたいなので、「StrayedChild」というデータベース名にしました。
SQLを実行する部分は、今後、各種ブラウザのHTML5 ローカルデータベース機能の対応動向を意識して、ユーザエージェントで処理を切り替えるような実装はあえてやめました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | function executeSql(sql, params, callback, date) { var result = true ; try { if (db.transaction != null ) { db.transaction( function (transaction) { transaction.executeSql(sql, params, function (transaction, resultSet) { if (callback) { callback(resultSet, date); } } ); }, function (error) { result = false ; } ); } else { var resultSet = db.execute(sql, params); if (callback) { callback(resultSet, date); } } } catch (error) { result = false ; } finally { return result; } } |
コールバック関数は、SQLの実行結果を画面に反映させたいようなときに指定します。例えば、保存した住所情報を一覧表示するような場合です。後処理が必要なければ、コールバック関数には何も指定しません。
保存した住所情報を閲覧する画面です。
Androidをもっている方、是非試してみてください!
Stray Child