2014年12月9日火曜日

【新作】分数電卓

■シンプルで使いやすい分数電卓です。

分数電卓は、書式通りに入力して結果を表示することが出来ます。
だから、誰にでも簡単に利用することが出来ます。



日常の分数計算にはもちろん、お子様の算数の勉強にもお役立て頂ければ幸いです。


Google Play でダウンロードする

2014年5月24日土曜日

プロジェクトの削除 Android Studio

Android Studio に於けるプロジェクトの削除方法について、まとめてみました。

[前提]
・以下の3つプロジェクトが作成されています。
 My Application 1
 My Application 2
 My Application 3




1.プロジェクトリストの削除

現在、My Application 1を開いている状態です。
[File]メニューから [Reopen Project] - [Clear List]を選択します。



プロジェクトリストが全て削除されると、[Reopen Project]がグレーアウトされます。



Welcome to Android Studio 画面のRecent Projects の一覧からもプロジェクト名が削除されます。



この操作により削除されたのは、プロジェクトリストであって、プロジェクト自身ではありません。
従って、プロジェクトリストが削除されても、以下の手順でプロジェクトを開くことができます。

[File]メニューから [Open]を選択します。




もしくは、Welcome to Android Studio 画面のOpen Projectを選択します。





Open File or Project ダイアログから、目的のプロジェクトを選択して、[OK] をクリックすれば、プロジェクトを開くことができます。





2.プロジェクト自身の削除

Android Studioには、メニューからプロジェクト自身を削除する項目がありません。
プロジェクト自身を削除するには、エクスプローラを使用して、プロジェクトを直接削除する必要があります。
デフォルトでは、ユーザーフォルダ配下のAndroidStudioProjectsにプロジェクトが作成されています。
(例えば、Windows7の場合は、\Users\ユーザー\AndroidStudioProjects)
ここで、目的のプロジェクト名のフォルダを削除することによって、プロジェクト自身を削除することができます。


2014年5月19日月曜日

プロキシ設定 Android Studio

プロキシ経由の環境で、Android Studioを利用するための設定です。

■Android Studioのプロキシ設定

1.「Welcome to Android Studio」画面から[Configure] ⇒ [Settings]を選択します。




※または、プロジェクト作成画面から[File]-[Settings]を選択します。





2.「Settings」画面の左ペインの[HTTP Proxy]を選択します。

3.「Settings」画面の右ペインで、以下の設定を行います。

・Manual proxy configuration にチェックを入れます。
・HTTP にチェックを入れます。
・Host name にプロキシサーバーのドメインまたは、IPアドレスを設定します。
・Port number にプロキシサーバーのポート番号を設定します。




■Android SDK のプロキシ設定

1.「Welcome to Android Studio」画面から[Configure] ⇒ [SDK Manager]を選択します。




※または、プロジェクト作成画面から[Tools]-[Android]-[SDK Manager]を選択します。




2.「Android SDK Manager」画面から[Tools]-[Options]を選択します。




3.「Android SDK Manager - Settings」画面で、以下の設定を行います。

・HTTP Proxy Server にプロキシサーバーのドメインまたは、IPアドレスを設定します。
・HTTP Proxy Port にプロキシサーバーのポート番号を設定します。



2014年5月14日水曜日

Android Studioによるプロジェクト作成

1.Android Studioの起動

ショートカットからAndroid Studioを起動します。

インストール後、初めての起動する場合は、「Complete Installation」ダイアログが表示されます。
「I do not have a previous version of Android Studio or I do not want to import my settings」を選択して、[OK]をクリックします。



「Welcom to Android Studio」ダイアログが表示されます。
以下のアップデート情報が表示されることがあります。
「Update Info
A new version of Android Studio is available!」

ステータスバーに表示されている「Check」をクリックします。
「Android Studio x.x.x Build xxx.xxxxxxx. Check for updates now.」




アップデート内容を確認できます。
とりあえずアップデートはせずに、[Remind Me Late]をクリックして閉じます。




2.プロジェクトの作成

「Welcome to Android Studio」ダイアログの[New Project]をクリックします。




「New Project」ダイアログが表示されます。




以下は、各項目の詳細です。

【Application name】
Google Play、端末のアプリケーション管理で表示されるアプリケーションの名前です。

「The application name is shown in the Play store, as well as in the Manage Applications list in Settings.」


【Module name】
IDEで使用されるモジュールの名前です。「Application name」と同じにしても良いです。

「This module name is used only by the IDE. It can typically be the same as the spplication name.」


【Package name】
アプリケーションのユニークな識別子です。

「The package name must be a unique identifier for your application.It is typically not shown to users, but it must stay the same for the lifetime of your application; it is how multiple versions of the same application are considered the "same app".This is typically the reverse domain name of your organization plus one or more application identifiers, and it must be a valid Java package name.」

尚、Package nameをデフォルトのままにしておくと、以下のメッセージが表示されます。

「The prefix 'com.example' is meant as a placeholder and should not be used.」

これは、ドメインの接頭辞(com.example)がプレースホルダだから使用してはいけないという意味です。


【Project location】
保存先


【Minimum required SDK】
アプリケーションがサポートする最低限のAPIレベルを選択します。バージョンの低いAPIは、多くのデバイスを対象としますが、利用できる機能は少なくなります。API8以降を対象とすることによって、市場の約95%をカバーできます。

「Choose the lowest version of Android that your application will support.Lower API levels target more devices, but means fewer features are available.By targeting API 8 and later, you reach approximately 95% of the market.」


【Target SDK】
アプリケーションが動作すること確認している最も高いAPIレベルを選択します。作成するアプリケーションが推奨とするAPIレベルを選択する。アプリケーションは、「Minimum required SDK」で指定したバージョンまで実行することができます。

「Choose the hightest API level that the application is known to work with.This attribute informs the system that you have tested against the target version and the system should not enable any compatibility behaviors to maintain your app's forward-compatibility with the target version.The application is still able to run on older versions(down to minSdkVersion).Your application may look dated if you are not targeting the current version.」


【Compile with】
アプリケーションをコンパイルするプラットフォームのAPIレベルを選択します。ここで選択できるAPIレベルはAndroid SDK Managerでインストール済みのパッケージとなります。

「Choose a target API to compile your code against, from your installed SDKs.This is typically the most recent version, or the first version that supports all the APIs you want to directly access without reflection.」


【Theme】
UIスタイルを選択する。「Holo Dark」「Holo Light」は、Compile WithでAPIレベル11以上を選択したときに有効です。「Holo Light with Dark Action Bar」は、Compile withでAPIレベル14以上を選択したときに有効です。

「The base user interface theme for the module.」


【Create custom launcher icon】
カスタムのランチャーアイコンを作成する場合は、チェックを入れます。


【Create activity】
Activityのテンプレートを作成する場合は、チェックを入れます。


【Mark this project as a library】
プロジェクトをライブラリとして作成する場合は、チェックを入れます。


【Support Mode】
APIレベルによっては提供されていないコンポーネントを、そのAPIレベルで利用するためのサポートモジュールです。
「GridLayout」をAPIレベル13以下で利用するには、チェックボックスにチェックを入れます。
「Fragments」「Navigation」「Action Bar」をAPIレベル10以下で利用するには、それぞれのチェックボックスにチェックを入れます。


項目を以下の通り選択して、「Next」をクリックします。




Activityの種類を選択するダイアログが表示されます。
「Blank Activity」を選択して、「Next」をクリックします。




Activityの名前などを設定するダイアログが表示されます。
デフォルトのまま[Finish]をクリックします。




プロジェクト画面が表示されます。



2014年5月9日金曜日

Android Studioのインストール

■Android Studioとは

Android Studioとは、「IntelliJ IDEA」という統合開発環境(IDE)をベースに、新たに作成されたAndroid専用のIDEです。
以前から利用されているAndroid Development Tools(ADT)は、「Eclipse」というIDEのプラグインとして提供されています。
いずれは、Android Studioが、ADTに取って代わる存在となるでしょう。

■Android Studioの導入

1.JDKのダウンロードとインストール

以下のURLからJDKをダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/index.html

ダウンロード及びインストールの方法については割愛します。

2.環境変数「JAVA_HOME」にJDKを設定

(例)
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_39


3.JDKのパスを通す

PATHに以下を追加します。

%JAVA_HOME%\bin;


4.「IntelliJ IDEA」のダウンロード

以下のURLから任意のフォルダへダウンロードします。
http://developer.android.com/sdk/installing/studio.html

「Download Android Studio v0.5.2 for Windows」をクリックします。
※2014/05/08現在、バージョンはv0.5.2です。


5.「IntelliJ IDEA」のインストール

ADTなど、開発環境がすでにインストールされている端末では、androidのホームディレクトリが存在していて共有されます。
「IntelliJ IDEA」をインストールして起動すると、「~/.android」は上書きで更新されてしまいます。
必要に応じて、退避してください。

ダウンロードしたEXEファイルを実行します。

「Welcom to the Android Studio Setup Wizard」ダイアログが表示されます。
[Next]をクリックします。



「Choose Users」ダイアログが表示されます。
必要に応じて、どちらかを選択して、[Next]をクリックします。
※例では、「Install for anyone using this computer」を選択しています。


「Choose Install Location」ダイアログが表示されます。
任意のフォルダーを指定して、[Next]をクリックします。
※例では、デフォルトのまま

デフォルトのまま[Install]をクリックすると、インストールが始まります。


Installation Complete」ダイアログが表示されます。
[Next]をクリックします。


「Completing the Android Studio Setup Wizard」ダイアログが表示されます。
「Start Android Studio」のチェックを外して、[Fnish]をクリックすれば、インストールは完了です。


6.環境変数「ANDROID_SDK_HOME」にAndroid SDKを設定

ADTなど、開発環境がすでにインストールされている端末では、Android SDKに関連する環境変数が残っています。
必要に応じて、再設定してください。

ANDROID_SDK_HOME=C:\Program Files\Android\android-studio\sdk


7.Android SDKのパスを通す

PATHに以下を追加します。

%ANDROID_SDK_HOME%\tools;
%ANDROID_SDK_HOME%\platform-tools;

2014年5月2日金曜日

ファイルストレージAPIの利用 Cordova(PhoneGap)

W3CのFileSystem API、FileWriter API、File APIの仕様に基づいて実装されているCordovaのファイルストレージAPIの利用方法についてです。

1.プラグインの追加

①ファイルシステム プラグインの追加
> cordova plugin add org.apache.cordova.file

②ファイル転送 プラグインの追加
> cordova plugin add org.apache.cordova.file-transfer

③config.xmlの確認
以下のパラメータが追加されていることを確認します。

[platforms/android/res/xml/config.xml]
<feature name="File">
<param name="android-package" value="org.apache.cordova.file.FileUtils" />

<param name="onload" value="true" />
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.filetransfer.FileTransfer" />
</feature>

④AndroidManifest.xmlの確認
以下のパーミッションが追加されていることを確認します。

[platforms/android/AndroidManifest.xml]
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


2.FileSystemオブジェクト

window.requestFileSystemメソッドにより、FileSystemオブジェクトを取得します。

cordovaのファイルストレージAPIが利用できるのは、devicereadyイベントが発火されて、察知した後となります。
したがって、FileSystemオブジェクトの取得は、以下のようになります。

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
   
    //FileSystemオブジェクトの利用
}

function fail(error) {
   
    //エラー処理
    console.log(error.code);
}

FileSystemオブジェクトには、二つのストレージタイプがあります。
window.requestFileSystemメソッドの第1引数にて、ストレージタイプを指定します。

①PERSISTENTストレージ
・[引数]LocalFileSystem.PERSISTENT
・[永続性]○
・[保存先]/mnt/sdcard/

②TEMPORARYストレージ
・[引数]LocalFileSystem.TEMPORARY
・[永続性]×
・[保存先]/mnt/sdcard/Android/data/(アプリケーション名)/cache/


3.FileEntryオブジェクト

FileSystemオブジェクトのfileSystem.root.getFileメソッドにより、FileEntryオブジェクトを取得します。
getFileメソッドで、第2引数の{create : true}は、ファイルが無ければ新規でファイルを作成することを意味します。

function gotFS(fileSystem) {
   
    //FileSystemオブジェクトの利用
    fileSystem.root.getFile("hoge.txt",{create : true}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry){
   
    //FileEntryオブジェクトの利用
}

function fail(error) {
   
    //エラー処理
    console.log(error.code);
}


FileEntryオブジェクトのプロパティとメソッドによって、ファイルストレージを利用します。

①FileEntryオブジェクトのプロパティ

[name]
ファイル名

[fullPath]
フルパス

[isDirectory]
ディレクトリ判定のBoolean値

[isFile]
ファイル判定のBoolean値

function gotFileEntry(fileEntry) {
   
    //FileEntryオブジェクトの利用
    console.log('file name:' + fileEntry.name);
    console.log('file path:' + fileEntry.fullPath);
    console.log('directory?:' + fileEntry.isDirectory ? 'yes' : 'no');
    console.log('file?:' + fileEntry.isFile ? 'yes' : 'no');
}


②FileEntryオブジェクトのメソッド

[createWriter]
FileWriterオブジェクトを取り出します。
FileWriterオブジェクトのwriteメソッドでファイルへの書き込みを行います。

function gotFileEntry(fileEntry) {

    //FileEntryオブジェクトの利用
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(fileWriter){
   
    var str = 'Hello\n' + 'World\n';
   
    //ファイルの書き込み位置を最終行とする
    fileWriter.seek(fileWriter.length);
   
    //ファイルに書き込む
    fileWriter.write(str);
   
}

function fail(error) {
   
    //エラー処理
    console.log(error.code);
}


[file]
Fileオブジェクトを取り出します。
別に、FileReaderオブジェクトを作成して、FileReaderオブジェクトのreadAsTextメソッドによって、Fileオブジェクトからファイルの内容を読み出します。

function gotFileEntry(fileEntry) {

    //FileEntryオブジェクトの利用
    fileEntry.file(gotFile, fail);
}

function gotFile(file){

    //FileReaderオブジェクトを作成
    var reader = new FileReader();
   
    //Fileオブジェクトからファイルの内容を読み出す
    reader.readAsText(file);
   
    //非同期のレスポンスを受信
    reader.onloadend = function(evt) {
        console.log(evt.target.result);
    };
   
}

function fail(error) {
   
    //エラー処理
    console.log(error.code);
}


[removeTo]
ファイルストレージのファイルを削除します。
getFileメソッドで、第2引数の{create : false}は、ファイルが無い場合に、新規にファイルを作成しないことを意味します。

function gotFS(fileSystem) {
   
    //FileSystemオブジェクトの利用
    fileSystem.root.getFile('hoge.txt', {create : false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry){
   
    //FileEntryオブジェクトの利用
    fileEntry.removeTo(function() {
        console.log('ファイルを削除しました。');
    });
}

function fail(error) {
   
    //エラー処理
    console.log(error.code);
}

2014年4月24日木曜日

プラグイン追加に於けるエラーについて Cordova(PhoneGap)

今回は、Cordovaプラグイン追加の際に、発生するエラーについて、対処方法をまとめてみました。

■gitがインストールされていない、またはpathが通っていない時に発生するエラー
>cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
Fetching plugin "https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" via git clone
Error: "git" command line tool is not installed: make sure it is accessible on your PATH.

・対処方法
cordovaは、プラグインを追加する時に、gitを利用しています。
事前に、gitをインストールする必要があります。

1.以下のURLからダウンロードして、gitをインストールします。
http://git-scm.com/downloads

2.インストール先に対してpathを通します。
システムのプロパティから[詳細設定]-[環境変数]-[システム環境変数]の「path」に
「*****\Git\cmd;」を追加します。

3.プラグイン追加を再実行します。
>cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
Fetching plugin "https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" via git clone
Installing "org.apache.cordova.file" for android


■gitの依存関係が原因で発生するエラー
>cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
Fetching plugin "https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" via git clone
Error: Command failed: fatal: could not create work tree dir '*****\AppData\Local\Temp\plugman\git\1398234116751'.: No such file or directory

・対処方法
1.gitの作業ディレクトリを作成します。
mkdir *****\AppData\Local\Temp\plugman\git

2.プラグイン追加を再実行します。
>cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
Fetching plugin "https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" via git clone
Installing "org.apache.cordova.file" for android


■プロキシ環境で発生するエラー
[その1]
>cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
Fetching plugin "https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" via git clone
Error: Command failed: Cloning into '*****\AppData\Local\Temp\plugman\git\1398234984182'...
fatal: unable to access 'https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git/': Failed connect to git-wip-us.apache.org:443; No error

・対処方法
1.gitにプロキシの設定を追加します。
>git config --global http.proxy http://プロキシサーバのURL:ポート番号
>git config --global https.proxy https://プロキシサーバのURL:ポート番号

2.設定内容を確認します。
>git config --global --list
http.proxy=http://プロキシサーバのURL:ポート番号
https.proxy=https://プロキシサーバのURL:ポート番号

3.プラグイン追加を再実行します。
>cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
Fetching plugin "https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" via git clone
Installing "org.apache.cordova.file" for android

※Gitのプロキシ設定について
設定内容の確認
>git config --global --list

設定の追加
>git config --global http.proxy http://プロキシサーバのURL:ポート番号
>git config --global https.proxy https://プロキシサーバのURL:ポート番号

設定の削除
>git config --global --unset ***


[その2]
>cordova plugin add org.apache.cordova.file
Fetching plugin "org.apache.cordova.file" via plugin registry
Error: Failed to fetch package information for org.apache.cordova.file

・対処方法
1.以下の設定ファイルを編集します。
*****\AppData\Roaming\npm\node_modules\cordova\node_modules\plugman\src\registry\registry.js

以下のようにプロキシサーバーのURLを追加します。

var p = settings.proxy || http://プロキシサーバのURL:ポート番号
var sp = settings['https-proxy'] || p
opts.proxy = remote.protocol === "https:" ? sp : p

2.プラグイン追加を再実行します。
>cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
Fetching plugin "https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" via git clone
Installing "org.apache.cordova.file" for android


2014年4月21日月曜日

localStorage Cordova(PhoneGap)

localStorageとは、前回のsessionStorageと同様に、Cordovaフレームワークを用いた、HTML5ベースのアプリ開発で利用できる、もっとも簡単なストレージの一つです。
localStorageは、KeyとValueをペアとして、データにアクセスできるストレージです。
sessionStorageとは異なり、ウィンドウやタブを閉じても、データは保存されていて、同じオリジンであれば、ウィンドウ間でも共有されます。
また、データ容量は5MBであり、あまり大きいとは言えません。
この様なことから、localStorageは、データの永続化が必要であり、容量はさほど大きくならない、アプリの設定項目などを保存するストレージとして、利用するのが良いでしょう。

■データの保存
localStorageのsetItemメソッドを利用します。

以下は、「家入レオ」をKeyに、「サブリナ」をValueとして、データを保存しています。

var key = '家入レオ';
var data = 'サブリナ';
localStorage.setItem(key ,data);


以下は、JSONデータを保存する場合です。

var key = '家入レオ';
var obj = {
 Single1: 'サブリナ',
 Single2: 'Shine',
 Single3: '太陽の女神'
};
//object ⇒ string
var data = JSON.stringify(obj);
localStorage.setItem(key ,data);


■データの取得
localStorageのgetItemメソッドを利用します。

var data = localStorage.getItem(key);


以下は、JSONデータを取り出す場合です。

var data = localStorage.getItem(key);
//string ⇒ object
var obj = JSON.parse(data);


■データの削除
localStorageのremoveItemメソッドとclearメソッドを利用します。

localStorage.removeItem(key);


以下は、localStorageに保存されている全てのデータを削除する場合です。

localStorage.clear();

sessionStorage Cordova(PhoneGap)

sessionStorageとは、Cordovaフレームワークを用いた、HTML5ベースのアプリ開発で利用できる、もっとも簡単なストレージです。
sessionStorageは、KeyとValueをペアとして、データにアクセスできるストレージです。
データは、ウィンドウやタブを閉じるまで有効で、ウィンドウ間で共有はされません。
また、データ容量は5MBであり、あまり大きいとは言えません。
この様なことから、sessionStorageは、アプリのキャッシュのような、一時的なストレージとして、利用するのが良いでしょう。

■データの保存
sessionStorageのsetItemメソッドを利用します。

以下は、「家入レオ」をKeyに、「サブリナ」をValueとして、データを保存しています。

var key = '家入レオ';
var data = 'サブリナ';
sessionStorage.setItem(key ,data);


以下は、JSONデータを保存する場合です。

var key = '家入レオ';
var obj = {
Single1: 'サブリナ',
Single2: 'Shine',
Single3: '太陽の女神'
};
//object ⇒ string
var data = JSON.stringify(obj);
sessionStorage.setItem(key ,data);


■データの取得
sessionStorageのgetItemメソッドを利用します。

var data = sessionStorage.getItem(key);


以下は、JSONデータを取り出す場合です。

var data = sessionStorage.getItem(key);
//string ⇒ object
var obj = JSON.parse(data);


■データの削除
sessionStorageのremoveItemメソッドとclearメソッドを利用します。

sessionStorage.removeItem(key);


以下は、sessionStorageに保存されている全てのデータを削除する場合です。

sessionStorage.clear();


2014年3月30日日曜日

viewportのエミュレーション Cordova(PhoneGap)

viewportとは、仮想のブラウザウィンドウです。
CSSやJavaScriptが描画エリアとして参照しているのは、viewportです。

viewportの横幅は、デフォルトで980pxに設定されています。

では、端末の解像度が640px(width)の場合、viewportの右端の画像は切り除かれてしまうのでしょうか?

いいえ、その様なことはありません。

viewportを基準としてレイアウされた画像は、端末の解像度に合わせて、自動的に拡大縮小されるのです。
つまり、解像度の異なるどんな端末に対しても、viewportだけを意識していれば、イメージした通りに表示させることができるのです。

ところが、残念なことに、この仕組みが適用されるのは、iPhoneのiOSだけなのです。
androidでは、この仕組みがうまく適用されないのです。

しかも、androidは、iPhoneとは異なり、ベンダー毎に解像度やピクセル濃度(dpi)の異なる多種多様な端末が発売されています。

一体どのように、レイアウトの同一性を実現したら良いのでしょうか?

そこで登場するのが、viewportのエミュレーションです。

前置きが長くなりましたが、今回は、このviewportのエミュレーションについて、まとめてみました。


①viewportを端末の解像度、ピクセル濃度(dpi)に合わせることで、viewport = 端末画面 の関係にします。
viewportの設定は、head要素のmetaタグで以下のように行います。

<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi,
initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />

width=device-widthが解像度、target-densitydpi=device-dpiがピクセル濃度(dpi)を端末のサイズに合わせるための設定です。
その他のパラメーターは、ユーザーによる拡大縮小(ピンチイン、ピンチアウトなど)を抑止するための設定です。


②JavaScriptでviewportのサイズを取得します。
viewportサイズの取得は、①の設定によって、端末画面サイズの取得を意味します。

screen.width


③viewportのエミュレーション値と実際のviewport値の比率を求める。
例えば、viewportのwidthを640pxとして、エミュレーションする場合は、以下のようになります。

var scale = screen.width / 640 * 100 + "%";

④CSSのzoomプロパティでページ全体を拡大縮小する。


①から④を実施することで、viewportを任意のサイズ(width)として、エミュレーションすることができます。


以下は、viewportのエミュレーションを実現するJavaScriptの一例です。

function viewport(width) {
var rootElement = document.documentElement;
var scale = screen.width / width * 100 + "%";
rootElement.style.zoom = scale;
}

2014年3月16日日曜日

ネイティブのダイアログ表示 Cordova(PhoneGap)

CordovaによるAndroidアプリ作成に於いて、アラートや確認、入力のダイアログを表示する場合、JavaScriptのalert()やconfirm()、prompt()を利用するのではなく、Android標準のネイティブなダイアログを利用する方が良いでしょう。

Cordovaには、ネイティブのダイアログを表示するために、標準のプラグインが用意されています。
今回は、Cordovaによるネイティブのダイアログ表示について、まとめてみました。


[前提]
作成済みのプロジェクト
--------------------------------------------
ディレクトリ「hello」
パッケージ名「papakingyo.application.hello」
プロジェクト名「HelloWorld」
--------------------------------------------

①プラグインのインストール
プロジェクトのディレクトリ配下で以下のコマンドを実行します。

>cordova plugin add org.apache.cordova.dialogs
Fetching plugin "org.apache.cordova.dialogs" via plugin registry
Installing org.apache.cordova.dialogs (android)


②インストールしたプラグイン一覧の確認

>cordova plugin list
[ 'org.apache.cordova.dialogs' ]

pluginsディレクトリ配下に「org.apache.cordova.dialogs」がインストールされます。

hello
 + plugins
  + org.apache.cordova.dialogs
  android.json

③プラグインをプラットフォームに反映

>cordova prepare android


⑤入力ダイアログの表示

www/js/index.jsのonDeviceReady: function()の箇所を、以下のように編集します。

    onDeviceReady: function() {
        app.receivedEvent('deviceready');
       
function onPrompt(results) {
   alert("You selected button number " + results.buttonIndex + " and entered " + results.input1);
}

navigator.notification.prompt(
   'Please enter your name',  // message
   onPrompt,                  // callback to invoke
   'Registration',            // title
   ['Ok','Exit'],             // buttonLabels
   'Jane Doe'                 // defaultText
);
       
    },

プラットフォームへ反映
>cordova prepare android -d

アプリのコンパイル
>cordova compile android

動作の確認
>cordova emulate android





























以下のメソッドにより、アラートダイアログ、確認ダイアログも表示することができます。

・navigator.notification.alert
・navigator.notification.confirm

詳細は、以下のURLを参照してください。

https://github.com/apache/cordova-plugin-dialogs/blob/dev/doc/index.md


Cordova(PhoneGap)のアップデートについて

Cordovaは頻繁にアップデートされているようで、2014/03/05現在の最新バージョンは、3.4.0-0.1.3です。
※http://cordova.apache.org/から確認できます。

そこで、今回は、cordovaのアップデートについて、まとめてみました。


①開発環境に於ける現在のcordovaバージョンを確認してみます。

>cordova -v
3.3.1-0.1.2


②最新の状態ではなかったので、cordovaのアップデートを実施します。

>npm update cordova -g
npm http GET https://registry.npmjs.org/cordova/latest
npm http 200 https://registry.npmjs.org/cordova/latest
npm http GET https://registry.npmjs.org/cordova
---
---
---
cordova@3.4.0-0.1.3 xxx\AppData\Roaming\npm\node_modules\cordova
├── mime@1.2.11
├── q@0.9.7
├── semver@2.0.11
├── underscore@1.4.4
├── shelljs@0.1.4
├── optimist@0.6.0 (minimist@0.0.8, wordwrap@0.0.2)
├── plist-with-patches@0.5.1 (xmlbuilder@0.4.3, xmldom@0.1.19)
├── elementtree@0.1.5 (sax@0.3.5)
├── npmconf@0.1.13 (once@1.3.0, inherits@2.0.1, osenv@0.0.3, ini@1.1.0, mkdirp@0.3.5, nopt@2.2.0, config-chain@1.1.8)
├── xcode@0.6.6 (node-uuid@1.3.3, pegjs@0.6.2)
├── tar@0.1.19 (inherits@2.0.1, block-stream@0.0.7, fstream@0.1.25)
├── request@2.21.0 (forever-agent@0.5.2, qs@0.6.6, tunnel-agent@0.3.0, aws-sign@0.3.0, json-stringify-safe@4.0.0, oauth-sign@0.3.0, node-uuid@1.4.1, cookie-jar@0.3.0, hawk@0.13.1, http-signature@0.
9.11, form-data@0.0.8)
└── plugman@0.20.2 (bplist-parser@0.0.5, nopt@1.0.10, rc@0.3.0, dep-graph@1.1.0, glob@3.2.9, request@2.22.0, npm@1.3.4)


③アップデート後の確認をします。

>cordova -v
3.4.0-0.1.3

正常にアップデートされたことが確認できました。


これで、cordovaのアップデートは完了なのですが、旧バージョンで作成したプロジェクトについても、必要に応じてアップデートしておきたいところです。


④旧バージョンで作成したプロジェクトを確認してみます。

>cordova platform check
android @ 3.3.0 could be updated to: 3.4.0

cordova 3.3.0によって作成されたandroidプラットフォームのプロジェクトが、3.4.0へアップデートできることが確認できました。

実際にプロジェクト内のcordova.jsを確認してみました。

xxx\hello\platforms\android\assets\www\cordova.js

// Platform: android
// 3.3.0
/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

確かにバージョンは3.3.0になっています。


⑤プロジェクトのアップデートを行ってみます。

>cordova platform update android
---
Android project is now at version 3.4.0
If you updated from a pre-3.2.0 version and use an IDE, we now require that you import the "CordovaLib" library project.

これで、アップデートは完了です。


⑥アップデート後の確認をします。

>cordova platform check
All platforms are up-to-date.

全てのプラットフォームが最新の状態であることが確認できました。


実際にプロジェクト内のcordova.jsを確認してみました。

xxx\hello\platforms\android\assets\www\cordova.js

// Platform: android
// 3.4.0
/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

確かに、バージョンが3.4.0になっています。


これで、cordovaのアップデート及び、既存プロジェクトのアップデートは完了です。


2014年1月29日水曜日

Cordova3によるAndroidアプリ開発の流れ

いいね!Androidアプリ「Cordova3によるAndroidアプリ作成」でCordovaのインストールからアプリ作成の概要を書きました。今回は、ソースコードの編集と動作確認の流れをまとめてみました。

[前提]作成済みのプロジェクト
--------------------------------------------
ディレクトリ「hello」
パッケージ名「papakingyo.application.hello」
プロジェクト名「HelloWorld」
--------------------------------------------
※プロジェクトの作成方法はいいね!Androidアプリ「Cordova3によるAndroidアプリ作成」で確認できます。

1.wwwディレクトリ配下のソースコードを編集

wwwディレクトリの構造は以下の通りです。

hello
+ .corova
+ merges
+ platforms
+ plugins
+ www
+ css
index.css
+ img
logo.png
+ js
index.js
config.xml
index.html

index.html、index.js、index.cssファイルを編集します。


2.プラットフォームへ反映

>cordova prepare android
Generating config.xml from defaults for platform "android"
Preparing android project

「1」で編集した内容が、プラットフォームのwwwディレクトリ配下にコピーされます。

hello
+ .corova
+ merges
+ platforms
+android
+assets
+www
+css
+img
+js
config.xml
cordova.js
cordova_plugins.js
index.html
+cordova
+CordovaLib
+libs
+platform_www
+res
+src
AndroidManifest.xml
build.xml
local.properties
proguard-project.txt
project.properties

その他、プラットフォームのjavaファイルやAndroidManifest.xmlなども、編集した内容に合わせて更新されます。

※プラットフォームのwwwディレクトリを直接編集した内容は、prepareコマンドによって上書きされて残りません。


3.アプリのコンパイル

>cordova compile android
Compiling app on platform "android" via command "cmd" /c xxx\hello\platforms\android\cordova\build
Platform "android" compiled successfully.

プラットフォームのソースコードがコンパイルされます。
コンパイルによって、プラットフォームにbin、genディレクトリが作成されて(初めてのcompile時)、ディレクトリ内にclassファイルなどが作成(2回目以降は更新)されます。

hello
+ .corova
+ merges
+ platforms
+android
+assets
+bin
+cordova
+CordovaLib
+gen
+libs
+platform_www
+res
+src
AndroidManifest.xml
build.xml
local.properties
proguard-project.txt
project.properties


※以下は、「2」「3」を続けて実行するコマンドです。

>cordova build android
Generating config.xml from defaults for platform "android"
Preparing android project
Compiling app on platform "android" via command "cmd" /c xxx\hello\platforms\android\cordova\build
Platform "android" compiled successfully.


4.動作の確認

>cordova emulate android

エミュレータで動作確認をします。
※エミュレータの使用方法はいいね!Androidアプリ「Cordova3によるAndroidアプリ作成」で確認できます。

「1」から「4」を繰り返してアプリを完成させます。

Cordovaインストールとプロキシエラーについて

プロキシ経由の環境に於いて、cordovaのインストール作業を実施すると、以下のようなエラーに遭遇することになります。

>npm install -g cordova

npm http GET https://registry.npmjs.org/cordova
npm http GET https://registry.npmjs.org/cordova
npm http GET https://registry.npmjs.org/cordova
npm ERR! network connect ETIMEDOUT
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'


エラーを回避するためには、npmに対して、以下の設定を行う必要があります。

npm config set proxy http://プロキシサーバのURL:ポート番号
npm config set https-proxy http://プロキシサーバのURL:ポート番号

(例)
>npm config set proxy http://xx.xx.xx.xx:xxxx
>npm config set https-proxy http://xx.xx.xx.xx:xxxx


以下で、設定値を確認します。

>npm config list
https-proxy = "http://xx.xx.xx.xx:xxxx/"
proxy = "http://xx.xx.xx.xx:xxxx/"


これで、プロキシ経由環境でcordovaをインストールすることができるようになります。

2014年1月26日日曜日

Cordova3によるAndroidアプリ作成

以前、いいね!Androidアプリ「PhoneGap (Cordova) によるAndroidアプリ作成」で、Cordovaによるアプリ作成について書きました。今回は、何が違うのかというと、Cordovaのバージョンが2.x.xから3.x.xになって、Cordovaの開発環境構築に、Node.jsを用いていることです。

それでは、環境構築、プロジェクトの作成、エミュレータでの実行までを、順を追って説明します。

■android開発環境の構築

androidの開発環境が構築されていない方は、
いいね!Androidアプリ「SDK ADT Bundle for Windows」による開発環境の構築①」を参照して構築してください。

■Antのインストール

いいね!Androidアプリ「ZXingでバーコードリーダーを作ってみよう①」の中で、Antのインストールについての記載があります。
こちらを参照して、インストールしてください。

■環境変数(path)の設定

以下のAndroid sdkとAntのディレクトリに対して、pathを通します。

[Android sdk root]\sdk\tools
[Android sdk root]\sdk\platform-tools
[Ant root]\bin

■node.jsのインストール

以下の手順に従って、node.jsをインストールしてください。

以下のnodejs公式サイトからダウンロードします。

http://nodejs.org/


[DOWNLOADS]をクリックします。


[Windows Installer(.msi)]から選択します。


[Next]をクリックします。


ライセンスに同意して、[Next]をクリックします。


[Next]をクリックします。


[Next]をクリックします。


[Install]をクリックします。



[Finish]をクリックします。

node.jsをインストールをすると、Node.jsとパッケージマネージャのnpmがインストールされます。
インストール完了の確認として、バージョンを表示してみます。

>node -v
v0.10.25

>npm -v
1.3.24

■cordovaのインストール

>npm install -g cordova

インストール完了の確認として、バージョンを表示してみます。
>cordova -v
3.3.1-0.1.2

■プロジェクトの作成

ディレクトリ「hello」
パッケージ名「papakingyo.application.hello」
プロジェクト名「HelloWorld」

として、プロジェクトを作成してみます。

>cordova create hello papakingyo.application.hello HelloWorld

Creating a new cordova project with name "HelloWorld" and id "masuoka.application.hello" at location "xxx\hello"
Installing cordova library for www...
Downloading cordova library for www...
Download complete
Installing cordova library for www...

■プラットフォームの追加

作成したプロジェクトhelloにandroidプラットフォームを追加します。

>cd hello
>cordova platform add android

Installing cordova library for android...
Downloading cordova library for android...
Download complete
Installing cordova library for android...
Creating android project...
Preparing android project

追加したプラットフォームを確認します。
>cordova platforms ls
Installed platforms: android 3.3.0
Available platforms: blackberry10, firefoxos, wp7, wp8, windows8

■エミュレータ

作成済みのエミュレータを確認する。
>android list avds

Available Android Virtual Devices:
    Name: 4.4
    Path: xxx\avd\4.4.avd
  Target: Android 4.4.2 (API level 19)
     ABI: armeabi-v7a
    Skin: 480x800
  Sdcard: 16M

エミュレータを起動する。
>emulator @4.4


作成したプロジェクトをエミュレータで実行する。
>cordova emulate android -d