SQLiteの概要

SQL DBの利用
まずはSQLiteデータベースについて
SQLite データベースは
一般的なRDBMS
リレーショナルデータベースマネジメントシステム
に比べ
いくつかの特徴的な仕様を持つ
一般的なRDBMSといえば
MYSQLあたりが有名
SQLiteは
データの保存に単一ファイルのみを使用する
軽量のRDBMSで
MYSQLやPostgreSQLよりも
Microsoft Accessに近い
アプリに含む形で利用されることが多く
iPhoneでも SQLiteは使われている
SQLiteは
Webアプリ開発に使うPHPとか
Adobe AIRでも使える
SQLiteのデータ型はシンプルで
ファイル型のDBなので
携帯端末でも高速動作可能
ただ、SQLiteの場合
データ型といっても、他のRDBMSとは違い
データ登録時に厳密なデータ型のチェックをしない
このため、
データ型と違うタイプのデータも登録できてしまう
登録されているデータを評価するときには
データ型が使われる

AsyncTaskによる非同期実行

AsyncTaskによる非同期実行
AsyncTaskを使うと
バックグラウンドで処理を行い
その結果をメインアクティビティのUIに反映させることができる
AsyncTaskは
Params
Progress
Result
の3つのパラメータを持つ
ちなみに、パラメータの意味は
Params
タスクが開始されるときに送られるパラメータ
doInBackground()の引数
Progress
バックグラウンド処理の進捗状況を示すための
onProgressUpdate()の引数
Result
バックグラウンド処理が終わったときに実行される
onPostExecute()の引数
また、AsyncTaskをexecuteすると
4つのメソッドが実行される
実行されるメソッドは4つ
onPreExecute()
実行前の準備処理
例えばインジケータセットアップ
doInBackground(Params…)
バックグラウンドで実行したい処理
onProgressUpdate(Progress …)
バックグラウンド処理の進捗状況を
UIスレッドで表示するなら記述
onPostExecute(Result)
バックグラウンド処理が終わり
UIスレッドで反映させる処理
AsyncTaskを使うにはルールがあるので注意
このルールは
AsyncTaskのインスタンスはUIスレッドで生成
AsyncTaskの execute()は
UIスレッドから呼び出す
onPreExecute()
onPostExecute()
doInBackground()
onProgressUpdate()
は手動で呼び出せない
AsyncTaskは1回だけ実行できる2回目だと、例外になってしまう

ssh RSA keyの編集

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
というエラーが発生
これは、バックアップから作成したGMOクラウドへ接続したときのエラー
Please contact your system administrator.
Add correct host key in /home/wiki/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/wiki/.ssh/known_hosts:5

エラーがでているので
vim .ssh/known_hosts
でファイルを開き 5行めを削除
これで無事接続可能になりました

string.xmlでの入力方法の違い

Androidアプリのビュー部品。横に並べるため
LinearLayout

android:orientation

horizontal
に設定
ちなみに
horizontalは横並び
verticalは縦並び
この中に、ToggleButtonを設置
これはjQueryのトグルボタンと同じ効果
android:textOff
へはオフ状態のボタン表示メッセージ
android:textOn

オン状態のボタン表示メッセージ
あと、経過時間もつけたいので
タイマー表示に使える
Chronometer
を設置しました
今回、main.xmlでマップをつけてみましたが
API_keyは
string.xmlに記述し
変数のような扱いにしました
この方がメンテが楽になります
string.xmlで
注意すべきは
ダブルクォート ”の取り扱いです
直接、xmlで記述すると
” となりますが
リソースの方で編集すると
” ではなく &quoteになります
普通に文字列で表すには問題ないのですが
なにか引数扱いにするなら
注意が必要です

sftpコマンド

http://yoshiiz.blog129.fc2.com/blog-entry-44.html
を参考に
sftpコマンドを、使ってみました
接続クライアントは
ubuntu 12.04 64bit です
GMOクラウドでCentOSをつかうときに
当初、scpコマンドを使う予定でしたが
最小構成のためscpがインストールされておらず
yumコマンドも使えないので
sftpコマンドで転送しました
残念なことに
sftpで接続したときに
日本語ディレクトリは入力できないため
最初に
cd ダウンロード
で移動しておくか、
カレントディレクトリに転送するファイルを
移動させておく必要があります
なお、現在セキュリティーのため
ポートを変更しているため
接続には
sftp -oPort=ポート番号 ユーザ名@IPアドレス
で接続となります
ファイルアップロードには
put ファイル名
となります

現在地描画の手順

現在地描画の手順
現在地を描画できるように
MyLocationOverlayクラスの
インスタンス作成
onProviderEnabled(LocationManager.GPS_PROVIDER)
でGPS有効化
enableMyLocation()
で自分ポイントの追跡有効化
runOnFirstFix()で
最初に位置情報が確定したときに
実行するコード指定
getMyLocation()で
自分ポイント取得
animateTo()で
指定座標に移動
MapViewに
Overlayを追加し
MapView.invalidate()で再描画

タッチイベントの用語解説

タッチイベントの用語解説 
タップ
画面を軽く叩く
別名、シングルタップ
ダブルタップ
タップを素早く2回行う
フリック
画面上を軽く払うように指を動かし
縦や横にページ移動
あと、ソフトウェアキーボードの
フリック入力にも使う
ピンチイン
画面を狭めるようにつまむ
縮小に使う
ピンチアウト
画面を広げるように二本指で操作
こっちは拡大に使う
マルチタッチ
同時に複数の個所にタッチ

Androidでよく使う単位

Androidでよく使う単位は
dp と sp
dpは
Destiny independent Pixels
spは
Scaled Pixel
なぜ、pxではないかというと
pxは画面の実際のピクセル数
つまりドット単位なので
端末により1インチあたりのピクセル数が違うと
実際に表示されるサイズも変わってしまうから
これに対して
dpなら
画面の表示密度から計算して求めるので
表示密度が違っても同じようなサイズを維持できる
spも同様に画面の表示密度で計算するけど
こちらは文字のフォントサイズの指定に使う

Androidでタブを使う方法

タブレイアウトを使うと
複数のタブにUI部品を配置できる
Androidでタブを使う方法は2つ
Activityを継承する方法

TabActivityの継承
まず、Activityの継承だと
タブごとに別々のアクティビティを割り当てる
TabActivityの継承の場合
同じアクティビティで
タブごとにビューを切り替えられる

タブレイアウト使用時の注意点

タブレイアウト使用時の注意点
レイアウトのルートノードはTabHost
であること
TabHostのidは 
@android:id/tabhost
にする
Tabhostは
タブを表示するためのTabWidget

コンテンツを表示するためのFrameLayoutを含む
TabWidgetのidは
@android:id/tabs
にすること
FrameLayoutのidは
@android:id/tabcontent
にすること