2013年5月23日木曜日

デバッグの基礎

ステップ実行について違いがよくわからなかったのでメモ
 以下はeclipseの場合

















・再開
次のブレークポイントまでプログラムを実行する。





・ステップイン
次の1行を実行する。次の1行にメソッド呼び出しが含まれている場合は、そのメソッド内部に入った状態でプログラムが中断する。

 


・ステップオーバー(F6)

次の1行を実行する。次の1行にメソッド呼び出しが含まれている場合でも、そのメソッド呼び出しを終えた状態でプログラムが中断する。





・ステップリターン(F7)
今実行中のメソッドの実行を終えて、呼び出し元へ戻ります。ただし、次にステップインやステップオーバーを実行しても、単に次の行に矢印が移るだけでcalcurateメソッド自体は実行 されない。

2013年5月9日木曜日

Titaniumでアプリ開発(13) 起動画面とアイコンの設定

起動画面とアイコンは/Resources/iphoneを設定する。
サイズは以下の通り。


ファイル名サイズ説明
appicon.png57 x 57for non-retina iPhone/iPod touch (3/3G/3GS)
appicon@2x.png114 x 114for retina iPhone/iPod touch
appicon-72.png72 x 72for non-retina iPad
appicon-72@2x.png144 x 144for retina iPad
appicon-Small.png29 x 29for non-retina iPhone/iPod touch Spotlight and Settings (optional)
appicon-Small@2x.png58 x 58for retina iPhone/iPod touch Spotlight and Settings (optional)
appicon-Small-50.png50 x 50for non-retina iPad Spotlight and Settings (optional)
appicon-Small-50@2x.png100 x 100for retina iPad Spotlight and Settings (optional)
iTunesArtwork1024 x 1024for Ad Hoc, iTunes
PNGで作成し、拡張子は付けない
サイズは512×512でもいいけど1024×1024が推奨


ファイル名サイズ説明
Default.png320 x 480for non-retina iPhone/iPod touch (3/3G/3GS)
Default@2x.png640 x 960for retina iPhone/iPod touch
Default-568h@2x.png640 x 1136for iPhone 5/iPod touch (4inch)
Default-Portrait.png768 x 1004for non-retina iPad (portrait)
ステータスバー(20px)を除いたサイズ
Default-Portrait@2x.png1536 x 2008for retina iPad (portrait)
ステータスバー(40px)を除いたサイズ
Default-Landscape.png1024 x 748for non-retina iPad (landscape)
ステータスバー(20px)を除いたサイズ
Default-Landscape@2x.png2048 x 1496for retina iPad (landscape)
ステータスバー(40px)を除いたサイズ

Titaniumでアプリ開発(12) メール画面を開く


メール画面を開くにはTi.UI.createEmailDialog()を用います。
Titanium.Geolocation.getCurrentPositionと組み合わせて現在地の緯度経度をメール本文に入れてみました。

function postMail () {
Titanium.Geolocation.getCurrentPosition(
function(e) {
if(!e.success || e.error){
alert('位置情報が取得できませんでした');
return;
}
// 現在地をセット
latitude = e.coords.latitude;
       longitude = e.coords.longitude;
        }
     );
var emailDialog = Ti.UI.createEmailDialog();
    // メールの宛先
    emailDialog.setToRecipients(['to@example.com']);
    // メール本文
    emailDialog.setMessageBody("緯度:"+latitude+"\n経度:"+longitude);
    // メールの題名
    emailDialog.setSubject('');
    // メール送信画面を起動
    emailDialog.open();
}


うまく本文に表示出来ました。



Titaniumでアプリ開発(11) labelを変更する

前回表示された緯度経度のlabelをクリアボタンで消したい。

























色々方法がありそうだけど、labelを張っていたview自体を上書いてみます。

var clearButton = Ti.UI.createButton(
    {
        top: 190,
        right: 115,
        width: 90,
        height: 44,
        title: 'クリア'
    }
);
clearButton.addEventListener(
    'click',
    clearData
);
view.add(clearButton);


function clearData () {
var topView = Ti.UI.createView(
{
height:150,
        width:300,
       top:20,
        font:{fontSize:20},
        borderWidth:2,
        borderColor:'#bbb',
        backgroundColor:'#fff',
        borderRadius:5
}
);
view.add(topView);
}


上書きに成功しました。


























調べていると、win.remove()してどうこうって方法もあったけど、エラーが出てだめでした。





2013年5月6日月曜日

Titaniumでアプリ開発(10) 位置情報を表示する

ひとまず緯度経度を表示するアプリが完成しました。





























ソースの一部

③の部分
タブを作成する
// タブの作成
var tabGroup = Ti.UI.createTabGroup();

var tab1 = Ti.UI.createTab({
    icon: 'KS_nav_views.png',
    title: 'いどけーど',
    window: win1
});

var tab2 = Ti.UI.createTab({
    icon: 'KS_nav_ui.png',
    title: 'ヘルプ',
    window: win2
});

tabGroup.addTab(tab1);
tabGroup.addTab(tab2);
tabGroup.open();

// 現在地ボタンを押したときの処理
function setCurrentPosition () {
Titanium.Geolocation.getCurrentPosition(
function(e) {
if(!e.success || e.error){
alert('位置情報が取得できませんでした');
return;
}
// 現在地をセット
latitude = e.coords.latitude;
            longitude = e.coords.longitude;
// 現在地を動的に表示する
var currentPos = Titanium.Map.createAnnotation({
latitude: latitude,
longitude: longitude,
pincolor: Titanium.Map.ANNOTATION_RED,
animate: true
});
①の部分
                現在地をラベルとして表示する
               \でなく¥を使うとエラーになる
var lolabel = {
text: "緯度:"+latitude+"\r経度:"+longitude,
height: Ti.UI.SIZE
};
var label = Ti.UI.createLabel(lolabel);
topWindow.add(label);
    mapview.addAnnotation(currentPos);
        mapview.show(); // 隠していた地図を表示する
        mapview.setLocation({   // 現在地まで地図をスクロールする
            latitude:latitude,
            longitude:longitude,
            latitudeDelta:0.01,
            longitudeDelta:0.01
        });
}
);
}

②の部分
topのwindowを作成する
var topWindow = Ti.UI.createWindow(
    {
        height:150,
        width:300,
        top:20,
        font:{fontSize:20},
        borderWidth:2,
        borderColor:'#bbb',
        backgrondColor:'#fff',
        borderRadius:5
    }
);

④の部分
ボタンを作成
var locationButton = Ti.UI.createButton(
    {
        top: 190,
        left: 10,
        width: 90,
        height: 44,
        title: '現在地'
    }
);
ボタンを押したときに関数をsetCurrentPosition()を実行
locationButton.addEventListener(
    'click',
    setCurrentPosition
);

クリアボタン、メールボタン、ヘルプとかを一通り実装した段階で試しにAppleStoreに申請してみます。