まめ畑

ゆるゆると書いていきます

ChumbyのNativeデバイスにアクセスするメモ

少し前からChumbyWidgetを作ったりしているのですが、加速度センサーやタッチスクリーンからの情報取得など、Chumbyのデバイスからの情報をWidgetで使用するための方法をメモ。
ChumbyNative - ChumbyWiki
こちらのページに取得を簡単にするために定数にまとめたクラスが紹介されていますが、ファイル関連などはControl Panelからしか使用出来ません。
基本的にWidgetからファイルの作成などなどは出来ません。
しかし、Control Panelをハックして置き換えることで、ChumbyのFlashメモリやUSBメモリにファイルを作成したりするWidgetも公開さててます。
こちらはUSBからの起動して、Control Panelを書き換えるやつですね。
Keybordやmouse・gamepadなどの項目もあります。
完全にWidgetから使えなそうなものは、Slaveを操作する物です。
masterがControl PanelでSlaveがWidgetです。


全て試していないので、Widget中からは使えないものもあるかもしれないですが、使うかも知れないものをメモしておきます。
基本的な使い方はASnativeで所望の関数を取得して呼び出します。

var _accelerometer:Function = ASnative(5,60);   //加速度センサの情報を取得する関数を取得
var X:Number = _accelerometer(2);   //X軸の傾き

関数に渡す引数で取得する情報を変化させたり、値をセットします。

FlashDevelopを使っている場合は「NSnative」だけだとコンパイルエラーが出るので、「_global」をつけてください。
こんな感じ

var _accelerometer:Function = _global.ASnative(5,60);   //加速度センサの情報を取得する関数を取得
var X:Number = _accelerometer(2);   //X軸の傾き

加速度センサ

var _accelerometer:Function = ASnative(5,60);   //加速度センサの情報取得用関数を取得

//引数
var ACCELEROMETER_VERSION:Number = 0;     //バージョン
var ACCELEROMETER_TIMESTAMP:Number = 1;   //取得時間
var ACCELEROMETER_CURRENT_X:Number = 2;   //X軸の傾き
var ACCELEROMETER_CURRENT_Y:Number = 3;   //Y軸の傾き
var ACCELEROMETER_CURRENT_Z:Number = 4;   //Z軸の傾き
var ACCELEROMETER_AVERAGE_X:Number = 5;   //X軸の傾き平均
var ACCELEROMETER_AVERAGE_Y:Number = 6;   //Y軸の傾き平均
var ACCELEROMETER_AVERAGE_Z:Number = 7;   //Z軸の傾き平均
var ACCELEROMETER_IMPACT_X:Number = 8;    //力が加わったときのX軸の傾き
var ACCELEROMETER_IMPACT_Y:Number = 9;    //力が加わったときのY軸の傾き
var ACCELEROMETER_IMPACT_Z:Number = 10;   //力が加わったときのZ軸の傾き
var ACCELEROMETER_IMPACT_TIME:Number = 11;     //力が加わった時間
var ACCELEROMETER_IMPACT_HINTS:Number = 12;    //力が加わった回数

力が加わった時の閾値の設定や取得の方法がわかりません。
設定や参照が出来ないのでしょうか?

タッチスクリーン

var _rawX:Function = ASnative(5,10);   //X座標 (取得した関数を呼ぶだけ)
var _rawY:Function = ASnative(5,11);   //Y座標 (取得した関数を呼ぶだけ)
var _getTouchClick:Function = ASnative(5,43);   //タッチ有効・無効の取得
var _setTouchClick:Function = ASnative(5,44);   //タッチ有効・無効の設定

//引数
var TOUCHCLICK_OFF:Number = 0;   //タッチの無効化
var TOUCHCLICK_ON:Number = 1;    //タッチの有効化

電源状態の取得

var _dcVolts:Function = ASnative(5,16);   //DC電源の入力電圧
var _batteryVolts:Function = ASnative(5,39);   //バッテリーの入力電圧
var _powerSource:Function = ASnative(5,41);   //電源元

//引数
var POWER_SOURCE_BATTERY:Number = 0;   //電池から
var POWER_SOURCE_EXTERNAL:Number = 1;  //DCから

画質

var _getBitmapSmoothing:Function = ASnative(5,300);   //スムージング状態の取得
var _setBitmapSmoothing:Function = ASnative(5,301);   //スムージング状態の設定

//引数
var BITMAP_SMOOTHING_OFF:Number = 0;  //無効
var BITMAP_SMOOTHING_ON:Number = 1;   //有効


この他にも、LCDの輝度や表示・非表示。ヘッドフォンジャックの接続状況や外部音楽プレイヤーの操作などもあります。
ボリュームや左右のスピーカのバランスもあります。
暗号化やネットワークタイムアウトの設定などもあるようですが、これらもWidgetからは使えなそうです。
少し気になるところとしては「graphic overlay」の項目です。
彩度や透明度の設定も出来るようなのですが、何に使うんだろうか。


スピーカはいじれますが、マイクは公式にサポートされていません。
そして、電池での動作も公式サポートはないですが、自分の環境では普通に動作します。