DIGIらいふ 〜スマートに行こう!〜

2007-01-24

[][][] 教科書が教えてくれないクラス「HAL」 00:39

HAL(Hardware Abstraction Layer)という文字通り端末情報を操作する為のクラスがあります。このクラスを使うと端末のデバイスUIDやCPU速度、メモリ容量、電池残量といったシステム値を取得することが出来ます。またクリック音やバックライトのOn/Offといった設定を変更することも出来ます。ただし切り替え可能な値についてはそれなりのケイパビリティが必要になります。


例えば端末のUID(P990iやM600と区別するためのUID。IMEIとは違います。)を取得する場合は以下のようになります(実際に使用する場合は「hal.h」のインクルードとライブラリに「hal.lib」を指定する必要があります)。

TInt dValue;

HAL::Get(HALData::EMachineUid,dValue);

P990i上でこれを実行すると「0x1020e285」が返ってきます。この値を利用すれば各デバイスによってアプリの動作を変更させることも可能になります。なおHALの詳細が気になる方は「hal.h」や「hal_data.h」を参照して下さい。結構な数があるので面白いです。あと余談ですがおそらくSwissMgrのSystemタブで表示している情報はHALを利用して表示しているのだと思われます。


しかし、割と使われそうなこの関数、例によってSDKのドキュメント(UIQ3、S60共に)には載っていませんでした。うーむ…。


追伸:masa_shionさんへ

メールで質問しましたがこちらの件に関しては自己解決してしまいました。お騒がせしてすみませんでしたm(_ _)m。

tmxtmx 2007/01/24 00:47 あくまでM1000の話ですが、バックライトのOnはHALを使わなくても出来ますよー、っというかHALってクラスは初めて知りました。(ぉぃ
(あ。もちろん広義で言うHALは知ってますけどね。^^;

ので、たぶん、UIQ3でもUIQ2と同じ方法でバックライトのOnは出来る気がします。ケイパビリティも関係ないんじゃないかなあ?
ただし、その方法だとバックライトのOffは出来ないんですけど。^^;;;

ma_digilifema_digilife 2007/01/24 08:15 師匠、おひさです(’◇’)ゞ
こちらも推測でアレですがその方法との違いは「コンパネの設定を変更する」のと「現在の状況を変更する」といった違いがあるのではないかと。
後者であればケイパビリティの必要は無さそうですね。

oakoak 2007/01/25 11:45 お邪魔いたします。
国内版E61とiGo Stowaway SIERRA Bluetooth keyboardをつないでみました。
本体キーでは中央部のキーが数字入力でした。
Bluetooth keyboardからは問題なく入力できますね。
shiftを拾っていないとのことでしたが、漢字-英字切り替えはshift+spaceで問題なくできました。
でもたしかにshiftを押すだけだと反応しませんね。??

ma_digilifema_digilife 2007/01/25 18:31 oakさん、こんにちは。
国内版E61でもいけるのですね(笑)。
ShiftについてはShift自体にはイベントが無くても、Space押した時にShiftの状態を見ているからかもしれません。

しのんしのん 2007/01/27 15:44 はじめまして。E70ユーザーです。StowawayBluetoothKeyboardとE70でいまのところ問題なく動いてます。時間つくってもうちょっと検証してみます。
http://e70fan.seesaa.net/