BREW API の基本的な使い方について解説します。BREW アプリの開発と保守の生産性が劇的に向上する BREW 向け C++ プログラミング環境 SophiaFramework UNIVERSE のサンプルコードもダウンロードできます。
SophiaFramework UNIVERSE : BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア
[ 新着情報 ] 2011/07/15、SophiaFramework UNIVERSE 5.3.0 リリース
描画エンジン (SFYRenderer クラス) による描画がより効率的になりました。
サスペンド時に描画エンジンを終了することで、デバイス画面ビットマップをメモリから解放できるようになりました。
SFXHTTPConnection クラスに接続タイムアウト機能を追加しました。
簡易なウェブブラウズ機能を提供する SFYWebBrowserWiget クラスを追加しました。 SFZWebBrowserControl クラスは内部でそれを使用します。
詳細は、SophiaFramework UNIVERSE リリースノートを参照してください。
SophiaFramework UNIVERSE リリースノート
目次
- 第 1 回 : BREW SDK をインストールしよう! 詳細記事
- 第 2 回 : HelloWorld プログラムを作ろう! 詳細記事
- 第 3 回 : 画面に描画してみよう! 詳細記事
- 第 4 回 : BREW の文字列について知ろう ! 詳細記事
- 第 5 回 : イベント処理って何だ? 詳細記事
- 第 6 回 : ビットマップを描画してみよう 詳細記事
- 第 7 回 : さらに描画のおはなし 詳細記事
- 第 8 回 : ファイルを操作してみよう 詳細記事
- 第 9 回 : 音を出してみよう 詳細記事
- 第 10 回 : 携帯電話で動かしてみよう 詳細記事
- 第 11 回 : TCP / IP ネットワークプログラミング 詳細記事
- 第 12 回 : HTTP ネットワークプログラミング 詳細記事
- 第 13 回 : BREW のテキストコントロール 詳細記事
- 第 14 回 : 暗号と復号のアルゴリズム 詳細記事
- 第 15 回 : BREW で GPS 詳細記事
- 第 16 回 : Web サイトの表示方法 詳細記事
- 第 17 回 : サスペンドとレジューム 詳細記事
- 第 18 回 : BREW でカメラ (前編) 詳細記事
- 第 19 回 : BREW でカメラ (後編) 詳細記事
- 第 20 回 : 乱数と浮動小数点 詳細記事
- 第 21 回 : BREW のタイマー 詳細記事
- 第 22 回 : BREW で GUI プログラミング 詳細記事
前提条件
- BREW ネイティブアプリ ⇒ BREW SDK 3.1
- SophiaFramework UNIVERSE 5.1 アプリ⇒ BREW 4.0
サポートについて
ソフィア・クレイドルは以下のソフトウェアの使用または使用不能に関する、サポートを実施いたしません。
また、これらのソフトウェアの使用によるいかなる障害や問題に対しても、一切の責任を負いません。
第 1 回:BREW SDK をインストールしよう!
BREW の概要、BREW SDK のインストール、BREWエミュレータの使い方について解説します。
- BREW とは
- BREW は携帯 Java より高機能?
- BREW では勝手アプリを作れない?
- BREW は Java より高速?
- BREW の開発手順
- BREW SDK のインストール
- BREW SDK のメニュー
- BREWエミュレータの使い方
* ダウンロードするファイルはありません。
第 2 回:HelloWorld プログラムを作ろう!
実際にソースコードを書き、BREWエミュレータで動かしてみましょう。
画面に "Hello World" と表示する簡単なBREWアプリを作成します。
- BREW モジュール
- MIF ファイルの作成
- BREW の開発環境
- BREW プロジェクトの作成
- BREW プロジェクトの内容
- BREW アプレットの構造
- BREW アプレットの作成
- イベントハンドラ
- 画面への描画
- BREW エミュレータ用にコンパイルする
- BREW エミュレータで実行する
- 記事掲載プログラムのソースコード
- ダウンロード : HelloWorld.zip
- SophiaFramework UNIVERSE を使用して作成した ソースコード
- ダウンロード : yhelloworld_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 3 回:画面に描画してみよう!
画面描画のAPIについて詳しく説明するとともに、インタフェースやアプレット構造体についての理解を深めます。
- 四角形を描画するアプレット
- アプレット構造体 AEEApplet
- オブジェクトとインターフェイス関数
- BREWに用意されているインターフェイス
- オブジェクトの作成と取得
- オブジェクトの破棄
- IGraphics インターフェイス
- 図形を動かしてみよう
- 独自のアプレット構造体
- 記事掲載プログラムのソースコード
- ダウンロード : Square.zip
- ダウンロード : Shape.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : square_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
- ダウンロード : shape_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 4 回:BREW の文字列について知ろう !
BREWの文字列の扱い方について解説します。 また、文字列を画面に描画する方法や、フォントについても解説します。
- C言語の文字列操作のおさらい
- BREWの文字列操作
- デバッグ出力について
- BREWの2つの文字型
- ワイド文字の操作関数
- ワイド文字のエンコード
- 文字列の描画とフォント
- 今回のサンプル アプリ
- 記事掲載プログラムのソースコード
- ダウンロード : TextWrap.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : textwrap_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 5 回:イベント処理って何だ?
BREWのイベント処理について学びます。
- イベントハンドラ
- イベントハンドラでは長時間の処理をしてはいけない
- BREWで定義されているイベント
- アプレットの開始イベント
- アプレットの終了イベント
- アプレットのサスペンドとレジューム
- サスペンドとレジュームのエミュレート
- キーイベント
- イベント処理のサンプルアプリ
- 記事掲載プログラムのソースコード
- ダウンロード : Nico.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : nico_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 6 回:ビットマップを描画してみよう
ファイルやリソースに関する事柄とビットマップやイメージの描画について解説します。
- ファイルシステム
- リソースファイル
- リソースファイルを作成する
- リソースファイルからデータを取り出すには?
- IBitmap と IImage
- ビットマップの込み入った話
- ビットマップを描画してみる
- 透過色を使ってみる
- 記事掲載プログラムのソースコード
- ダウンロード : drawbmp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : drawbmp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 7 回:さらに描画のおはなし
今回も前回に引き続き描画の解説をいたします。
- クリッピングとは?
- クリッピングの前提事項と制約
- IGraphics インターフェースのクリッピングを使ってみる
- IDisplay インターフェースのクリッピングを使ってみる
- 実際のアプリでのクリッピング
- トランスレートとは?
- トランスレートを使ってみる
- クリッピングとトランスレート、何が便利なの?
- ビットマップの変形
- ビットマップの変形を行ってみる
- まとめ
- 記事掲載プログラムのソースコード
- ダウンロード : graphix.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : graphix_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 8 回:ファイルを操作してみよう
描画については 一通り解説しましたので、今回は第6回でも少しだけ取り上げたファイル システムについて解説したいと思います。
- ファイルシステムふたたび
- ファイルシステムを操作してみる
- ディレクトリを操作してみる
- ディレクトリやファイルを再帰的に列挙する方法
- 空ではないディレクトリを削除する方法
- ファイルを操作してみる
- ファイルのオープンとクローズ
- ファイルの情報を取得してみる
- ファイルからの読み込み
- ファイルへの書き込み
- まとめ
- 記事掲載プログラムのソースコード
- ダウンロード : filesystem.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : filesystem_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 9 回:音を出してみよう
今回はBREWで音を出してみましょう。
- BREWで再生できるメディア データ
- 音を出すためのインターフェイス
- 派生インターフェイス
- IMediaMP3 の例
- IMediaQCP の例
- インターフェイスの階層構造
- 音声再生の方法
- 方法1 - IMediaUtil を使用して再生
- 方法2 - IMedia 派生インターフェイスを作成してファイルを再生
- 方法3 - IMedia 派生インターフェイスを作成し、メディア データを格納したバッファを再生
- 今回のサンプル アプリ
- 方法1の実装
- 方法2の実装
- 方法3の実装
- メディア再生のあとしまつ
- 記事掲載プログラムのソースコード
- ダウンロード : PlayMedia.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : playmedia_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 10 回:携帯電話で動かしてみよう
今回はいよいよ携帯電話の実機で動作させてみましょう。
- 携帯電話で動かすには?
- 携帯電話用のモジュールが必要
- 認証ファイルが必要
- 携帯電話用のモジュールの作成
- Visual C++ BREW アドインの設定
- メイクファイルの生成
- ビルド
- メイクファイルとは
- 携帯電話へのインストール
- BREW の悩み
- インターフェイスの管理がめんどくさいんですけどぉ
- どっちかの文字列に決めてよね
- もっとゆっくりさせてよ!
- IGraphics でもテキスト描画したいよねぇ
- 機種依存が多いんでは?
- コントロールって難しーい
- 〜 BREW の先にあるもの〜
*ダウンロードするファイルはありません。
第 11 回:TCP / IP ネットワークプログラミング
「ソケットプログラミングは、ホスト名とポート番号を指定して接続すれば、あとはデータを送受信するだけ」という認識の方には、少々複雑かもしれません。
- BREW ソケットプログラミング
- アプリの概要
- MIF ファイルの設定
- ネットワークを使うための準備
- コールバック
- AEECallback 構造体
- TCP / IP ネットワークプログラミングの処理フロー
- IP アドレスの取得
- ソケット作成・接続
- メッセージの送信
- メッセージの受信
- SophiaFramework でソケットプログラミング
- SophiaFramework によるアプリ
- ネットワークを使うための準備
- コールバック
- SophiaFramework のメリット
- 記事掲載プログラムのソースコード
- ダウンロード : socketapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : socketapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 12 回:HTTP ネットワークプログラミング
IWeb は HTTP プロトコルを処理する BREW インターフェースです。URL などの各種通信パラメーターを設定し、通信をするコールバック関数を登録して、応答を待ちます。
- IWeb
- HTML ファイルの取得
- アプリの概要
- MIF ファイルの設定
- IWeb を使うための準備
- IWeb インターフェースの初期化
- HTTP 通信の開始
- WEBOPT_HEADERHANDLER
- WEBOPT_STATUSHANDLER
- メッセージの受信
- IGetLine インターフェースからの読み込み
- SophiaFramework によるアプリ
- BREW ネイティブのインターフェースポインタを SophiaFramework のスマートポインタに変換
- SFUHttpConnection クラス
- アプリの概要
- SFUHttpConnection を使う準備
- SFUHttpConnection の使い方
- HttpConnection の通知コールバック
- SFUSourceStream クラスを使用したデータの読み込み
- 記事掲載プログラムのソースコード
- ダウンロード : webapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : webapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
- SophiaFramework UNIVERSE を使用して作成したソースコード ( SFXHttpConnection クラスを使用)
- ダウンロード : httpapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 13 回:BREW のテキストコントロール
ITextCtl インターフェースはテキスト入力のための BREW 標準の GUI コントロールのひとつです。
- ITextCtl
- アプリの概要
- テキストコントロール
- ITextCtl インターフェースの初期化
- " Active " の意味
- イベントハンドリング
- 気をつけないといけないのは
- SophiaFramework によるアプリ
- テキストコントロールの配置
- テキストの取得
- 記事掲載プログラムのソースコード
- ダウンロード : textctlapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : textctlapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 14 回:暗号と復号のアルゴリズム
ICipher と IRSA は、暗号化と復号化のアルゴリズムが実装された BREW インターフェースです。暗号キーは、ハッシュ値を計算する IHash インターフェースを使います。これらのインターフェースは外部サーバと安全に通信したいときなどに便利です。
- 共通鍵、公開鍵、ハッシュ
- アプリの概要
- 準備
- MD5 の使用例
- ARC4 の使用例(暗号化)
- ARC4 の使用例(復号化)
- RSA
- RSA 使用例(公開鍵を使用した暗号化)
- RSA 使用例(秘密鍵を使用した復号化)
- SophiaFramework によるアプリ
- 複雑な GUI 構造を簡単に実現
- 記事掲載プログラムのソースコード
- ダウンロード : cipherapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : cipherapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 15 回:BREW で GPS
IPosDet は GPS を利用するための BREW インターフェースです。IPosDet を使うと、GPS から現在位置の緯度、経度、海抜高度、誤差などが取得できます。
- IPosDet
- アプリの概要
- GPS エミュレーション
- MIF ファイルの設定
- GPS 情報の取得
- AEEGPSInfo 構造体からの位置情報の取得
- SophiaFramework によるアプリ
- 浮動小数点演算
- 記事掲載プログラムのソースコード
- ダウンロード : gpsapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : gpsapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 16 回:Web サイトの表示方法
IHTMLViewer は HTML データをインライン画像も含めて画面にレイアウト表示する BREW インターフェースです。
- IHTMLViewer
- アプリの概要
- MIF ファイルの設定
- IHTMLViewer を使うための準備
- バッファ内の HTML データを使用した表示
- イベントハンドリング
- IHTMLViewer の通知コールバック
- リンク先の HTML データ表示
- SFRBrowserControl クラス
- SophiaFramework によるアプリ
- 使い方
- 記事掲載プログラムのソースコード
- ダウンロード : htmlviewerapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : htmlviewerapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 17 回:サスペンドとレジューム
電話の着信など優先度の高いイベントが発生すると BREW アプリは処理を停止します。通話などのタスクが終わると、 BREW アプリは中断していた処理を再開します。BREW アプリの処理の停止を"サスペンド"、再開を"レジューム"と呼びます。
- BREW のサスペンドとレジューム
- 注意事項
- アプリの概要
- サスペンド処理
- レジューム処理
- リソースの二重解放
- トレードオフ
- サスペンドとレジュームの再現
- SophiaFramework によるアプリ
- イベントハンドリング
- 記事掲載プログラムのソースコード
- ダウンロード : suspendapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : suspendapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 18 回:BREW でカメラ (前編)
「何時でも何処でも誰もがカメラマン」と言ってよいくらい、最近の携帯電話にはカメラが標準搭載されています。BREW でも、バージョン 2.1 からカメラ機能がサポートされました。
BREW におけるカメラのプログラミングを 2 回に分けて解説します。
- BREW とカメラ
- 動作モード
- ICamera インターフェース
- カメラ イベントとコールバック関数
- プレビュー 画像の表示
- camera_app の概要
- 準備
- カメラの初期化
- プレビュー
- カメラ インターフェースの解放
- 注意事項
- 記事掲載プログラムのソースコード
- ダウンロード : camera_app.zip
第 19 回:BREW でカメラ (後編)
第 18 回 " BREW でカメラ (前編) "で作成したアプリを機能拡張して、デジカメのように静止画撮影を行うためのプログラミングを解説します。
- スナップショット モード
- モード切り替えの鍵
- スナップショット モードは記録専用!?
- サスペンドとレジューム
- 追加するマクロと変数
- カメラインターフェースの初期化
- カメラの停止
- インターフェースの解放
- プレビューの開始
- スナップショットの撮影
- サスペンドとレジュームへの対応
- SophiaFramework でカメラの制御を行う
- 注意事項
- 記事掲載プログラムのソースコード
- ダウンロード : camera_app2.zip
第 20 回:乱数と浮動小数点
BREW では、現在時刻をシードとして乱数を発生させます。しかし、任意の値をシードとして乱数を発生させる方法は BREW 標準で用意されていませんので、独自に実装する必要があります。
- BREW の乱数
- アプリの概要
- 乱数の取得方法
- 乱数の性質
- BREW の浮動小数点演算
- BREW の浮動小数点演算と数学関数
- BREW 環境で通常の浮動小数点演算と数学関数を使用する方法
- SophiaFramework によるアプリ
- SophiaFramework の乱数クラス
- 浮動小数点演算と三角関数
- 記事掲載プログラムのソースコード
- ダウンロード : mathapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : mathapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 21 回:BREW のタイマー
BREW のタイマーは、ISHELL_SetTimer インターフェースで設定した一定時間経過後に登録した関数( コールバック関数 )を呼び出すコールバックです。
- BREW のタイマー
- 日付と時刻の表示
- アプリの概要
- ITimeCtl インターフェースによる時間表示
- タイマー
- SFXDate クラス
- SophiaFramework によるアプリ
- 使い方
- タイマー
- 記事掲載プログラムのソースコード
- ダウンロード : timerapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : timerapp_sf.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)
第 22 回:BREW で GUI プログラミング
BREW には実用レベルで使える GUI コンポーネントが標準で備わっていません。通常、GUI の実装ではコンポーネント別にオブジェクト指向的なプログラミングがなされます。つまり、すべてのイベントが適切なイベントハンドラに送られ、適切に処理されるようにプログラミングします。これはBREW アプリ開発における最大のボトルネックです。
- オブジェクト指向的な GUI を設計
- アプリの概要
- コンポーネント構造体
- コンポーネントの初期化
- コンポーネントの描画
- フォーカスの移動
- コンポーネントがフォーカスを取得できるかどうか
- コンポーネントを選択する
- コンポーネントのイベント処理
- さらに美しい設計のために
- SophiaFramework によるアプリ
- コンポーネントの配置
- ダイアログの作成
- SophiaFramework のメリット
- それでも SophiaFramework の使用をためらっている方へ
- 記事掲載プログラムのソースコード
- ダウンロード : guiapp.zip
- SophiaFramework UNIVERSE を使用して作成したソースコード
- ダウンロード : sfyguiapp.zip (SophiaFramework UNIVERSE 5.1/BREW4.0)