GPGAのやる気を持続する開発および、研究日記

2000-12-31

[]SoftBank総合Topページ 17:40


最終更新日:2007/06/27


SoftBankの開発に関する情報をまとめたページです。

対応端末はP5端末以降となります。

日記の日付が2000/12/31になっていますが、ここの内容を実際に書き込み始めたのは

2006/12/05からです。SoftBank用のまとめページということで、2000年の領域を使用しています。

更新履歴を見ると、どのような各項目があるかがわかりやすいです。




2000-12-30

[]更新履歴 16:04

2007/06/27

端末情報一覧に912SHと911Tを追加

2007/05/03

端末情報一覧に813SHを追加

2007/03/16

端末情報一覧に706P、813T、706N、813SH for Bizを追加

端末情報一覧の端末の並び方の変更および、発売日の追加

2007/03/13

端末情報一覧の3GCのCLDCのバージョンに記載ミスがあったのを修正

端末情報一覧812SH812Tを追加

2007/03/12

ブラウザジャンプの注意705Pの注意点を追加

端末情報一覧705Pの個別端末情報を更新

2007/02/16

端末情報一覧に707SC、709SC705NKを追加

端末情報一覧の802Nと703Nの個別端末情報を更新

2006/12/07

FAQという文体が適切でないため、よくある質問事項に変更

Jadファイルの設定方法の追加

2006/12/06

端末情報一覧の更新

各種注意事項を設立

各種注意事項ブラウザジャンプの注意を追加

2006/12/05

Java(SoftBank)の総合ページの設立

端末情報一覧の設立

FAQの設立

FAQJSCLとはを追加

FAQMEXAとはを追加

2000-12-29

[GPGAの開発環境 13:14

Java

・JDK1.3.1

・J2ME1.4.2

・WTK1.0.4

・WTK2.2


エミュレータ

・V-applli_SDK_121

・V-applli_SDK_122

・V-applli_SDK_132

・SOFTBANK_MEXA_EMULATOR11


★その他

・BCC5.5.1

nkf


テキストエディタで編集し、コマンドラインからBCCプリプロセッサ

Makefileを使用してビルドを行っています。

2000-04-01

[]Jadファイルの設定方法 13:53

  • 基本事項
    • 文字エンコードは「UTF-8」で記述する必要があります。
    • jadファイルサイズを、MIDP1.0は3KB未満、MIDP2.0は6KB未満に収める必要があります。
    • 2つのプログラムで、MIDlet-NameとMIDlet-Vendorが同一である場合、この2つのプログラムは同一のものとみなされます。


  • 必須MIDlet属性
    • MIDlet-Name
    • MIDlet-Version
    • MIDlet-Vendor
    • MIDlet-Jar-URL
    • MIDlet-Jar-Size
    • MIDlet-OCL(MIDP1.0のみ)
    • MIDxlet-API(MIDP2.0かつ、MEXA/JSCLの機能を使用する場合のみ)
    • MIDlet-1(一応条件必須属性だが、必須属性とほぼ変わらない)


★ 各属性の説明

  • MIDlet-Name
    • S!アプリ名を記述します。この項目はMIDP1.0なら16Byte以内、MIDP2.0なら32Byte以内に収める必要があります。
  • MIDlet-Version
    • S!アプリのバージョンを記述します。この項目はMIDP1.0なら16Byte以内の文字列、MIDP2.0なら数値である必要があります。
  • MIDlet-Vendor
    • S!アプリのベンダー名を記述します。この項目はMIDP1.0なら16Byte以内、MIDP2.0なら32Byte以内に収める必要があります。
  • MIDlet-Jar-URL
    • Jarファイル名を指定します。1024Byte以内に収める必要があります。
  • MIDlet-Jar-Size
    • Jarファイルのバイト数を指定します。80KByte以内に収める必要があるらしいですが、Jadファイルを3KB以内に収めなければいけないのに、この値が80KBまで使用できるというのはなぞです。
  • MIDlet-OCL
    • JSCLのライブラリを指定します。64KByte以内に収める必要があるらしいですが、こちらもJadファイルを3KB以内に収めなければいけないのに、この値が64KBまで使用できるというのはなぞです。
  • MIDxlet-API
    • MEXA/JSCLのライブラリを指定します。MEXAの機能を使用している場合、JSCL-1.4.2もしくは、MEXAと記載する必要があります。


では次に、以下の条件のときの、実際のJadファイルの記述を出します。

  • ファイル名および、メインクラス名が「sample」
  • 24x24の大きさののアイコンの画像ファイル「icon.png」がresフォルダに入っている。
  • アプリ名が「サンプル」。
  • ベンダー名が「Unknown」。
  • アプリバージョンが「1.0.0」。
  • jarファイルの名前が「sample.jar」。
  • jarファイルのサイズが「24,573byte」。
  • JSCLのバージョンが1.2.1
  • HttpConnectionを使用する。
  • レコードストアのサイズが「1024byte」。
  • 著作権を主張する。
  • 画面サイズを240x260固定にする。(QCIF端末やVGA端末でも、同一画面サイズにするため)
  • SDカードにアプリを保存することを許可する。
  • データフォルダ操作を行う


★ P5、P6、P7端末の場合

MIDlet-1: sample,icon.png,sample
MIDlet-Name: サンプル
MIDlet-Version: 1.0.0
MIDlet-Vendor: Unknown
MIDlet-Jar-URL: sample.jar
MIDlet-Jar-Size: 24573
MIDlet-OCL: JSCL-1.2.1
MIDlet-Network: Y
MIDlet-Icon: icon.png
MIDlet-Data-Size: 1024
MIDlet-Copyright: Y
MIDlet-Application-Range: 0,0
MIDlet-Save: Y
MIDlet-Application-Security: Y

★ 3GC端末の場合

MIDlet-1: sample,icon.png,sample
MIDlet-Name: サンプル
MIDlet-Version: 1.0.0
MIDlet-Vendor: Unknown
MIDlet-Jar-URL: sample.jar
MIDlet-Jar-Size: 24573
MIDxlet-API: JSCL-1.2.2
MIDlet-Permissions: javax.microedition.io.Connector.http,com.j_phone.io.Connector.StorageConnection.read,com.j_phone.io.Connector.StorageConnection.write
MIDlet-Icon: icon.png
MIDlet-Data-Size: 1024
MIDxlet-ScreenSize: 240,260

上記はそのままコピペで使用できるものです。


では解説に行ってみましょう。

まず、「:」と各項目の間にスペースがありますが、これは見易さのためです。

jadファイルは、「MIDlet-xxx:」から各項目までの間スペースは、無視される仕様になっています。


★ P5、P6、P7端末の場合

MIDlet-1: sample,icon.png,sample        # 名前,アイコンファイル名,メインクラス名を「,」区切りかつ、スペースなしで記述します。
MIDlet-Name: サンプル                   # アプリ名を記述します。
MIDlet-Version: 1.0.0                   # バージョンを記述します。
MIDlet-Vendor: Unknown                  # ベンダー名を記述します。
MIDlet-Jar-URL: sample.jar              # jarファイル名を記述します。
MIDlet-Jar-Size: 24573                  # jarファイルサイズを記述します。
MIDlet-OCL: JSCL-1.2.1                  # JSCLのバージョンを記述します。 P5は「1.2.1」、P6は「1.2.2」、P7は「1.3.2」になります。
                                          上位互換はあるので、JSCL1.2.1のAPIしか使用していない場合、P6、P7端末で「1.2.1」と記述しても問題ありません。
MIDlet-Network: Y                       # HttpConnection通信の利用の有無を記述します。
                                          「Y」は利用する、「N」は利用しないことを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
MIDlet-Icon: icon.png                   # アイコンのパスを記述します。
MIDlet-Data-Size: 1024                  # レコードストアのサイズを記述します。
MIDlet-Copyright: Y                     # 著作権の有無を指定します。「Y」は著作権の有り、「N」は著作権の無しを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
MIDlet-Application-Range: 0,0           # 高精細モードの指定です。この項目を入れると、画面サイズを240x260と認識します。この属性を入れないと画面サイズは120x130となってしまいます。
MIDlet-Save: Y                          # 外部機器への保存許可の有無を指定します。
                                          「Y」は利用する、「N」は利用しないことを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
MIDlet-Application-Security: Y          # 内部情報取得機能の使用の有無を指定します。
                                          「Y」は利用する、「N」は利用しないことを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
                                         内部情報とは、位置情報(緯度、経緯、地名)の取得、メール着信情報の取得、音声着信情報の取得、メールの送信、アドレス帳やメールボックスの操作、データフォルダ操作のことです。

★ 3GC端末の場合

MIDlet-1: sample,icon.png,sample        # 名前,アイコンファイル名,メインクラス名を「,」区切りかつ、スペースなしで記述します。
MIDlet-Name: サンプル                   # アプリ名を記述します。
MIDlet-Version: 1.0.0                   # バージョンを記述します。
MIDlet-Vendor: Unknown                  # ベンダー名を記述します。
MIDlet-Jar-URL: sample.jar              # jarファイル名を記述します。
MIDlet-Jar-Size: 24573                  # jarファイルサイズを記述します。
MIDxlet-API: JSCL-1.2.2                 # MEXA/JSCLのバージョンを記述します。3GCの最下位端末のJSCLのバージョンは1.2.2なので
                                          ここでは「JSCL-1.2.2」としていますが、MEXAに対応している端末をしようするのであれば「MEXA」と記述して問題ありません。

# MIDlet-Permissionsの説明は長くなるので、後に別途記述します。
MIDlet-Permissions: javax.microedition.io.Connector.http,com.j_phone.io.Connector.StorageConnection.read,com.j_phone.io.Connector.StorageConnection.write
MIDlet-Icon: icon.png                   # アイコンのパスを記述します。
MIDlet-Data-Size: 1024                  # レコードストアのサイズを記述します。
MIDxlet-ScreenSize: 240,260             # 高精細モードの指定です。この項目を入れると、画面サイズを240x260と認識します。一部の端末はこの属性を入れないと画面サイズがVGAサイズになってしまいます。

まず、MIDP1.0からMIDP2.0で変更になった属性は以下となります。

・MIDlet-OCL                 → MIDxlet-API
・MIDlet-Application-Range   → MIDxlet-ScreenSize


次に、MIDP1.0からMIDP2.0になって変更し、そしてSoftBankのMIDP2.0端末では無視されるようになった属性は以下となります。

・MIDlet-Network                 → MIDxlet-Network
・MIDlet-Save                    → MIDxlet-Save                     # MIDP2.0の端末は常に外部機器に保存できるようになった。
・MIDlet-Application-Security    → MIDxlet-Application-Security


★ MIDlet-Permissionsについて

MIDP2.0になって一部のAPIを使用する場合、警告ダイアログが出るようになりました。

MIDlet-Permissionsは、その警告ダイアログが出るAPIをアプリ内部で使用している場合

そのAPIに適したパーミッションを記述する必要があります。

数が多すぎるため、この場で全てのパーミッションを挙げることはしませんが、主に使用するパーミッションは以下となります。

  • javax.microedition.io.Connector.http
    • HttpConnectionを使用する場合に、このパーミッションを設定してやる必要があります。
    • また、例外としてMIDP1.0/CLDC1.0のみを利用したアプリを、MIDP2.0対応端末向けに提供する場合もこのパーミッションを設定しなければなりません。
  • com.j_phone.io.Connector.StorageConnection.read
    • データフォルダからデータを読み込む場合に、このパーミッションを設定してやる必要があります。
  • com.j_phone.io.Connector.StorageConnection.write
    • データフォルダにデータを書き込む場合、フォルダを作成する場合に、このパーミッションを設定してやる必要があります。

各APIに対応するパーミッションは開発ガイドMIDP2.0対応端末編

[2.3.2. セキュリティ]内の表2.3.2-2.「セキュリティダイアログ表示対象API一覧」を確認してください。

2000-03-31

2000-03-01

[]ブラウザジャンプの注意 17:38

JSCLもしくは、MEXA Unit1に対応している端末であれば

BrowserConnectionクラスを使用することでブラウザジャンプを行うことができる。


BrowserConnectionクラスに対応していないのは以下の端末である。

  • SEシリーズ
  • NKシリーズ
  • MOシリーズ
  • Pシリーズ
  • 804N以降のNシリーズ
  • 804SS

これらの端末は、MIDP2.0で標準とされている

MIDlet#platformRequestメソッドを使用することによってブラウザジャンプを行うことができる。


各APIのブラウザジャンプの例は以下となる。


★ BrowserConnectionクラスを使用した場合

final public void browserJump(String url) {
    try {
        BrowserConnection bcon = (BrowserConnection)Connector.open("url:" + url.substring(url.indexOf("http:")+1));
        bcon.connect();
        bcon.close();
    } catch(Exception e) {
    }
}

★ MIDlet#platformRequestメソッドを使用した場合

Midlet mlt; // すでにメインクラスが代入されているとする

final public void browserJump(String url) {
    try {
        mlt.platformRequest(url);
    } catch(Exception e) {
    }
}

どちらのbrowserJumpメソッドも渡す文字列は、"http:"から始まるURLである。


使用例)

    browserJump("http://www.hogehoge.com/index.html");

なお、私の場合はプリプロセッサを使用しているので、ブラウザジャンプを行うメソッドは以下となる。

Midlet mlt; // すでにメインクラスが代入されているとする

final public void browserJump(String url){
    try {
        #ifdef (3GC)
        mlt.platformRequest(url);
        #else
        BrowserConnection bcon = (BrowserConnection)Connector.open("url:" + url.substring(url.indexOf('http:') + 1));
        bcon.connect();
        bcon.close();
        #endif
    } catch(Exception e) {
    }
}


★ 注意事項

MIDlet#platformRequestを使用した際に

サイトへ飛べなかったり、V803Tではアプリケーションエラーが発生していたことがありました。


原因を追究したところ、MIDlet#platformRequestを呼んだ直後に

MIDlet#notifyDestroyedを呼んで、アプリを終了させていることが原因でした。

BrowserConnectionのブラウザ起動の直後にMIDlet#notifyDestroyedを

呼んでいても、問題が発生しないようです。


推測ですが、BrowserConnectionでのブラウザ起動はシングルスレッドで行われるものであり

MIDlet#platformRequestでのブラウザ起動はマルチスレッドで行われるものなのでしょう。

MIDlet#platformRequestの後にThread#sleep(2000)を間に挟んだところ、問題なくブラウザ起動が

行われ、その後アプリは正常に終了してくれました。


―――――――――――――――――――― 07/03/12 追記 ――――――――――――――――――――

705Pブラウザジャンプが行えない場合があります。

これは通信ピクト表示中、ネイティブのブラウザ起動ができないという端末制限のようです。


―――――――――――――――――――― 07/09/03 追記2 ――――――――――――――――――――

検索で良くある項目の中に、「platformRequest Permissions」というのがあるので記載しておきますが

platformRequestメソッドを使用する際にパーミッションの設定は必要ありません。

正しく処理ができない人は、コンパイルするときに MIDP2.0 のクラスパスを設定していない可能性がありますので

正しく設定しているかどうかを確認してください。

2000-02-29

[]よくある質問事項総合ページ 10:55

よくある質問事項に該当しそうな項目を随時追加していきます。