自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。

2012年4月27日金曜日

Titanium require サンプル

TitaniumフレームワークでJavascript関数を別のファイルに定義して、オブジェクトのように使えるサンプルです。

ファイル構成:
/lib/math.js
/app.js

コード
/lib/math.js
// 加算関数
exports.add = function(a, b)
{
    return a + b;
}
// sayhelo関数
exports.sayhelo = function()
{
    switch (arguments.length)
    {
        case 1:
            return 'helo ' + arguments[0] + '.';
        default:
            return 'helo everyone.';
    }
}

Titaniumリソース(更新中)

Titanium開発用のリソースをまとめて共有します。

基本サンプル
https://wiki.appcelerator.org/display/guides/Example+Applications

ベストプラクティス
http://wiki.appcelerator.org/display/guides/Mobile+Best+Practices

小さな Titanium Mobile の読み物
http://imthinker.net/titanium/

Titanium Mobile@China(中国語)
http://rensanning.iteye.com/

Titanium関数定義

Titaniumフレームワークを使って、Javascript関数定義をテストします。

コード
var self = Ti.UI.createWindow(
{
    backgroundColor : '#cccccc',
    navBarHidden : true,
    exitOnClose : true
});

var button1 = Ti.UI.createButton(
{
    height : 44,
    width : 200,
    title : ('Helo Titanium World!'),
    left : 10,
    top : 10
});
self.add(button1);

button1.addEventListener('click', function()
{
    func1('koma');
});

self.open();

var func1 = function(obj)
{
    alert('test func1' + '[' + obj + ']');
};

2012年4月26日木曜日

AndroidとiOS開発ID登録

Android ID
https://play.google.com/apps/publish

Apple ID
https://developer.apple.com/jp/programs/iOS/

これからスマートフォン開発を本格にやり始める。

Hello Titanium

スマートフォン開発フレームワークTitaniumを勉強しています、まずはHello Worldサンプルを共有します。

var self = Ti.UI.createWindow(
{
 backgroundColor : '#cccccc',
 navBarHidden : true,
 exitOnClose : true
});

var button1 = Ti.UI.createButton(
{
 height : 44,
 width : 200,
 title : ('Helo Titanium World!'),
 top : 20
});
self.add(button1);

button1.addEventListener('click', function()
{
 alert(Ti.Platform.osname + " " + Ti.Platform.version);
});

self.open();

Titaniumモジュール

Titaniumに広告モジュールを入れるブログ
http://developer.appcelerator.com/blog/2011/07/building-apps-with-modules.html

2012年4月13日金曜日

スマートフォン開発フレームワーク検討中

スマートフォン開発はできるだけ一回開発して、マルチプラットフォームにリリースできるようなフレームワークを探そうとします。

最終は下記のオープンソースフレームワークを見つけました。

PhoneGap
Titanium

使い方とフレームワークの仕組みは若干違いますので、これから検討していきます。

2012年4月10日火曜日

RedMineバックアップ

日付単位でバックアップする
backup_date=$(date "+%Y%m%d%H%M%S")
/home/redmineuser/redmine-1.3.1-0/mysql/bin/mysqldump -u bitnami -p bitnami_redmine > "$backup_date".sql

2012年4月7日土曜日

Android ImageMenu

Androidアプリで【HOME】ボタン処理をオーバーロードし、カスタマイズメニューを出します。

res/layout/custommenu.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <ImageButton
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:contentDescription="@string/app_name"
        android:src="@android:drawable/ic_menu_send" />

    <ImageButton
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:contentDescription="@string/app_name"
        android:src="@android:drawable/ic_menu_save" />

    <ImageButton
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:contentDescription="@string/app_name"
        android:src="@android:drawable/ic_menu_search" />

    <ImageButton
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:contentDescription="@string/app_name"
        android:src="@android:drawable/ic_menu_preferences" />

</LinearLayout>

Android AlertDialog

AlertDialogでコンテキストメニューを表示する

Activity
package com.sqlendia.android;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Android2_21Activity extends Activity
{
    AlertDialog actions;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setTitle("アラーとダイヤログ");

        Button button = new Button(this);
        button.setText("選んでくださし");
        button.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                actions.show();
            }
        });

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("オプション");
        String[] optoins =
        { "オプション1", "オプション2", "オプション3" };

        builder.setItems(optoins, new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int which)
            {
                switch (which)
                {
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                default:
                    break;
                }
            }
        });

        builder.setNegativeButton("Cancel", null);
        actions = builder.create();

        setContentView(button);
    }
}

Android コンテキストメニュー

Androidメニューリソースを利用してコンテキストメニューを表示する。

res/menu/contextmenu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_delete"
        android:title="Delete Item">
    </item>
    <item
        android:id="@+id/menu_copy"
        android:title="Copy Item">
    </item>
    <item
        android:id="@+id/menu_edit"
        android:title="Edit Item">
    </item>

</menu>

2012年4月5日木曜日

Androidシステムキーコードを捉える

ユーザーがAndroid端末のHomeキーとか戻るキーとか押された場合、アプリはこのイベントを捉えて適当な処理をすることができるでしょう。
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
    TextView txtContent = (TextView) findViewById(R.id.txtContent);

    switch (keyCode)
    {
    case KeyEvent.KEYCODE_BACK:
    case KeyEvent.KEYCODE_MENU:
    case KeyEvent.KEYCODE_CALL:
        txtContent.setText(String.valueOf(keyCode));
        return true;
    default:
        return super.onKeyUp(keyCode, event);
    }
}

Androidスクリーン表示方向設定

コーディングで端末スクリーン表示方向を変えるサンプルです。
public void btnTest_onclick(View v)
{
    int current = getResources().getConfiguration().orientation;
    if (current == Configuration.ORIENTATION_LANDSCAPE)
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    else
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

Android プログレスバー表示

Androidアプリのタイトルにプログレスバーを表示し、進捗を表すサンプルです。
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_PROGRESS);

    setContentView(R.layout.main);
    
    setProgressBarVisibility(true);
    setProgress(3000);

プログレスバーの最大値は10000となります。

ホームページ