APIの説明:デバイス・インターフェース

はじめに

デバイスインターフェースを利用するには、COM.CURL.CAEDE.NATIVE-INTERFACEパッケージが必要になります。(フレームワークの使い方に記載しているCOM.CURL.CAEDEをデリゲートすれば利用可能です)

 

COM.CURL.CAEDE.NATIVE-INTERFACEパッケージをimportしてください。

{import * from COM.CURL.CAEDE.NATIVE-INTERFACE}

 

デバイス情報の取得

get-the-deviceプロシージャを使ってDeviceオブジェクトを取得することで情報を取得できます。

def d = {get-the-device}
{output
  {format “name=%s platform=%s version=%s”, d.name, d.platform, d.version}
}

 

カメラ

run-cameraプロシージャを使ってデバイスに付属しているカメラを起動します。写真取得後に画像のUrlを取得するために、CameraFinishedEventハンドラ―を登録します。

{run-camera
  {on e:CameraFinishedEvent do
    {if not e.canceled? then
      {output e.media-url.name}
    }
  }
}

 

ローカルストレージ

永続的データとしてデータの保存ができます。

KvsStorage

let conn:StorageConnection = {StorageConnection.open
                                                        “testdb”, || 任意の名前
                                                        type = StorageType.kvs
                                                    }
def s = conn.storage asa KvsStorage

|| set (値のセット)
set s[“key1”] = “val1” || or {s.set “key1”, “val1”}
set s[“key2”] = “val2” || or {s.set “key2”, “val2”}

|| get (値の取得)
{output s[“key2”]} || or {s.get “key2”}

|| find (部分一致検索)
{for v key k in {s.find “key”} do
  {output k, v} || 2件がヒットする
}

 

RdbStorage

def con = {StorageConnection.open “testRDBdb”} ||任意の名前
def storage = con.storage asa RdbStorage

||(SQLによる) テーブル作成、初期データ作成
{storage.execute-update “DROP TABLE IF EXISTS TEST”}
{storage.execute-update “CREATE TABLE TEST (COL1 integer, COL2 text)”}
{con.begin}
{for i = 0 below 5 do
    {storage.execute-update “INSERT INTO TEST values(?, ?)”, i, “DATA” & i}
}
{con.commit} || commit

||(SQLによる)データ取得
def rows = {storage.execute-query “SELECT * FROM TEST”}
{for r in rows do
    {output 
        {format
            “RDB test col1=%s col2=%s”, 
            {r.get-int “COL1”}, 
            {r.get-String “COL2”}
        }
    }
}
{storage.execute-update “DROP TABLE IF EXISTS TEST”}
{popup-message “Please see the console log.”}

 

 

 

GPS

start-location-notifierを使って、GPSを起動します。GPSで値を取得したらLocationChangedEventが発生します。また、GPSを止める場合は、stop-location-notifierを利用します。

{start-location-notifier
  {on e:LocationChangedEvent do
    def loc = e.location || Locationオブジェクト
    {output {format “lat=%s, lng=%s”, loc.latitude, loc.longitude}}
  }
}

 

加速度センサー

start-accelerometer-notifierを使って、加速度センサーを起動します。加速度センサーからの通知があった場合にはAccelerometerEventが発生します。また、加速度センサーを止める場合には、stop-accelerometer-notifierを利用します。

{start-accelerometer-notifier
  {on e:AccelerometerEvent do
    {output {format “x=%s y=%s z=%s”, e.x, e.y, e.z}}
  }
}

 

ネットワークのオンラインチェック

ネットワークがオンラインかどうかをチェックするには、network-online?プロシージャを利用します。

 

コンタクト

連絡帳データを取得したり、電話コール、メール送信をことができます。

 

def c-list = {find-contact-list “AB”} || 前方一致する連絡帳データ取得。
|| あるいは{get-contact-list}で連絡帳データ全件取得
{for c in c-list do
    {output {format “%s %s”, c.id, c.name}} || c.phones, c.emailsプロパティもある。
}

{call-phone “03123456789”}

{send-email {StringArray abc@curl.com}, “Test!”, “This is a test.”}