1 名前:デフォルトの名無しさん [2008/03/20(木) 21:43:54 ] J2ME CLDC+MIDPベースの携帯電話用Java(主にEZアプリ、Vアプリ)に関するスレッドです。 質問でも議論でも何でもこい、と。質問は公式資料をよく読んでからにしましょう。 前スレ: CLDC+MIDP+携帯電話用Javaスレッド part 7 pc11.2ch.net/test/read.cgi/tech/1180010672/ 過去スレ 携帯JAVAのスレッド pc2.2ch.net/test/read.cgi/tech/1011977260/ (DAT落ち) CLDC+MIDP+携帯電話用Javaスレッド part 2 pc5.2ch.net/test/read.cgi/tech/1070858996/ CLDC+MIDP+携帯電話用Javaスレッド part 3 pc5.2ch.net/test/read.cgi/tech/1091798483/ CLDC+MIDP+携帯電話用Javaスレッド part 4 pc8.2ch.net/test/read.cgi/tech/1108781476/ CLDC+MIDP+携帯電話用Javaスレッド part 5 pc8.2ch.net/test/read.cgi/tech/1132493827/ CLDC+MIDP+携帯電話用Javaスレッド part 6 pc11.2ch.net/test/read.cgi/tech/1155174514/ -- Java一般に関しては: 【初心者】Java質問・相談スレッド113【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1204363011/ NTT DoCoMoのiモード携帯電話用Java(iアプリ)については: iモード携帯電話用Java(iアプリ) Part16 pc11.2ch.net/test/read.cgi/tech/1198816379/ >>2-5 あたりにリンク集・;(`ε()゙
577 名前:デフォルトの名無しさん [2008/10/17(金) 13:59:49 ] >>469 自分も>>468 と同じ現象でハマっていますが、 JDK1.3にしてもダメなようです。
578 名前:デフォルトの名無しさん [2008/10/17(金) 16:27:07 ] すみません。 実機(923SH)で System.out.println()の中身を追跡する機能は無いのでしょうか? iアプリだと「トレース情報」で表示できますけど。 どなたかご存知の方お願いします。
579 名前:デフォルトの名無しさん [2008/10/17(金) 18:19:34 ] 実機でのJConnectorを利用したHTTP通信に嵌っています。 エミュレータでは動作するのですが、実機でNGな状態です(Apacheのログで確認)。 セキュリティに引っかかっている感じですが、そもそも以下のJADファイルは有効でしょうか? ------------------------- MIDlet-Name: Sample01 MIDlet-Vendor: Test MIDlet-Version: 1.0 MIDlet-1: Sample01, , Sample01 MIDlet-Jar-URL: Sample01.jar MIDlet-Jar-Size: 6975 MIDlet-Permissions: com.j_phone.io.Connector.CameraConnection.capture,com.j_phone.io.Connector.StorageConnection.read MIDxlet-API: JSCL-1.2.2 MIDlet-X-AllowURL-1: www.example.com/ -------------------------
580 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 18:29:42 ] MIDPの実機は標準出力はない
581 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 19:31:09 ] >>576 端末内のパス指定は file:///ms/フォルダ/ファイル のはず 今回の例だと file:///ms/Pictures/test2.jpg
582 名前:デフォルトの名無しさん [2008/10/19(日) 20:39:57 BE:102222443-2BP(34)] 実機での検証を行うため、開発中のアプリを「Trusted MIDlet」にしたいのですが、 手続きとか審査があるのでしょうか? スパイシーのビジネスプロバイダを使っています。
583 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 22:02:30 ] >>582 やりたいことがよく分からん…。 例えばFeliCaなんかを使っているアプリはTrustedでなければ公開できない。 Trustedにしたかったらソフトバンクと公式契約し、アプリにソフトバンクの署名を付けてもらった上で ソフトバンクのサーバにアップしなければならない。 「スパイシーのビジネスプロバイダを使っている」時点でTrustedの機能は使っていないと思われるので、 「アプリをTrustedにしたい」という意味が分からない。
584 名前:デフォルトの名無しさん [2008/10/19(日) 22:52:13 BE:76667033-2BP(34)] >>583 カメラ機能で撮影した画像をHTTP(S)で第三者のサーバへ送信するアプリです。
585 名前:582 [2008/10/20(月) 20:13:51 BE:477036487-2BP(34)] >>583 自己解決しました。 MIDlet-Permissionsの設定だけで行けました。 エミュだとTrustedにしないとエラーが出ていたもので。
586 名前:デフォルトの名無しさん [2008/10/22(水) 15:23:46 ] すみませんスレ違いかもしれないですが、 ビジネスプロバイダって初期費用5000円払ったら ずっと開発Cコース無料で利用できるってことですか? それともまた3か月後に支払うんですかね? 問い合わせにメール投げてもかえってこなくて。。
587 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 15:36:47 ] >>586 ★開発Cおよび教育向け開発Bディレクトリでは、月額料金は無料ですが、ご契約初回のみ初期費用5,000円(税抜)がかかります。 www.sappli.com/kiyaku.htm
588 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 09:55:41 ] PDAでMIDP使ってアプリを作る予定なんですけど PDAは容量制限とかあるのでしょうか? 書くとこわからなかったんでここに相談します。
589 名前:588 mailto:sage [2008/10/24(金) 09:58:26 ] PDA向けアプリを作るって事ですすみません。
590 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 13:12:59 ] >>588 機種によるのでは?
591 名前:586 [2008/10/24(金) 13:57:06 ] 回答ありがとうございます。 初回契約時に払えば、あとは無料って解釈でよかったんですね! ありがとうございます。 また質問になりますが、ビジネスプロバイダって 使用が制限されるAPI機能の詳細とか載ってないですよね? おおまかな感じで個人情報と通信のAPIが使えるとは書いてはあるけど。。 具体的にどういったことが出来るか知りたいんです; 一度5000円払って登録しないとわかんないんですかね^^; 登録されてる方で何か知っている方がいたら教えてくださいませんか? よろしくおねがいします。
592 名前:デフォルトの名無しさん [2008/10/24(金) 20:17:05 ] 「S! Appli MEXA Emulator 2.1」でHTTPSの実験をしようと考えています。 証明書をインストールしなければいけないそうですが、 「Readme_CertStoreTool.txt」を読んでもなかなかうまく行きません。 手元にあるファイルは、認証局から発行されたcrtファイルです。
593 名前:582 [2008/10/25(土) 01:38:27 BE:306667049-2BP(34)] >>591 個人情報や通信のAPI位なら制限はない様子。 他になにかしたいことがあれば、電話してみてはいかがでしょうか?
594 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 05:15:28 ] >>563 うむ…シュール過ぎるよな。
595 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 12:53:45 ] >>594 合コンで使える
596 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 20:31:42 ] 電車の中とかイベント会場では面白そう
597 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 22:54:31 ] 使い方工夫すれば広がる物もあるんだな。 貯金箱とかだって、良く考えれば銀行に預金した方が良くね?って話だしw
598 名前:デフォルトの名無しさん [2008/10/28(火) 20:05:08 ] S!アプリで、JADファイルにパラメータを埋め込んで、 それをアプリから取得することは可能でしょうか? やりたいことは、以下のアドレスのように、 JADファイルに'addpram1: param-x'などと記載して、 String addparam = System.getAppProperty("addparam1"); で取得する感じです。 urana.info/mobile/midp/addparamtojad.html どなたかご存知の方、アドバイスお願いします。
599 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 21:57:53 ] >598 最初の2行が質問で、続く4行がその答えで、自己解決では。 addparam1ってのがその何らかのアドレスを格納したパラメータで、 それをアプリから取得する記述例ってことでしょ、これ。 だったらそのアドレスのパラメータを他のパラメータに置き換えればいいだけだよ。 引用したURLで紹介してるのはそれをPHPでやってるってこと。 JADに直接記述するならPHPは関係ないな。
600 名前:デフォルトの名無しさん [2008/10/29(水) 13:25:09 ] >>599 >続く4行がその答え その方法、BREWの方でのサンプルで、 同じことをS!アプリで行うとヌルポで落ちます。 やってダメなので質問しました。
601 名前:600 [2008/10/29(水) 13:32:08 ] すいません。 × BREW ○ オープンアプリ
602 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 14:11:16 ] >600 S!でもオープンアプリでも関係ないよ。MIDPの仕様だから。 実際、自分はS!でもオープンアプリでもできてるし。 System.getAppProperty()は文字列の取得に失敗するとnullが返る。 try-catchでくくってエラー対策するのは当然として、 JADがUTF-8で記述されてないとダメ。 パラメータ書き足した後、SJISで保存し直しちゃってないか確認。 (それだとダウンロード自体できないかな?)
603 名前:600 [2008/10/29(水) 14:30:07 ] >>602 ありがとうございます。 ↓のようにJADファイルの最後の行に渡したいパラメータを追記しました。 ----- JADファイル ----- … … MIDlet-Application-Security: Y addparam1: 12312341234 ----------------------- で、アプリの方で以下のようにコーディングしました。 import javax.microedition.midlet.MIDlet; public static String tel = new String(System.getAppProperty("addparam1")); コンパイルが通らないです…。 importするクラスが悪いのでしょうか?
604 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 14:44:31 ] エラーログ見せるんだ!
605 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:08:23 ] getAppPropertyはMIDletクラスのメソッドだろ
606 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:11:23 ] コンパイル通らないなら完全にソースに問題ありじゃん
607 名前:600 [2008/10/29(水) 15:14:35 ] >>604 >>605 すみません。以下の方法で行けました。MIDletクラスのメソッドでした。 ありがとうございました。 public class Sample extends MIDlet { … public String tel = getAppProperty("tel"); public String url = getAppProperty("url"); … } >>602 値の取得ができました。ありがとうございました。 ところで、コンテンツアグリゲータとの関係で、 JADファイルの動的生成はやはり難しいでしょうか? PHPで動的生成できると面白いのですが…。
608 名前:600 [2008/10/29(水) 15:18:29 ] >ところで、コンテンツアグリゲータとの関係で、 >JADファイルの動的生成はやはり難しいでしょうか? >PHPで動的生成できると面白いのですが…。 S!アプリでの話です。オープンアプリの話ではないです。
609 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 16:57:53 ] 602だけど 「System.getAppProperty()は〜」はコピペで混乱させてスマン。>605の通りです。 でも上手くできてよかったな。 >607-608は、できないよ。
610 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 03:46:07 ] テキストビューワ的なオープンアプリってないよね? しおり付きのテキストビューワがkjx時代にあってお世話になったから作ってみようと思うんだけど、 まだ仕様すら読んでないんだけどできそうかな?
611 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 03:47:23 ] >>610 はau用のオープンアプリの話です
612 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 04:04:50 ] 端末内のファイルにアクセスできないからテキストファイルを容易するだけで一苦労だよ
613 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 04:07:43 ] >>612 jarを作る段階でtxtから文字列を抜き出してjarに埋め込もうかと思うんだけど、どうかな?
614 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 07:06:14 ] なんか仕様も読まずに尋ねちゃってる時点で作れないと思うよ
615 名前:おでん mailto:nintendoguy@163.com [2008/10/30(木) 23:36:11 ] ソフトバンクアプリを作成中ですが、なぜGameCanvasから引き続いたクラスの keypressed関数が呼び出されないのですか?
616 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 00:20:03 ] au用オープンアプリなんて言ってる時点でだめじゃん・;(`ε()゙
617 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 00:23:09 ] なんで?
618 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 22:47:48 ] au以外にOAP採用してる国内端末あるっけ? 元々java環境のsoftbankとdocomoにOAPといってもピンと来ないな
619 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 00:55:43 ] オープンアプリってのは OAP上で動くアプリのことなんで かららずしもau用って訳じゃあないけど >>618 の言いたいことはよおくわかる。 >>610 は仕様嫁ってことですね
620 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 15:55:50 ] >>619 OAPはいわばJVMなんだし、○○用って表現自体怪しいけどな でも言いたいことはよおくわかるよ
621 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 09:03:20 ] 本人はよく分からずに書いてるみたいだけど、 ニュアンスは伝わってるんだからそんな揚げ足とってツッコまなくてもいいやん・;(`ε()゙ >jarを作る段階でtxtから文字列を抜き出してjarに埋め込もうかと思う これもやろうとしてることがイマイチ分からないけど、 抜き出して〜とかしなくてもtxtファイルを直接jarに含めればいいよ。 ということで後はリファレンス読んで頑張れ。
622 名前:デフォルトの名無しさん [2008/11/02(日) 19:51:36 ] 上の方で同じ質問があったかもだけど、俺も実機でアプリを動かそうとしたら オープンアプリ7Fエラーが出て超困ってる。 特に端末依存なAPIは使ってない。何が原因か分からん…メモリは結構使うタイプのアプリだけど、起動直後に落ちるとか意味分からん。タイトル画面を表示する段階では何も生成してないっつの。 各端末によってクラスァイルの数とかに制限があるのだろうか。こういうところで詰まったことのある人ヘルプ!
623 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 21:56:27 ] 前7Fエラーで詰まってたものだけど 別ファイルで作ってた敵とか自機のクラスで GameCanvasを継承させてたのが原因だった。
624 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 22:09:17 ] それが原因ならエミュでもエラー発生すると思うんだが何でだろう 不思議だ
625 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 03:38:15 ] 設計によっては難しいだろうけど コメントアウトとビルドを繰り返して実機で検証していくのが 一番手っ取り早いかと 例外取れてそうなら起動時にデバッグ用コマンド入力で 前回検出された例外を出力してみる
626 名前:デフォルトの名無しさん [2008/11/03(月) 18:29:39 ] イーモバイルの端末H11Tで Playerクラスで次々に音ファイルを読み込んでrealize()していくと5個目でRuntimeExceptionがでる。 仕様では一度にprefetchやstart状態にできる数には制限があるが、realizeだけならできるはずなんだが、、。 このおかげで音をはじめに5個以上ロードしておくことができないんだけど、 同じエラーでこまった人いない? ちなみにイーモバイルのほかの端末は試してない。
627 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 10:23:36 ] OutOfMemErrじゃなくて?
628 名前:626 mailto:sage [2008/11/04(火) 15:13:38 ] 小さいサイズのmidファイルで試してみたけど、変わらず。 具体的なエラーコードは java.lang.RuntimeException: Error code: -8 です。
629 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 19:47:13 ] 上の方でatan2が無いって困ってる人(俺も困った)がいたんでコード書いてみた //tanを格納しているテーブル。配列のサイズを変えれば解像度が変わる private static double[] tanTanble = new double[360]; static{ for (int i = 0; i < tanTanble.length; i++){ //tanテーブルの初期化(範囲は90度) double tan = Math.tan(((0.5f / tanTanble.length) * i) * Math.PI); tanTanble[i] = tan; }} public static double atan2(double x, double y){ double absX = Math.abs(x);//90度で計算するので絶対値に変換 double absY = Math.abs(y); int angle = tanTanble.length;//角度 if (absX == 0)angle = tanTanble.length;//90度の場合 else if (absY == 0)angle = 0;//0度の場合 else{ double tan = (double) (absY / absX);//タンジェントを求める for (int i = 0; i < tanTanble.length - 1; i++){ if (tan >= tanTanble[i] && tan <= tanTanble[i + 1]){//角度テーブルの指定範囲内に収まっていたら angle = i;//角度決定 break;}}} if (y >= 0 && x >= 0)angle += 0;//0~90//座標変換 else if (y >= 0 && x <= 0)angle = (tanTanble.length - angle) + (tanTanble.length * 1);//90~180 else if (y <= 0 && x <= 0)angle += (tanTanble.length * 2);//180^270 else if (y <= 0 && x >= 0)angle = (tanTanble.length - angle) + (tanTanble.length * 3);//270~360 double result;//ラジアンに変換 result = (double) (angle) / (double) (tanTanble.length * 4); result = result * (2 * Math.PI); return result;} 疑似atanだから、多分本物のatanよりも早いよ。精度は悪いけど。
630 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 20:49:15 ] >>629 精度が必要でjava.lang.Math全部必要ならVisual Numerics IncのJMathもある 自力でfdlibmを移植してた俺って…
631 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 08:44:49 ] >>626 風の噂で4個までと聞いた気がする、試してないからわからないけど
632 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 16:38:51 ] >>631 サンクス やっぱりそうなんだ、、。こちらの実機での状況と符号する。 技術情報だと、イーモバイルで現在javaが最初から入ってる端末はH11Tしか出てないんだね。
633 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:41:30 ] Playerクラス自分も使ってるけど 5つだけ配列確保してその中で1つをMIDIに、その他をWAVEにしてる 使い物切り替えるときはその場その場で再ロードだなぁ 他に方法有るかもしれないけど…
634 名前:デフォルトの名無しさん [2008/11/09(日) 14:35:49 ] サウンド周りでMA7端末とMA3端末の両方で開発をしています。 SmafPlayerでMA3サウンドを再生中にsetVolumeで音量設定しても 即座に反映しない問題で悩んでいます。 しばらく時間がたってからボリュームがチャンネルごとに少しずつ反映 するような感じ。 PhrasePlayerのsetVolumeは問題ないです。 エミュレータではちゃんと動いてるんですが、実機(823SHなどサウンドがMA3 の端末)だとだめです。 pause(); setVolume(); resume(); とすれば反映しますがフェードさせたいので これじゃだめなんです。 回避方法とかあるんでしょうか?
635 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:10:22 ] ない
636 名前:デフォルトの名無しさん [2008/11/11(火) 14:19:26 ] JSCL1.2.2で通信のテストをしています。 スパイシーソフトさんのビジネスプロバイダを使う都合で、 ConnectorクラスでなくJConnectorクラスを用いざるをえなくなりました。 SCLのエミュレータ、MEXAのエミュレータとも動作しました。 (当方初心者ゆえ、100%正しい動作とは断言できませんが。) しかし、実機では動作しません。 JConnector.openを囲ったtry節をつくり、エラーを調べましたら java.io.IOException でした。 実機で動かない、という状況が、579さんと同じであることと、 エラー内容が、579さんへのレスと思われます580さんの 「MIDPの実機は標準出力はない 」に関係していそうで、 どなたか、 580さんの「MIDPの実機は標準出力はない 」が、 579さんに対してどういうヒントだったのか、ご説明いただけないで しょうか。 宜しくお願い致します。
637 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 14:34:27 ] >580は>578だと思います
638 名前:sage [2008/11/11(火) 15:03:18 ] 637さん、有難う御座います。
639 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:00:38 ] jar内のリソースファイルの改変を検知する良い方法は無いでしょうか? 海外向けのアプリで、広告などに差し替えられるのを防ぐ目的です。 バイナリの総スキャンや独自に画像等を展開するのは 処理時間の面から避けたいと思います。 hashCode()でリソース固有の値が得られれば良かったのですが もちろんオブジェクトの値なのでこれも不可でした。
640 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:40:17 ] >>636 ビジネスプロバイダからダウンロードしたアプリは 接続先を1箇所しか指定できなかったと思うけど、 その辺は大丈夫?
641 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 23:33:06 ] >>639 crc付加して読み込み時にチェック
642 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:10:44 ] CRCというか、拡張子変えてごまかした後に頭かお尻に適当なバイトくっつければよいだけの話のような。
643 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:13:01 ] てか、勝手アプリの改造みたいな真似してまで 広告埋め込もうとするのか?海外の業者は
644 名前:636 mailto:sage [2008/11/12(水) 10:59:39 ] 640さん、有難う御座います。接続先は1つにしています。 根本的に何かを間違えていて、 たまたまエミュで動いてしまっているのかもしれません。 たとえば、JConnectorクラスの代用としてConnectorクラスが働いてくれているとか。 そういうことがおこりえるのか分かりませんが。 あまりに突拍子もない発想でしたらごめんなさい、パニくっています。
645 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 15:14:49 ] wirelett toolkit 2.5.2で operamini 4.2 beta動かせない・・・
646 名前:636 mailto:sage [2008/11/13(木) 15:49:06 ] 度々すみません636です。 エラーや進行をこまかくSystem.out.println表示させ、 JConnector自体は正しく動いている様子であると確認しました。 また、実機でも、JConnectorのイニシャライズまでは動いているようです。 (実機はV705SH。ボーダフォン時代のものです。) そのあと、エミュですと「Is it OK to use airtime?(JSCL1.2.2の場合。 MEXAエミュでも同義っぽいメッセージが出ます。)」と画面がでまして、 Yesと答えますと動作します。 しかし、実機ですと、その問いかけが出ず、 java.io.IOExceptionエラーとなってしまいます。 問題が複数に起因している可能性もあるのですが、 まずはこの、「問いかけが出ない」件を解決したく。 どなたか、ご教授いただけないでしょうか。宜しくお願い致します。
647 名前:おでん mailto:nintendoguy@163.com [2008/11/13(木) 15:49:35 ] GameCanvasから継承させたクラスを用意しました。 アプリ(MEXA)は方向キーと数字キー両方とも対応しなければなりません。 現在としては方向キーイベントはgetKeyStates関数で、数字キーイベントは keyPressed()関数で処理していますが、GameCanvasをこのまま継承しながら すべてのキーイベント(ソフトキーは例外)の処理を一箇所で行う方法などは ありませんでしょうか?
648 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 16:56:00 ] 定数にキーの値を入れて、方向キー数字キーどっちのキーイベントが発生しても 同じメソッドにキーの値を渡せばいいんじゃない?
649 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 19:11:30 ] >>636 とりあえずぐぐると、ほぼ同様の症状の報告とそれについて原因と思われる レス(ただしそのレスが正しいかどうかは不明)が参照できるのですが、 それについては確認しましたか?
650 名前:おでん mailto:nintendoguy@163.com [2008/11/13(木) 19:29:27 ] 648さん〜 有難うございます そういう方法もありますよね。 今BREWで作成してたBREWアプリをソフトバンク向けにコンバートしていますが、 どうしても数字キー7,9押下してもkeyPressed関数が呼び出されないですね。 元のBREWアプリは数字キーすべてを使っていますが、GameCanvasを利用しては そのイベントを処理するのはできませんか? またcanvasにする場合は数字キー7,9の押下の処理が可能ですか?
651 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 20:18:19 ] キーコードが間違ってるんじゃないの 出力してみればわかるけど79っていうか数字キーは全部KeyPressedで拾える
652 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 02:35:32 ] >>650 ソフトバンクはgetKeyStates()だと7、9がGAME_A_PRESSED、GAME_B_PRESSEDに対応してるからだと思う。 全てのキーをkeyPressed()で取得したほうがいいんじゃない? getGameAction()使えば方向キーとファンクションキーも取得できるよ。
653 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:15:45 ] MIDP2.0の考えとしてGameCanvasはあくまでゲーム作成に特化したCanvasだ。 ゲームってのは方向キーと決定キーで操作するもので、 数字キーはゲーム機のパッドに付いてないだろ?って考えで設計されている。 アプリを動作させるハードが携帯電話に限らないわけで、 だからABCDボタンといった呼び名に抽象化されてたりするわけで。 その考えに乗れないアプリ(数字キーで数字入力をしたいアプリなど)は GameCanvasで作るには無理が出てくる。 ここは割り切ってCanvasを使うよう設計変更した方がいいと思う。 GameCanvasと言ったってCanvasをラッピングしてるだけだし、 MIDP1.0のときはGameCanvas相当のことをCanvasでやってたんだし。
654 名前:おでん mailto:nintendoguy@163.com [2008/11/14(金) 11:37:59 ] 651,652,653さん〜 有難うございました。 653さんの指摘の通りにCanvasを使うように再コーディングしました。 後もよろしくお願いいたします。
655 名前:636 mailto:sage [2008/11/14(金) 14:36:29 ] 649さん、ありがとうございます。ググり方が悪かったのか、そういうのを見かけませんでしたが、再度挑戦してみます。
656 名前:636 mailto:sage [2008/11/14(金) 21:18:08 ] ググるなどしましたが、分からず。この板の503さんと同じなのかも。 しかし503さんの答えがなし…。
657 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:46:59 ] 画像についてですが、 pngファイルでエミュレータならうまくいきますが 実機だと表示できないものがよくあります。 何か条件や注意すべきところははあるんでしょうか?
658 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:18:18 ] >>657 色数。 256色以下のpngじゃないと、正常に表示できない機種があるよ。 フルカラーになってたりしないかチェック。
659 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:31:52 ] >>658 なるほど・・。 早速やってみます。 レスありがとうございました。
660 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 04:48:34 ] PNGGauntletとか使ってると落ちる実機とかあったな。 なるべく正確なヘッダを出力するツールを使うこった。
661 名前:おでん mailto:nintendoguy@163.com [2008/11/15(土) 11:07:59 ] ソフトバンクアプリでソフトキー押下処理時の質問です。 public void commandAction( Command c, Displayable d ) { if (cmdL == c) ...左ソフトキー押下時のゲーム処理 else if (cmdR == c) { ...右ソフトキー押下時のゲーム処理 } } 上のコードでエミュ(MEXA2.1)ではうまく動作しますが、実機でよく効かないときが 多いです。(効く時もあります) 上のコードを int key = devCtl.getDeviceState(DeviceControl.KEY_STATE); の形へ変更しなければなりませんでしょうか? 変更する場合は実機でうまくいくかは分かりませんが、エミュでうまく行きません。 エミュ用、実機用にコードを別々に作成しなければなりませんか?
662 名前:おでん mailto:nintendoguy@163.com [2008/11/15(土) 11:54:03 ] GameCanvasじゃなくCanvasから継承されています。
663 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 14:01:58 ] >661 そのcommandAction()の記述自体は問題ない。 ・プログラムの他の部分に問題がある。 ・「ゲーム処理」に問題がある。 後者は、通信開始、保存領域へのアクセス、再描画など、時間のかかる処理は避ける。 commandAction()はあくまでキー押下検出のメソッド(状態遷移のトリガとするメソッド)なので、 フラグを立てたり、変数に値を代入したりといった処理だけにして速やかに抜けること。 DoJaのprocessEvent()を参考に言うならば、commandAction()の処理は1秒以内を目安に。
664 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 14:07:58 ] 他に考えられるのは、メインの処理ループをウェイトなしでやってると 割り込みが処理されにくいってこともあるかも。 試しに10msくらいウェイトを入れてみるとか。
665 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 22:34:25 ] jadまでのリンクは出来たのですが 実機でDLしようとすると 不正なファイルです。ダウンロードはできません と出てしまいます。 これってどんな原因が考えられますかね? ちなみにアプリゲットのテストエリアで、他の掲示板にupさせてもらった時はjarまでDLできました。
666 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 23:05:22 ] jadだけ書き換えたりしてるんじゃねえの あとはMIMEくらいか
667 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 01:47:10 ] Image.createImage(byte[], 0, byte[].length); でPNGデータが読み込めません… IllegalArgumentExceptionがでます。 JPGはうまくいくのですが・・・。 Image.createImage("/file.png");だと普通に通ります。 エミュ(MEXA2.1)では普通に動くのですが実機だと エラーを吐きます。 どうすれば解決できるでしょうか・・・お願いします。
668 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 04:21:17 ] >667 IllegalArgumentExceptionは引数が不正って意味。 (byte[], 0, byte[].length)のどれかがおかしいってこと。
669 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 05:17:19 ] IllegalArgumentExceptionはファイルそのものが不正ってことじゃねえの
670 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:09:20 ] ファイルそのものが不正かどうか、エラーメッセージはそこまで言っていない。 敢えて言うなら、 第1引数に正しいPNGデータが入っていないのでは? 第3引数が0以下の値になってないか? とかだな。
671 名前:667 mailto:sage [2008/11/16(日) 14:28:19 ] 解決しました。 第三引数の値が、(data.length - 1)になってました…。 jpgは読み込めたみたいですが、pngはだめだった見たいです。 javadocの「imagedata.length - 1」を見てたのですが勘違いだったみたいです。 レスいただいた方ありがとうございました。
672 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 01:16:00 ] 質問する人はさ、解決してもしなくても 結果くらい書いてもバチは当たらないと思うんだ。 有益かどうかはともかく、それ自体1つの情報なんだから。
673 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 02:45:44 ] 開発環境も書かずに機種依存系の質問する人も多い中で そんな事言っても分かってもらえないと思うよ
674 名前:おでん mailto:nintendoguy@163.com [2008/11/17(月) 15:30:57 ] >663 663さん〜 回答ありがとうございます。 確かにcommandAction()はほとんどソフトキー処理ですから状態遷移処理のためイメージロード部分がありました。 フラグを立ててこの関数をすぐ抜いたらソフトキーの反応がよくなりました。 (まだ全機種についてのテストは済んでいませんが)
675 名前:デフォルトの名無しさん [2008/11/18(火) 16:10:37 ] S!アプリって以下の認識でいいんでしょうか? ・アプリは特定サーバからしかダウンロードできない ・ダウンロードしたアプリからは他サイトのデータ取得可 ・ダウンロード済みアプリの起動は他サイトのコンテンツからでも可
676 名前:おでん mailto:nintendoguy@163.com [2008/11/18(火) 21:32:07 ] eclipse3.3.2/MEXA2.1で javax.microedition.lcdui.Graphics.setFont(Font)関数についての質問です。 文字列描画のごと設定しなければいけないのですか? paint()関数が呼び出される時 Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); g.setFont(font); のようにフォントを設定して文字列を描画すると意図したフォントで描画されますが、 一度だけフォントを設定して描画したらデフォルトのフォントで文字列が描画されます。
677 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 22:18:57 ] >676 paint(Graphics g)で渡ってくるgは毎回別物。 だから今回g.setFont()しても次回はフォントが設定されていない。 CanvasやMIDletではなくgに対してフォントを設定してるんだしな。 「Font font = 〜」のfontを破棄せず取っておいて、 paint()ごとに毎回g.setFont(font)だね。