fc2ブログ

dialog()の主なパラメータ

dialog()の主なパラメータ

width


height
高さ

autoOpen
ダイアログを自動的に開く

model
モーダルダイアログにするか選択
falseなら
モードレスダイアログになる

show
ダイアログを開くときのアニメーション効果

hide
ダイアログを閉じるときのアニメーション効果

buttons
ダイアログで表示するボタン


ちなみに、buttonsパラメータは
ハッシュによる追加で
ボタン名と
クリック時の処理を設定できる

コードにすると
buttons:{
ボタン名:function(){クリックしたときの処理},
....
}
という構文

例えば、よく見かける
ダウンロードか、閉じるという画面ダイアログなら

buttons:{
'ダウンロード',function(){
location.href='http://jquery.com/download';},
'閉じる',function(){
$(this).dialog('close');
}

これで、ダウンロードがクリックされたら
URLに移動され
閉じるがクリックされたら
ダイアログが閉じるようになる

jQueryUIでは
メソッドに特定のキーワードを渡すことで
あらかじめ決められた処理を行える

例えば
$(this).dialog('close');
なら
現在のダイアログになる
$(this)

閉じるという意味になる 
closeは閉じるという意味
スポンサーサイト



モーダルダイアログにつて

モーダルダイアログ

モーダルダイアログは
その画面を閉じるまで
その他の動作ができなくなるダイアログのこと

これは、ライセンス確認画面とかで使ったりします

モーダルダイアログは
一般的にdiv要素で定義します


ダイアログの内容

というかんじ

重要なのは
jQueryUIから操作できるように
id属性の明記と

title属性にタイトルをつけてタイトルバーに表示すること

これができたら
モーダルダイアログの機能を適用
これには
dialog()
を使う

dialog()の構文は
$(ダイアログを示すセレクタ).
dialog({
パラメータ名:値,
....
})

サンプルにすると
$('#dialog').dialog({
width:600,
....
});
となります

ダイアログを表示する様々な機能は
{
パラメータ名:値,
....
}
というハッシュ形式で指定

ハッシュはjQueryUIや
ほかの様々なjQueryプラグインで多用するので覚えておくと便利です

jQueryUIの利用

jQueryUIの利用

jQueryUIは
jQueryにより動くライブラリなので
先にjQueryを読み込まないとダメ

つまり、コードは上から実行されるから
先に
jquery-バージョン.min.js
を、書いてから
jquery-ui-バージョン.min.js
を書くこと

あとは以下のようなコードで
jQueryUIを呼び出せばok

構文は
$(UIの適用先セレクタ).機能名(パラメータ,...)

AndroidでSQLite

AndroidでSQLite

Androidアプリで
DBのSQLiteを操作するには
android.database.sqlite.SQLiteOpenHelper抽象クラス
を継承した
Helperクラスを使う

SQLiteOpenHelperは
SQLiteをオープンするためのHelperクラスで
DB作成
DBスキーマのバージョン管理も行う

ファイルへの保存について

ファイルへの保存について

ファイルへのデータ書き込みには
まず
openFileOutput()を使い
FileOutputStreamオブジェクトを取得

openFileOutput()の
第1引数にはアクセスしたいファイル名
第2引数に処理モード定数を設定

ファイル処理モード定数は

MODE_PRIVATE
他のアプリからアクセス不可

MODE_WORLD_READABLE
他のアプリから読み込み可

MODE_WORLD_WRITABLE
他のアプリから書き込み可

MODE_APPEND
既存ファイルに追加書き込み


プリファレンスとほほ同じだけど
既存ファイルに追加書き込みできる
MODE_APPENDが増えている

定数とかの設定ができたら
書き込み処理をする FileOutputStreamオブジェクトを引数にして
BufferedWriterクラスのオブジェクトを生成

このBufferedWriterオブジェクトの
write()に
書き込みたいデータを文字列で渡し
ファイルに出力

newLine()
を使えば改行を入れることができる

最後に
close()
でバッファにたまっている出力データを
ファイルに書き込み、ファイルを閉じる


ファイルからのデータ読み込みは
openFileInput()
を使い
FileInputStreamオブジェクトを取得
そのFileInputStreamオブジェクトを引数にして
読み込み処理を行う InputStreamWriteクラスの
オブジェクトを生成

生成したInputStreamWriteオブジェクトを
引数にして
BufferedReaderクラスのオブジェクトを生成する

そして
BufferedReaderの
readLine()を使って
バッファに取り込まれたデータを
1行ずつ読み込む


ファイルデータの削除には
deleteFile()
を使う

deleteFile()で
ファイルのデータが全て削除される


ファイルの読み込み、書き込み、削除には
全て例外処理が必要なため、
try{
処理
}catch()
例外処理
}
というように処理の記述が必要

プリファレンスの利用

プリファレンスの利用

プリファレンスを利用するには
プリファレンスにアクセスするためのメソッドを提供するインターフェース
SharedPreferencesの
オブジェクトを取得する必要がある

SharedPreferencesオブジェクトは
Contextクラスの
getSharedPreferences()
で取得する

この第1引数に
アクセスしたいファイル名

第2引数に
処理モードの定数を設定する

プリファレンスの処理モード定数は

MODE_PRIVATE
他のアプリからアクセス不可

MODE_WORLD_READABLE
他のアプリから読み込み可

MODE_WORLD_WRITABLE
他のアプリから書き込み可


データの書き込み、変更、削除には
SharedPreferences.Editorクラスのインスタンスを
SharedPreferencesの
edit()で取得

データの保存には
SharedPreferences.Editorオブジェクトの
putString()に
保存するデータのキーと値を設定し
commit()

プリファレンスファイルに保存する

putString()は
第1引数にキー
第2引数に保存する値を設定

putString()のほかにも
putInt()
putLong()
putFloat()
putBoolean()
があるので、保存したいデータ型により使い分けができる


SharedPreferencesオブジェクトを取得したあと
SharedPreferencesオブジェクトの
getString()
でデータ取得

getString()の
第1引数に取得したいデータのキー
第2引数にデータが取得できなかった場合の値
を設定

プリファレンスファイルのデータを全て削除したいなら
SharedPreferences.Editorクラスの
clear()を使う
これは
SharedPreferencesオブジェクトや
SharedPreferences.Editorオブジェクトを取得したあと
clear()を実行する

全部ではなく
指定したデータのキーだけ削除したいなら
remove()を使う
これは
引数にキーを指定する
データを保存するときと同じように
削除するときにも
commit()を実行するのを忘れないように注意

プリファレンスについて

プリファレンスについて

プリファレンスは
javaのMapインターフェースのように
データとキーを組み合わせて保存する

保存データは
/data/data/パッケージ名/shared_prefs
というディレクトリに

ファイル名.xml

という名前のXMLファイルで保存する

このXMLファイルが
プリファレンスファイル

プリファレンスは
データ量やデータ形式に制限があるため
いくつかの設定値の簡易保存などに、使われる

Androidでのデータ保存

データ保存

Androidでは5つのデータ保存方法がある 

プリファレンス
端末内部の記憶媒体に
キーと値の組み合わせで保存

ファイル
端末内部の記憶媒体に保存

データベース
デフォルトで搭載されているSQLite DBへ保存

外部メディア
SDカードなどに保存

ネットワーク上のサーバー
そのままの意味
クラウドに保存
Dropboxとかがこれにあたる

バインドを使わないサービス

バインドを使わないサービス

まず、サービスクラスを準備する
サービスクラスは
android.app.Service抽象クラスを継承して定義する
ソースにすると
extends Service

サービスクラスのイベントハンドラは以下のとおり

onCreate
初めてサービスが起動したとき呼ばれる
複数サービス起動の場合は初回だけ呼ばれる

onStart
startService()でサービス開始のとき呼ばれる

onBind
bindService()でサービス開始のとき呼ばれる

onUnbind
サービスのバインドを解除するとき呼ばれる

onRebind
サービスと再度バインドするとき呼ばれる

onDestroy
停止状態から破棄される直前に呼ばれる


注意点としては
バインドを使わなくても
onBind()の実装はなぜか必須ということ

そして、AndroidManifest.xmlに
serviceタグの設定が必要

Androidのサービス機能

Androidでのサービス機能は
画面を持たず、バックグラウンドで独立して動作するプログラム

これはLinuxのサーバーのようなもの

この機能を使えば、
長いダウンロード処理とか
音楽再生などを画面処理から切り離して動作させられる

例えば、音楽を聞きながらWebブラウザー閲覧などができるようになる

サービスの実装方法は2つ

startService()を使う方法
バインドを使う方法


まず、startService()から
これは
アクティビティやサービスから
サービスを呼び出す方法

Activityクラスの
startService()でサービス起動
stopService()でサービス停止
一番簡単な実装方法だが
欠点として
アクティビティから行えるのは
サービスの起動と停止のみ


もうひとつのバインドについて
こちらは
アクティビティとサービスを明示的に
結びつけることで
サービスの起動/停止だけでなく
アクティビティとサービスの相互操作が可能

アクティビティとサービスをバインドするには
アクティビティとサービスのの両方に
AIDLファイルを用意する

AIDLは
Android
Interface
Definition
Language
の略

このAIDLファイルに定義した
インターフェースを使うことで
アクティビティとサービスが互いにやりとりできるようになる

インテントを使いアプリ呼び出し

暗黙的インテントの場合、
アクション定数を引数にインテントを生成

Intentの
setData()
で、URIを設定

startActivity()で次のアクティビティを起動する

指定したアクション定数やURIに合致する
インテントフィルターを持つアプリが
これでよびだされる

暗黙的インテントで
電話やWebブラウザー標準のアプリも呼び出せる

電話なら
アクションは
android.intent.action.DIAL
URIは
tel:電話番号

Webブラウザーなら
アクションは
android.intent.action.VIEW
URIは
http://ホスト名/パス

明示的インテントでも
暗黙的インテントでも
アクティビティを起動するのに
startActivity()
のほかに
startActivityForResult()
が使える

startActivityForResult()
を使うと
次のアクティビティが終了するときに
最初のアプリに値を戻せる

暗黙インテントについて

暗黙的インテント

これは主に他のアプリ呼び出しに使う

これを使うにも
Androidmanifest.xmlの編集が必要になる

Androidmanifest.xmlに
インテントフィルターという
暗黙的インテントで呼び出すための条件を記述する

やり方は、対象の
activityタグの中に
intent-filterタグを設定

そして、この
intent-filterタグの中に判断材料となるタグを設定する

Ajaxまとめ

Ajaxは
サーバーとの通信をjava scriptで行う技術
Ajax通信ではドメインをまたがって要求することができない

サーバーから取得したデータをそのまま
ページに反映するには
load()
を使う

$.getJSON()
とJSONP
を使うことで
ドメインをまたがって通信できる

ajaxStart
ajaxStop
ajaxError
などのAjaxイベントを利用することで
Ajax通信中にアプリ独自の、動作を挟める

Android4.0でのメニューボタン

過去に買った参考書籍ではまること 
それは、バージョン違いにより再現できないこと

今回もこれに引っかかりました

Android4.0からだと
Android2.3までとはUIが変わるため
ハードウェアキーの
メニューボタンがありません

このため、Android2.3対応の書籍で
アプリ作成してみると
メニューボタンがなく、はまることがあるので
注意が必要です

http://andronavi.com/2011/12/145919
にもこれについての解説が載っていました

SQLiteのデータ型

SQLiteのデータ型

INTEGER
符号付き整数

REAL
浮動小数点数

TEXT
テキスト

BLOB
バイナリデータ

Androidでは以下のクラスを使い
SQLite DBを利用する

SQLiteOpenHelperクラス
DB作成、
スキーマのバージョン管理をするための
抽象クラス
このクラスを継承して
DB生成、アップグレード処理を実装する

SQLiteDatabaseクラス
insert()
update()
などDBに対するレコード操作用メソッドを提供するクラス

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行めを削除

これで無事接続可能になりました

テーマ : Linux
ジャンル : コンピュータ

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で記述すると
" となりますが
リソースの方で編集すると
" ではなく "eになります

普通に文字列で表すには問題ないのですが
なにか引数扱いにするなら
注意が必要です

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
にすること

Androidアプリでセンサー使用

センサーを使うには
getSystemService()で
SensorManagerを取得

SensorManagerの
getSensorList()に
TYPE_ACCELEROMETER
加速度センサーを指定し、リストを得る

このリストの中から
list.get(0)
で加速度センサーを取得

あえて、指定しているのは
機種により複数のセンサー搭載もあるから

onResume()

SensorEventListenerを登録
登録は
mSensorManager.registerListener()

onStop()
でイベントリスナーの登録解除
解除は
mSensorManager.uNregisterListener()

ちなみに、
SensorEventListenerを
implicationしたら
以下のメソッドも実装すること

public void onAccuracyChanged(Sensor sensor,int accuracy)

public void onSensorChanged(SensorEvent event)

onAccuracyChanged()

センサー搭載の精度が変化した時に、呼び出される

onSensorChanged()は
センサーの値が変化したら呼び出される

onSensorChanged()
の引数 event のvalues配列には各軸の値があり

values[0] がX軸
values[1] がY軸
values[3] がZ軸
になります

ちなみに、定数も定義されているので
X軸なら
SensorManager.DATA_X

Y軸なら
SensorManager.DATA_Y

Z軸なら
SensorManager.DATA_Z

加速度について

加速度についてのメモ

加速度は
一定時間ごとに速度がどれだけ増加するか
を表す割合のこと

単位時間あたりの速度の変化率のこと

一般的にはm/s
meter per second per second
という単位で表現されるけど
加速度は重力の影響を受ける

重力と加速度による慣性力を区別することはできない

一般的だと
バスや電車で
発車や停車のとき、加速度による慣性力を体験してます

ちなみに、地球の重力により
物体が上から下へ落ちるときの加速度は
重力加速度といって
Gで表されます

よく、ラノベとかで何Gとかでたりします

重力加速度は
一般では 9.8m/s
だけと
厳密には緯度により変わるため
日本の場合、北海道と沖縄では
微妙に異なります

北海道のほうが大きく
沖縄の方が小さくなります

重力加速度は
物体を静止状態から自然落下させたときに
1秒後の落下速度が9.8m/sになること

加速度はX Y Zの3軸のベクトルで取得可能

ちなみに、加速度はAndroidアプリ作成に使います

HTC Jのサンプリングレート

Androidで音感知のアプリ作成で
サンプリングレートの設定を間違えたらエラーになりました

最初に設定したのは500にしてしまったのが原因でした

今回、HTC Jでは
サンプリングレートは
Xperia acroと同じく
44100Hzでした

数値が小さいと
アプリ起動しても予期せぬエラーがでましたとなり強制終了してしまいます

サーフェイスビューについて

サーフェイスビュー

SurfaceViewクラスを使うと
UIスレッドから独立して描画を行える

通常のUIスレッドより高速描画できるので
ゲームやマルチメディアに向く

カメラ画像化のプレビューにも
SurfaceViewクラスが使われる

サンプリングレートについて

サンプリングレートとは

サンプリングレートはサンプリング周波数のことで

アナログ信号からデジタル信号への変換である(AD変換)

1秒間に何回行うかを示す数値で
単位はHz

ちなみに、44100Hz
44.1kHzは
CDに使われる
最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック