BREWアドバンスト・プログラミング

概 要

BREW(ブリュー)とは、KDDIのauで利用されている携帯電話向けアプリケーション開発・実行環境です。本書は、BREWプログラミングの入門レベルを超えた解説書。マルチメディアやネットワークプログラミングに取り組む開発者レベルのテクニックを、実践的なサンプルコードで体系的に解き明かします。

著者 笠野英松
価格 本体3300円(税別)
ISBN 4-7980-1103-7
発売日 2005/07/01
判型 B5変
色数 1色
ページ数 336
CD/DVD
対象読者 中級
シリーズ
表紙イメージ
購入 アマゾンで購入する

※リンク先によっては、販売ページが用意されていないことがあります。 あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

第1章 BREWアプリケーション環境

1.1 BREWアプリケーションの現状と今後

【1】EZアプリ

【2】PCアプリケーション環境との比較

【3】パーソナル/スタンドアロンでの利用

【4】ビジネス/ネットワークでの利用

1.2 開発資料について

【1】BREW SDK関連ドキュメント

【2】BREW開発スタートガイド

【3】KDDIのEZ アプリ(BREW)サービス仕様書

【4】KDDIのEZアプリ(BREW)の技術資料

【5】Qualcommのホームページ(日本)

【6】BREWのフォーラムページ(日本語)

【7】BREWデベロッパリソースページ(日本語)

第2章 BREWプログラミング環境

2.1 Windows/UNIXとBREW

2.2 BREW SDK:BREWプログラミングの特徴

2.3 導入:Windows XP/Visual Studio

2.4 テスト:dllファイルとBREWエミュレータ

2.5 テストとリリース:modファイルと実機

2.6 BREW/EZwebネットワーク

第3章 プログラミング技法

3.1BREWプログラミングのポイント

3.2 特徴/固有性

▼リスト3-1 BREW向けに書いたHelloworld.c

▼リスト3-2 典型的なCのHelloWorld.c

3.2.1 PC(VC++)との比較

● 4つの固定ルーチンが常設されている

● 構造体を定義して動的にメモリを確保する

3.2.2 C言語

3.2.3 mif/bar/bid/_res.h

▼リスト3-3 選択画面表示処理プログラム

3.2.4 ヘルパ関数

3.2.5 インスタンス/オブジェクト

(1)インスタンスの作成方法

(2)インスタンスの解放

(3)アプレットのオブジェクト作成

● AEEAppGen.c内のDISPLAYインタフェースの作成

(4)用語

(5)インタフェースの種類

3.2.6 プログラム構造

3.3データ構造

3.3.1 既定データ

3.3.2 データ型と値

(1)AECHAR

(2)AEEイベント

(3)AEE特権レベル

3.3.3 構造体(struct)

3.3.4 領域確保と解放

(1)利用可能領域サイズの確認

(2)個別に確保するよりも全体で確保する

● //***メモリ確保の指示***

▼リスト3-4 メモリ情報取得のサンプル

(3)確保・解放の繰り返しよりも全体としての確保・解放

3.3.5 日本語

3.4 「サラミ」プログラミング

3.4.1 モジュール化

(1)機能細分化によるモジュール化

(2)「ISHELL_PostEvent」によるイベント先送り

(3)タイマー設定によるコールバック

●アラーム関数「ISHELL_SetAlarm」

(4)「exec-wait」(実行命令発行と完了待ちの分解)方式による非同期処理

3.4.2 アプレット構造

▼リスト3-5 ウィンドウ作成ルーチンの例

3.4.3 ウィンドウ制御

3.4.4 インタフェース(API)

▼リスト3-6 ウィンドウ間移行制御ルーチンの例(BREW SDKサンプル・プログラム「MediaPlayer」ソースから抜粋)

(1)準備段階

(2)戻り値

(3)後処理

3.5 イベント

3.5.1 イベント・ドリブン

▼リスト3-7 アプレット・イベント処理

▼リスト3-8 文字処理ルーチン

3.5.2 ハードウェア割込み

▼リスト3-9 キー入力イベント処理

3.5.3 ソフトウェア割り込み

▼リスト3-10 ソフトウェア割り込み(EVT_COMMAND)

3.5.4 イベントの登録と通知のメカニズム

3.6 非同期/コールバック

3.6.1 非同期処理とAPI

コラム 同期処理と非同期処理

3.6.2 コールバックとAPI

(1)タイマーによるコールバック

●ISHELL_SetTimer

▼リスト3-11 コールバックの利用例

●タイマーのキャンセル

(2)汎用マルチタスクのためのコールバック

▼リスト3-12 タイマー(タイムアウト)によるコールバックの例

3.6.3 登録・通知API

(1)マルチメディア再生におけるイベント・コマンドの登録と通知

▼リスト3-13 「ISHELL_Resume」を使用したコールバックの連鎖処理のサンプル・コード

▼リスト3-14 IMediaインタフェースからのイベントの受け取り

●IMediaメディア通知構造体

(2)非同期処理とイベント・ドリブン処理

3.7 ファイル

3.7.1 オープン/クローズ

●ファイルのオープン

●ファイルのクローズ

●IFILEMGR解放

3.7.2 テスト

●ファイルがあるかどうかをテストするAPI

●作成モードでファイルをオープン

3.7.3 入力(読み込み)

▼リスト3-15 SampleProg1_FileDataGet1.c

▼リスト3-16 SampleProg1_FileDataGet2.c

3.7.4 出力(書き込み)と作成

▼リスト3-17 SampleProg1_FileDataWrite1.c

▼リスト3-18 ResumeWrite2.c

3.7.5 ファイルシステムの制限

(1)BREWアプリからのデータアクセス

(2)実機端末上でのファイル名の長さの制限

(3)エミュレータでのパス/ファイル名

(4)ファイル名の文字

(5)エミュレータの「アプレットディレクトリ」

(6)共有ディレクトリ

(7)共有ディレクトリにあるファイルの情報

(8)BREWの最大ファイル数/容量の指定

●Max Files:モジュールが作成可能なファイル数の最大値

●Max Space:モジュールが書き込み可能な大きさ(バイト数)の最大値

(9)BREWの最大ファイル数/容量の確認処理

(10)ファイルのパスとディレクトリの作成

3.7.6 ファイルまたはディレクトリの列挙(全検索)処理

▼リスト3-19 enum.c(Enum処理サンプルコード)

3.8 TCP/IPネットワーキング

3.8.1 オープン/クローズ

(1)インスタンス作成とソケットのオープン/クローズ

●INetMgrインスタンスの作成(pMe:アプレット構造体ポインタ)

●INETMGR_OpenSocketの仕様

●戻り値:

(2)ホスト情報

●INETMGR_GetHostByNameの仕様

▼リスト3-20 OpenSocket.c

(3)自IPアドレスに関して

●INETMGR_GetMyIPAddrの仕様

●戻り値:

3.8.2 接続

●ISOCKET_Connectの仕様

●戻り値:

3.8.3 受信

▼リスト3-21 ConnectServer.c

●ISOCKET_Readの仕様

●戻り値:

●エラー時「ISOCKET_GetLastError」によって得られるエラーコード

●ISOCKET_Readableの仕様

▼リスト3-22 SocketRecv.c

3.8.4 送信

●ISOCKET_Writeの仕様

●戻り値:

●エラー時「ISOCKET_GetLastError」によって得られるエラーコード

●複数バッファ書き込み「ISOCKET_WriteV」の仕様

●戻り値:

●ISOCKET_Writeableの仕様

3.8.5 送受信スループット設定とデータグラム・サービスの注意点

(1)スループット設定

(2)データグラム(UDP)サービス

▼リスト3-23 SocketSend.c

●ISOCKET_Bindの仕様

●戻り値:

●ISOCKET_SendToの仕様

●戻り値

●ISOCKET_RecvFromの仕様

●戻り値:

3.9 マルチメディア

3.9.1 静止画

●IGRAPHICS_StretchBltの仕様

●ラスター操作★

●IGRAPHICS_Updateの仕様

●戻り値:なし

▼リスト3-24 image.c

3.9.2 オーディオ

●ISHELL_DetectTypeの仕様

●戻り値

●ISHELL_GetHandlerの仕様

●戻り値

▼リスト3-25 SHELL_DetectTypeの利用例

▼リスト3-26 AudioPlayBuffer.c

●IMEDIA_SetMediaDataの仕様

●戻り値

3.9.3 動画像

●SETAEERECTとIMEDIA_SetRectの仕様

●戻り値:なし

●AEERect構造体

●IMEDIA_SetRect

●戻り値

3.9.4 連携

●ISHELL_BrowseURLの仕様

●URLの形式

●スキームの種類

●アドレスの形式

●ISHELL_CloseApplet

●戻り値

▼リスト3-27 browser.c

3.10 注意すべきポイント

3.10.1 メモリ

●メモリ処理のポイント

3.10.2 端末

3.10.3 エミュレータと実機の相違点

▼リスト3-28 smallfont.c

第4章 機能別コーディング例

4.1 イベント操作

●基本的なイベント

▼リスト4-1 イベント処理サンプルコード(event.c)

●判別処理

4.2 ネットワーク操作

▼リスト4-2 SampleProg1.c

4.3 マルチメディア再生

4.3.1 MP4/MP3メディア再生のサンプル

▼リスト4-3 simplemovie.c

4.3.2 拡張子に応じたメディア再生

▼リスト4-4 play_file.c

第5章 実例解説-機能とポイント

5.1 Examplesプログラム

▼リスト5-1 MediaPlayer.c

5.1.1 MediaPlayerのプログラム構造

●プログラム全体に関係する関数(CMediaPlayer_xxxxx)

●ウィンドウ制御関係の関数(CWindow_xxxxx)

●第1階層-メインウィンドウ制御関係の関数(CMainWin_xxxxx)

●第2階層-ファイル選択ウィンドウ制御関係の関数(CFileListWin_xxxxx)

●第3階層-ファイル再生制御関係の関数(CPlayerWin_xxxxx)

●再生進行バーの制御関係の関数(CProgCtl_xxxxx)

●補助関数(MP_xxxxx)

5.1.2 MediaPlayerの再生処理の流れの概要

●選択メニュー

●テキスト識別子

●作成されるボタンアイコン

5.1.3 MediaPlayerの再生処理のポイント

▼リスト5-2 AEEMediaUtil.c

5.2 ネットワーク・マルチメディア伝送再生

5.2.1 メインの処理フロー

●メイン処理のポイント

5.2.2 ファイル処理

●ファイル処理のポイント

5.2.3 ネットワーク処理

▼リスト5-3 SampleProg1_ONE_recv_拡張.c

●ネットワーク処理のポイント

5.2.4 メディア再生処理

●メディア再生処理のポイント

▼資料 RFC 3625のQCPフォーマット

5.2.5 その他

●その他のポイント

●マルチメディア・ネットワーク処理時のmif

PR

秀和システム