ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

BREWで、アプリを終了させたら、いきなり待ち受け画面(BREWネタメモ)

2005-01-14 22:31:00 | ケータイ
http://www.geocities.jp/xmldtp/index_brew.htmのネタに書く、メモ

アプリを終了させたいときに、ISHELL_CloseAppletを呼びだしたら、
アプリの選択画面でなく、いきなり待ち受け画面に行ってしまった。

ISHELL_CloseAppletの第二引数は、FALSEにすること。
もし、TRUEだと、待ち受け画面にいくかも。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BREWで、メニューからアプリを終了させたい(BREWネタメモ)

2005-01-14 22:29:02 | ケータイ
http://www.geocities.jp/xmldtp/index_brew.htmのネタに書く、メモ

メニュー(IMENUCTLインターフェース)からアプリを終了させたいときに、
クリアキーが押されたときの処理みたいに、HandleEventの返り値にFALSEを
入れても終了しない。

ISHELL_CloseAppletを呼ぶ。
このとき、第一引数は、わかると思うけど
第二引数は、FALSEにすること。
そうすれば、アプリの選択画面に、とんでくれる。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ICAMERA_SetMediaDataの引数,ドキュメントにない情報あり(ネタメモ)

2005-01-14 22:06:01 | ケータイ
http://www.geocities.jp/xmldtp/index_brew.htmのネタに書く、メモ

ICAMERA_SetMediaDataでファイル名を設定しようとしたとき、
BREW3.0.1SDKのAPIドキュメントをみると、

int ICAMERA_SetMediaData
(
ICamera * pICamera,
AEEMediaData * pmd,
const char * cpszMIME
)

で、3番目の引数、「MIME型のメディア」と書かれているだけで、これがどこに定義されているのかわからない(2番目の引数は、AEEMediaDataに書いてある)。

これは、AEEMIMETypesに定義されている(APIドキュメントは、「AEEMIMETypes」を参照のこと)
たとえば、JPEG画像で書き出したいなら(JPEGは、たいていExifフォーマットだろうけど。Exifかどうかは、auショップにいって、仲間ゆきえだっけ?が出ている総合カタログを見れば書いてある)、
#define MT_JPG "image/jpg"
って定義してある。

問題は、この定義をそのまま書くと、エラーになる。
理由は、このMIME型を宣言しているヘッダーファイルをインクルードしてないから
(ドキュメントに、どこに定義されているか書いていない)

#include "AEEMimeTypes.h"

を追加してくれ!


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BREWのICamera、ドキュメントの順番どおりには、できない(BREWネタメモ)

2005-01-14 21:54:47 | ケータイ
http://www.geocities.jp/xmldtp/index_brew.htmのネタに書く、メモ

BREW 2.1のSDKにあるドキュメント「BREW 2.1新インターフェース」
のP72にある、ICameraの手順、そのとおりにやると、ICamera_SetSize
でエラーになる(ここで、やるべきではないとのエラー)

理由:
よくわかんない

対応:
この手順でやると、成功する

(1)プレビューモードにする
ISHELL_CreateInstance(ICameraインスタンスの生成)
ICAMERA_RegisterNotify(コールバック関数登録)
ICAMERA_SetDisplaySize
ICAMERA_Preview

(2)コールバック関数内で、
Previewのとき、CAM_STATUS_FRAME:で
ICAMERA_GetFrame
IBITMAP_GetInfo
IDISPLAY_BitBlt
IDISPLAY_Update
→この状態でプレビューが次々表示される

(3)プレビューのとき、シャッターとなるキーが押されたら
ICAMERA_Stop

(4)コールバック関数内で
PreviewがストップされたとしてCAM_STATUS_DONE:にきたら
ICAMERA_SetMediaData(ファイル名設定)
(ICAMERA_SetSizeはしなくてもOK)
ICAMERA_RecordSnapshot

(5)コールバック関数内で
スナップショットが終了したとしてCAM_STATUS_DONE:にくる。
これで、指定したファイル名で、イメージファイルができている。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BREWのICamera、サンプルどおり書くとプレビューは表示されない(BREWネタメモ)

2005-01-14 21:41:55 | ケータイ
http://www.geocities.jp/xmldtp/index_brew.htmのネタに書く、メモ

BREW 2.1のSDKにあるドキュメント「BREW 2.1新インターフェース」
のP74にある、ICameraのサンプルコード、そのまま書くと、
プレビューは表示されない。

理由:
 プレビューのところで、たしかにプレビュー画像を画面のメモリ
に転送しているが(IDISPLAY_BitBltのところ)、そのあとで、再描画してない。
だから、メモリに転送しても、ざんねーん、描画してませんから。
 そのあとのメモリフリーに気をとられて、肝心のプレビューを表示してない斬り

対応:
IDISPLAY_BitBltのあとに、IDISPLAY_Updateを行う。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ケータイでわかる個人情報についてのまとめ(CGIから取得の場合)

2005-01-14 19:59:21 | ケータイ
 前に書くといった、ケータイからわかる位置情報、個人情報について、前回位置情報を書いたので、今回は個人情報について。

 個人情報は、主に、端末IDまたは、サブスクライバIDの取得となる。
 取得方法は、環境変数に入っているので、その環境変数を見る。

 ここで、3大キャリアにおいて、auとDocomo,ボーダフォンで異なる(auだけ違うって言うパターンは、これに限らず、結構ある)

---------------------------
・まず、Docomoとボーダフォン。これは、個人情報が、環境変数のユーザーエージェントに入っている。
したがって、PerlのCGIで
 $val = $ENV{HTTP_USER_AGENT};
で取得可能だ。

 この場合、どこに入っているかは、機種などによって異なる。
ユーザーエージェントのフォーマットは、

Docomoでは、
http://www.nttdocomo.co.jp/p_s/imode/spec/useragent.html
ボーダフォンでは
http://www.dp.j-phone.com/dp/tool_dl/web/useragent.php
に書かれている。

このへんの話は、いつも紹介している翔泳社の「携帯端末用Web制作バイブル」に書いてある。
P146から150を参照のこと。
perlでユーザーエージェントを取得するCGIプログラムなども記載されている。
ユーザーエージェントは、キャリア判別などに使える。

-------------------------------------------

au(EZweb)の場合は、少し話が違う。
ユーザーエージェントには、機種名しか入っていない。詳しくは、以下のURLを参照
http://www.au.kddi.com/ezfactory/tec/spec/4_4.html

と、ここまでしか、「携帯端末用Web制作バイブル」では書いていない。

で、サブスクライバIDは、どこに入っているのか?だが、ずばり、環境変数で、
 $val = $ENV{HTTP_X_UP_SUBNO};
に入っている。
このへんのことは、以下にくわしい。
http://specters.net/cgipon/labo/c_env.cgi?c=e&e=HTTP_X_UP_SUBNO

なお、auは、これ以外でも、いろんな値が環境変数に入っている。
それについては、ここを参照。
http://specters.net/cgipon/labo/c_env.cgi?c=e

-----------------------------------

ただし、個人情報は常に取得できるわけではない。
ユーザーが情報を送らないように設定した場合、送られないのは当たり前だが、
アプリケーションから、webサイトを呼び出すメソッド(や関数)を使ったり、
ポートの80番を直接Socketを使って接続した場合でも、取得できないことがある。

注意されたい

。。。。。って、なにを注意するんだ(^^;)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする