1 名前:デフォルトの名無しさん mailto:sage [04/08/06 22:21] J2ME CLDC+MIDPベースの携帯電話用Java(主にEZアプリ、Vアプリ)に関するスレッドです。 質問でも議論でも何でもこい、と。 前スレ: CLDC+MIDP+携帯電話用Javaスレッド part 2 pc5.2ch.net/test/read.cgi/tech/1070858996/ 過去スレ 携帯JAVAのスレッド pc2.2ch.net/test/read.cgi/tech/1011977260/ (DAT落ち) -- Java一般に関しては: 【初心者】Java質問・相談スレ51【大歓迎】 pc5.2ch.net/test/read.cgi/tech/1091770298/ NTT DoCoMoのiモード携帯電話用Java(iアプリ)については: iモード携帯電話用Java(iアプリ) Part 6 pc5.2ch.net/test/read.cgi/tech/1091286071/ >>2-5 あたりにリンク集
481 名前:447 mailto:sage [04/10/12 13:24:01] >>480 すまんちょっと勘違い getRecord()でデータがちゃんと読めてないと思ってたのは、 >>466 のをID10まで作成するようにして使ってたのを途中で20変えたが既にレコードは存在するのでIDが追加されずに読み込もうとしたのがエラーの原因だった。 コンパイラもエラー吐かないしエミュでe.toString()使ってもNullPointerExceptionって出るしでgetRecord()でちゃんと読めてない物だと思ってた けどそれは妄想でIDが追加されてないのが原因だったと・・・。
482 名前:デフォルトの名無しさん mailto:sage [04/10/13 22:20:36] C4型、P4型では問題なく開発出来ていたのだが、 P5型のエミュが「fail prepareApplication」と出て動作せずに困っています。 ただ、サンプルの実行は出来るので実行ファイルを作成する段階でなにかミスを していると思うのですが、C4、P4と手順が違うところってあるのでしょうか?
483 名前:482 [04/10/14 01:50:11] MIDlet-Jar-URL:でスペルミスしてただけだった。 orz
484 名前:デフォルトの名無しさん mailto:sage [04/10/14 15:12:05] byteデータを数値に変換して比較したいのですが、直接intにbyteを入れても互換性のない型と出てコンパイルに出来なくて困ってます 調べてみるとintValueで変換出来ると書いてあったので試してみたのですがシンボルを解決出来ませんと出てしまいます。 byteデータをintに変換するにはどうしたらいいのでしょうか?
485 名前:デフォルトの名無しさん mailto:sage [04/10/14 15:39:24] すいません byteデータではなく、byte[]でした byte[] bytes;ってな感じに書いてますがint number = (int)bytesとしてもコンパイル出来ませんでした。
486 名前:デフォルトの名無しさん mailto:sage [04/10/14 19:49:22] >byte[] bytes;ってな感じに書いてますがint number = (int)bytesとしても >コンパイル出来ませんでした。 あたりまえです。こちらへどうぞ。 【初心者】Java質問・相談スレッド54【大歓迎】 pc5.2ch.net/test/read.cgi/tech/1096548618/
487 名前:デフォルトの名無しさん mailto:sage [04/10/14 22:51:41] 配列だからな w 超初心者の俺でも分かるぜ (エッヘン w
488 名前:デフォルトの名無しさん [04/10/15 12:11:20] 質問なんですが、 Vアプリ開発ガイド[Tips編]によれば、SH系でネイティブ連係機能を使う際はkeyReleasedイベントでやれとのことですが、 ソフトキーによるcommandAction処理の場合はどうすればいいんでしょうか。。 TextBoxで気にせず素直にcommandActionでネイティブ呼び出すような処理を書いたら、 次同じソフトキーを押したときのイベントが起こりませんでした。 おそらくCanvasでkeyReleasedでやれと書いてあるのと同じ理由によるんだと思います。 (Pressedイベントでネイティブに遷移するとReleasedイベントが処理されないから、次ボタンを押した際はPressedが起こらずReleasedのみ起こる) 仕方ないので、commandActionでは処理したいことをやるためのthreadを別に立ち上げ、 ユーザがボタンを放してReleasedイベント処理されたかなと思われるくらいの時間threadにwaitかけてそれから処理するように仕組んだんですが、 なんか回りくどいですし、ユーザがボタン押しっぱなしでwait時間切れしたらそもそもこんな処理入れる意味がないですし。。
489 名前:デフォルトの名無しさん mailto:sage [04/10/16 14:34:55] >>484 >>311
490 名前:デフォルトの名無しさん mailto:sage [04/10/17 01:03:15] ゲームを作っているのですがフレーズ再生で困っています。 フレーズ再生を共通のプログラムでC4型、P4型、P5型問わず 動作させたいのですが、C4型のcom.j_phone.amuse.PhrasePlayerに対し com.jblend.media.smaf.phrase.PhrasePlayer とパッケージ名が異なるためコンパイルさえ通りません。 jar中にcom.j_phone.amuse.PhrasePlayerクラスを掘り込んで 機種判別してクラスを使い分ける方法を考えたのですが、 どなたか実際に動かしたかたおられますか?
491 名前:デフォルトの名無しさん [04/10/18 17:23:48] Vodafoneを使っているのですが、 携帯電話の側面についているボタンやオーディオリモコンのボタンのキーイベントを取得する方法ってあるんでしょうか? 携帯を閉じたまま、イベントを発生させたいんですが、何かいい方法あれば教えてください!!
492 名前:デフォルトの名無しさん [04/10/18 19:02:24] 質問です。 EZアプリ(Java)でカメラ制御を行おうとしているのですが、 エラーが出て困っています。誰かご存知の方がいましたら教えて下さい。 以下、サンプルコードです。 PhotoConnection conn = ( PhotoConnection ) Connector.open("photo:"); conn.setMode(PhotoMode.MOBILE_MODE); PhotoContent photo = ( PhotoContent ) conn.capture(false); byte[] data = photo.getData(); conn.close(); kjxへのコンパイルは正常にいくのですが、エミュレータで起動すると 「ALERT: Cannot load class com/kddi/id/CameraConnection」 と出てしまいます。コンパイルは出来るので、プログラムは間違っていない と思うのですが、何が駄目なのでしょうか? よろしくお願い致します。
493 名前:デフォルトの名無しさん [04/10/18 22:19:20] >>492 自己レスです。 エミュレータが3.0に対応していないためみたいです。 実機では動きました。
494 名前:デフォルトの名無しさん mailto:sage [04/10/20 05:56:13] P5のエミュレータ GraphicsUtil.drawRegion()が遅すぎて使い物にならなくて困っています。 どうにもならないのでしょうか?
495 名前:デフォルトの名無しさん mailto:sage [04/10/20 05:58:41] >>494 homepage1.nifty.com/marukun/java/vapp.html > →GraphicsUtil.drawRegion()の処理がエミュレータでのみ著しく重いという事みたいです。
496 名前:デフォルトの名無しさん mailto:sage [04/10/20 14:22:41] P6のエミュでデバッグ情報がでなくなってるんだけど… コレは以前のエミュのようにデバッグ情報を出すにはどうすればいいでしょうか。
497 名前:デフォルトの名無しさん [04/10/20 23:00:22] テキストボックスを使って数値を入力したいのですが、どこを探してもiアプリのtextBoxしか見つかりませんでした。 前にVアプリでテキストボックスを利用しているアプリを見たような気がするのですが、 Vアプリにはテキストボックスは無いのでしょうか? 参考になるサイトなどご存知の方居ましたら教えてください
498 名前:デフォルトの名無しさん mailto:sage [04/10/20 23:24:06] >>497 参考になるドキュメント→>>2 テキストボックスはプログラマ各々が自作するものなのか、用意されているものなのか。 といった携帯アプリを作るJavaの構成が理解できてないってこったな。
499 名前:デフォルトの名無しさん mailto:sage [04/10/20 23:42:36] >>497 godwood.allnet.ne.jp/vioret/midpapi/javax/microedition/lcdui/TextBox.html
500 名前:名無しさん mailto:sage [04/10/21 05:26:08] JSCLを使って作られていたプログラムをMID-P2.0の機能で 実装し直そうとおもいます。 resフォルダに入れたファイルを読みたいのですが openDataInputStream(ss);あたりでエラーになるのですが どうすればいいのでしょうか? とりあえず画像ファイルはcreateImageで代替えできるのでいいのですが バイナリだとやり方が思いつきません エラー java.lang.ClassNotFoundException: com/sun/midp/io/j2me/resource/Protocol at javax.microedition.io.Connector.openPrim(+99) at javax.microedition.io.Connector.open(+15) at javax.microedition.io.Connector.open(+6 javax.microedition.io.ConnectionNotFoundException: The requested protocol does not exis 環境 j2me_wireless_toolkit-2_1_01-windows.exe JSCLと関係ないとおもうのですがわかりません 解決策をおしえてください よろしくおねがいします。
501 名前:500 mailto:sage [04/10/21 05:27:58] import java.io.*; import java.util.*; import javax.microedition.io.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.io.*; import javax.microedition.rms.*; try{ //byte buf1[] = new byte [0x3000]; //String s = "resource:///"; //String ss; //int buf_p=0; //for( int i = ReadCount; i < 13; i++ ){ //try { //ss = s+i+".png"; //DataInputStream _in = Connector.openDataInputStream(ss); //buf_p = _in.read(buf1); //_in.close(); // //} catch (IOException x) { //game_mode = -2; //break; //} //image_back[i] = Image.createImage(buf1, 0, buf_p); //ReadCount++; //} String str; for( int i = ReadCount; i < 13; i++ ){ str = i + ".png"; image_back[i] = Image.createImage("/" + str); } }catch(Exception e){ }
502 名前:494 mailto:sage [04/10/21 12:58:52] >>495 ありがとうございます。 実機では普通に動くのは知っていました。 エミュレータが遅すぎて困ってるんです。 正直デバックが苦痛です。 エミュレータで普通に動かすにはどのくらいのマシンスペックが必要なのでしょうか? ちなみに私の環境は P4の2.53GHz、メモリ512MB、OSは2000です。
503 名前:名無しさん mailto:sage [04/10/21 20:44:41] 週間ゲーム&アプリLiveでは0x, 30x, 40xと5x, 60x, 80xに分けられていますが どちらでも動作する50Kbyte未満のJAVAアプリ(jadはMIDlet-OCL: JSCL-1.0.1で定義)も 別々に登録される事になるんですか?
504 名前:デフォの名無しさん mailto:sage [04/10/21 21:40:41] イースってゲームでSDに保存したJARファイルからデータを読み出して使ってるみたいなんですけど、 これは url = "jar://mc/test/test.jar/test.png"; connector.open(url, Connector.READ); とすれば開けるのでしょうか? 開発ガイドには jar://ファイル名+リソース名 としか書いてなかったもので・・・ 知ってる方居ましたら宜しくお願いします
505 名前:504 [04/10/22 00:50:52] すいません訂正です url = "jar://mc/test.jar/test/test.png"; でした。 SD内の、test.jarの中のtestフォルダ内のtest.pngを指定しています
506 名前:488=495=499 mailto:sage [04/10/22 02:54:48] >>490 全部で動かそうと思うとC4型用のAPIのみで作る必要がある。C4のAPI使えばP4/P5でも動くと思う。 機種のライブラリを判別して個別処理させるんなら、判別法がTips編の1.12に載ってるね。 >>491 閉じるとVアプリは一時停止する仕様だから閉じたままは無理。 継続型待ち受けアプリならいけるかもしれんが、P6型ではこのタイプのアプリは廃止されたそうな。 開いたままでもかまわんなら、キーコード表示するデバッグ用のアプリを端末に入れて、 押したキーとキーコード対応を自分で解析すれば何とかなるかもしれん。 もし解析した場合はキーコード情報の報告ヨロ >>500-501 jarの中身のファイルをストリームで開くのはClass.getResourceAsStreamを使うのが一般的じゃね? Connector.openとかのURL部分に何が指定できるのかオレは詳しくシラネ。
507 名前:488=495=499 mailto:sage [04/10/22 02:55:12] >>502 普通にっていわれても、アプリでどんなけの処理をしたいかによるから一概にはいえんと思うが。 1回の描画で40*40のImageを使って(使い回して)Canvas#paintのGraphicsに400回ほどdrawRegionを呼んで転送するアプリをオレは書いたけど、 エミュで特に動作速度に不満はなかったなぁ。Time取得して描画前・描画後の差分取ったら0.1秒以下だった、おおむね30-40msecほど。 Pen4 2.4CGHz/1GB/Win2kSP4 あと直接関係ないが、>P4 という表記は紛らわしいのでやめた方がいいと思われ。。 それと、エミュでなく実機でのみの話だと思うが、少数のImageだけ使った方が高速処理できるそうな(新機種手引P6型端末編2.3.3より) >>503 オレはアプリLive使ってないので知らんが、ページ構成見る限りそう取れるよねぇ。 直接アプリLiveサポに聞いてみたらどう? アプリゲットの方は、全部で動くアプリの登録は1回でOK >>504-505 該当箇所(概要編4.6)読んだが、自分でWebからダウソ・RecordStoreに保存したjarファイルにアクセスする場合って前置きがあるが。 SDカードにアクセスするためにはStorageConnection使う方法しかないとオレは理解してるんだが。 で、誰か >488 もおながいします。。
508 名前:488=495=499 mailto:sage [04/10/22 02:58:35] >>507 > Pen4 2.4CGHz/1GB/Win2kSP4 +VアプリエミュP5型 あと、文章が横に長くなってしまってスマソ
509 名前:デフォルトの名無しさん mailto:sage [04/10/22 04:09:16] >>488 は >TextBoxで気にせず素直にcommandActionでネイティブ呼び出すような処理を書いたら、 > 次同じソフトキーを押したときのイベントが起こりませんでした。 ここが問題点の核心なんだが2行目がイミフメでコメントできない ソフトキーでのTextBox呼び出し処理自体は書いたことあって普通に動作してる
510 名前:488=495=499 mailto:sage [04/10/22 05:11:47] >>509 Command登録したTextBoxで、ソフトキー押されたときにネイティブ連係する機能 (具体的にはStorageConnection使ってファイルを保存する操作、 保存時に上書き確認メッセージがネイティブ側で表示される) を用意した場合で、 TextBoxに遷移→ユーザがソフトキー押す→commandActionイベント通知→保存処理を実行 →保存確認メッセージ(ネイティブ)→ユーザがOK→TextBoxに戻る→ユーザがもう一度ソフトキー押す →イベントが通知されない・commandAction呼ばれない となります。さらに続けてもう一回ソフトキーを押すと反応します。 ネイティブ連携しない機能をcommandActionで呼ぶ場合は問題ないです。 TextBoxをCanvasに、ソフトキー(Command)イベントをkeyPressedイベントに 置き換えた場合の説明がTips編(SH53/V601SH箇所)に説明されてますが、 この場合はkeyPressedではなくkeyReleasedでやれと書いてあります。 でもcommandActionイベントはボタンを押したタイミングで起こり、 またボタンを放したタイミングはイベント取得できないので、 同様の回避法は使えません。 で考えたのが >488 後半のThread使った回避法で、 要はユーザがボタンを放すタイミングの時にネイティブ機能が動いているといけないということなので、 ユーザがボタンを押してから離すまでの時間くらいwaitでずらしてから機能を呼ぼうということをしてます。 でも何か根本的解決ではないので、別の回避法やってたり同様の現象で悩んだりしている人がいないかどうかが確認したいんです。
511 名前:500 mailto:sage [04/10/22 05:40:48] >>506 サンクス。試してみマツ
512 名前:509 mailto:sage [04/10/22 08:42:25] >>510 回避策は2つ思い浮かぶ。 1つめ。 keyReleased()で処理すればうまく行くと思うのであればcommandAction()を keyPressed()とkeyReleased()に分解すればいい。 やりたい処理(ファイルアクセス)をcommandAction()ではなくkeyReleased()に書き、 commandAction()からはkeyPressed()とkeyReleased()を呼び出す。 これで見かけ上はソフトキー押下が数字キー同様のkeyPressed()/keyReleased() に反応しているかのようになるのでドキュメントの条件を満たしたことになる。 …なーんて、これじゃ回避策になってないね。スマソ
513 名前:509 mailto:sage [04/10/22 08:43:48] 2つめ。これが本命の回答。 commandAction()内で重い処理をしていることがズバリ原因なので、その点を変更する。 システムからのイベント通知を受け取るcommandAction()/keyPressed()/keyReleased() といったメソッド内では、画面描画、通信、ストレージアクセスといった重い処理を してはいけない。 これらのメソッド内ではフラグ操作や、パラメータをとあるメソッドに送り付けるだけの 処理にとどめる。そしてメインの処理ループでそのフラグなり何なりを監視しておき、 反応があればメイン処理の中で、指定の重い処理を行うようにする。 >ネイティブ連携しない機能をcommandActionで呼ぶ場合は問題ないです。 このことはcommandAction()内で重い処理を行わないからこそと言える。
514 名前:490 mailto:sage [04/10/22 15:21:02] >>506 確かにP4のstubclasses.zipにはcom.j_phone.amuseパッケージが 含まれておりました。 com.j_phone.amuseAPIを使用してみたいと思います。 回答いただきありがとうございました。
515 名前:504 mailto:sage [04/10/22 18:39:44] StorageConnection使って、 Connector.open("jar://mc/test/test.jar/test.png", Connector.READ); とURLの部分のみ変更を加えてみたのですが NullPointerExceptionが出て動かないみたい URL変更前はfile:スキームで正しくファイルが読めていました。 ちなみに読み出そうとしてるtest.pngは空ソースだけのプロジェクトを作って、RESフォルダにtest.pngを入れた状態でjar化したものです。 どなたかSDのjarからリソースを読み込むのに成功した人居ませんでしょうか
516 名前:488=495=499 mailto:sage [04/10/22 22:30:18] >>514 ちなみに、C4のAPIで使えなくなってるやつとして、 ResourceOperator ResourceOperatorManagerのクラスがV601SHから削られてるんでそこだけ注意。 他はたぶん大丈夫と思う。 >>514 StorageConnectionの説明部分ではfileスキームしか記述がないから、一般にはできないんじゃないかな。 公開ドキュメント見ていってるから、実は非公式にできるんですよとかいう話ならこれ以上は何もわからんけど。 なので、イースの場合は自前でjarを解凍してるんじゃないかと推測。 もしくは、jarという拡張子だけど、実は中身はpngなどのリソースを単純にバイナリレベルでつなげただけのものとか。 >>512-513 どもです。 やはりcommandActionの中ではフラグあげるなり別スレッド立てるだけにしてすぐに処理を返し、 やりたいことは、立ち上げたスレッドなりフラグを参照する別スレッドなりでやれという方針しかないですね。
517 名前:デフォルトの名無しさん [04/10/22 23:05:33] Vアプリに関して質問します。 www.itmedia.co.jp/mobile/0203/15/n_jjava2_2.html ITmediaのこのページにある待ち受けアプリのサンプルを、 J2ME Wireless Toolkit 2.1 でパッケージを作り、 V-appli Emulator(P5型) Ver.1.0 で実行させると、 "ALERT: unable to load class com/jblend/net/j2me/http/HttpException" というメッセージが出て実行されません。 何がいけないのでしょうか? stubclasses.zip は V-appli Emulator と同じものを使ってBuildしています。 よろしくお願いします。
518 名前:デフォルトの名無しさん mailto:sage [04/10/23 02:57:47] >もしくは、jarという拡張子だけど、実は中身はpngなどのリソースを単純にバイナリレベルでつなげただけのものとか。 これでしょ。拡張子に制限あるからね。
519 名前:デフォルトの名無しさん mailto:sage [04/10/23 03:16:25] midpで、左のボタン(通話ボタンの上にあるやつ)と右のボタン(電源ボタンの上にあるやつ)の定数コードってどれですか? Canvas.GAME_A〜Canvas.GAME_Dのどれかだと思うんですけど
520 名前:デフォルトの名無しさん mailto:sage [04/10/23 03:17:59] >>517 そのページのソース確認してないんだけど、インナークラスはちゃんとjarに入れたの?あとpreverifyも
521 名前:519 mailto:sage [04/10/23 04:23:59] すいません。自己解決しました。 Commandクラスを使って、個別に登録するんですねf^^;
522 名前:517 mailto:sage [04/10/23 13:56:44] >>520 KToolbar 使ってるので、問題ないです。
523 名前:504 mailto:sage [04/10/23 14:44:05] >>516 >>518 イースで使われているjarを解凍しようとしてみるとエラーが出て無理でした。 どうやらバイナリレベルで繋げて、自前で解凍してるみたいですね urlの部分をjar://file://mcとしてみましたがこれも駄目のようです。 開発ガイド9にdeflate圧縮データの復元とゆうものがあったのですが全体を展開するみたいなので使えない…。 そこで、バイナリレベルで繋げて自前で解凍する方法を使ってみようと思うのですが どのように一つのバイナリにすればいいのやら… 解凍の部分はプログラムにxからyバイトまでが〜.pngとゆうファイルで…と記載されてるのでしょうか
524 名前:デフォルトの名無しさん mailto:sage [04/10/23 18:02:11] >>523 順に読み込むだけなら、 ファイル数 ファイルサイズ1 ファイル1 ファイルサイズ2 ファイル2 ファイルサイズ3 ファイル3 ・・・ でいいんじゃね?
525 名前:デフォルトの名無しさん mailto:sage [04/10/23 19:09:32] >どのように一つのバイナリにすればいいのやら… 「結合」とかで検索!
526 名前:デフォルトの名無しさん mailto:sage [04/10/23 19:28:39] てゆーか…… 画像は適宜結合してなるたけファイル数を減らして、 jarのファイルエントリを縮めるのは定石だと思ってたんだが 世間一般ではそういうことしないのか?orz
527 名前:504 mailto:sage [04/10/23 19:32:04] >>525 VBやら関係無いの多いので時間掛かりそうですが探してみます
528 名前:デフォルトの名無しさん mailto:sage [04/10/23 19:32:15] >>523 各ファイルを読み込んで、それをObjectOutputではき出して、プログラム内で連結して、ファイルに出力して、jそれをar拡張子にしちゃえば? そんな単純な話じゃないか・・・
529 名前:デフォルトの名無しさん mailto:sage [04/10/23 19:36:55] ここにある波紋アプレット hp.vector.co.jp/authors/VA012735/applet/dropcol.htm とてもきれいなんだけど、これを携帯に移植できるかな? 画像のピクセルを編集できないといけないみたいだけど。
530 名前:デフォルトの名無しさん mailto:sage [04/10/23 20:01:37] 携帯で、ピクセル扱うと遅いよー
531 名前:デフォルトの名無しさん [04/10/23 22:33:34] 質問です 文字列比較でequalsIgnoreCaseを使いたいのですがコンパイルしたときにエラーが出て困っています。 ソースはこんな感じになってます String[] str= new String[5]; str[0]= "abc"; if(str[0].equalsIgnoreCase("abC")){}
532 名前:デフォルトの名無しさん mailto:sage [04/10/24 01:06:35] >>529 秒間1フレームとかになるかもしれん。
533 名前:デフォルトの名無しさん mailto:sage [04/10/24 01:31:53] >>531 CLDC+MIDPにString#equalsIgnoreCaseはないけど。 toLowerCase/toUpperCaseはあるからそんなに苦労はしないと思うけど。
534 名前:デフォルトの名無しさん mailto:sage [04/10/24 01:45:46] >>526 日曜プログラマなのでそんな面倒なことはしません。 ユーザのパケ代に響いてもシラネ。 >>523 tarなんかの非圧縮でファイルを固める仕様が参考になるんじゃないかな。 で、こんな話がありますが、関係するのはJBlendの中の人だけってことでいいんですよね? ITmediaモバイル:J2MEに脆弱性。携帯電話のJavaアプリに影響 www.itmedia.co.jp/mobile/articles/0410/23/news013.html
535 名前:デフォルトの名無しさん mailto:sage [04/10/24 01:47:39] >>533 自力でequalsIgnoreCaseクラス作ってしまいました…。
536 名前:デフォルトの名無しさん mailto:sage [04/10/24 02:22:02] 実機だとfillRect()がズレるって聞いたんだがずれてる?
537 名前:デフォルトの名無しさん mailto:sage [04/10/24 03:08:12] >>534 Nokia DCT4はjblendなのか?? secunia.com/advisories/12945/ アプリ起動直前にバイトコード検証が行われるんだけど、そこに脆弱性があって ネイティブのコードが実行される恐れがあるとか
538 名前:デフォルトの名無しさん mailto:sage [04/10/24 04:30:23] >>536 そんなこと言ってるのは大方drawRect()と比べて幅と高さが1ドットずれるー とか、リファレンス読み違えて勘違いしてる人なんじゃない?
539 名前:デフォルトの名無しさん mailto:sage [04/10/24 11:03:26] その脆弱性を突けば、もっと高度なJavaアプリが・・・
540 名前:デフォルトの名無しさん mailto:sage [04/10/24 12:46:06] >>539 可能かも? だが、棒打のアプリは公開する時に解析されるから公開は無理
541 名前:デフォルトの名無しさん mailto:sage [04/10/24 13:14:36] >Nokia DCT4はjblendなのか?? JBlendもSunのリファレンス元に作成されているから同じ脆弱性が発生している。 Nokiaで同じ問題が出ている理由は、元が同じだから。
542 名前:デフォルトの名無しさん mailto:sage [04/10/24 13:21:34] 複数のtxetをres内から配列にして読み込むには、どのように すれば良いのですか? 調べても1つしか読み込む方法が見つからないので、分かる方 ご教授お願いします。
543 名前:デフォルトの名無しさん mailto:sage [04/10/24 21:05:55] >>542 自前でなんとかするしかないんじゃないかな? \n区切りでString配列を返す関数とか作って。
544 名前:デフォルトの名無しさん mailto:sage [04/10/24 21:59:30] > JBlendもSunのリファレンス元に作成されているから同じ脆弱性が発生している。 なるほど。つーかずいぶん詳しいな > Nokiaで同じ問題が出ている理由は、元が同じだから。 って事は、JBlendでは既に知られている脆弱性だったって事か?
545 名前:デフォルトの名無しさん [04/10/24 22:49:17] iアプリにあるホワイトアウト処理みたいなのを使いたいんだけど、 JSCLには無いようなので他の方法で同じ処理をしようと思うのですがどのような処理をすればいいのでしょうか…
546 名前:デフォルトの名無しさん mailto:sage [04/10/25 00:02:31] iアプリの場合、2Dの半透明描画は機種依存 機種によってはホワイトアウトにならないヤカン
547 名前:デフォルトの名無しさん mailto:sage [04/10/25 00:08:42] >>545 com.j_phone.util.ImageUtil#createMaskedImage使えば、 マスクパターンの細かさを段階的に変えていって疑似半透過できるかも。 まぁP6以降だが。 GraphicsUtil#setPixelでピクセル単位でいじればもっと柔軟に対応できるが、 たぶん >530
548 名前:デフォルトの名無しさん mailto:sage [04/10/25 00:23:32] P6以降ですか…。 範囲を指定して色を足していくような処理も重いですか? 例えるとx1,y1からx50,y50までの範囲の色にピクセルごとにr,b,g+100足して表示するとか…。 そんな処理がしたいのですが…
549 名前:デフォルトの名無しさん mailto:sage [04/10/25 01:35:25] >>546 505以降なら、MascotCapsuleを使えば全機種いける。
550 名前:523 mailto:sage [04/10/25 02:19:06] deflate圧縮データの復元ってのがあるみたいなんですけどこれって圧縮データ全てを展開するってことですか? そもそもdeflate圧縮ってzipの圧縮方法であってますよね? これ使って指定したファイルだけ取り出す方法あれば嬉しいのだけど。
551 名前:デフォルトの名無しさん mailto:sage [04/10/25 03:45:23] >>542 Vectorクラスに順次放り込んで最後にString配列へcopyInto()して終わり
552 名前:デフォルトの名無しさん mailto:sage [04/10/25 05:22:46] >範囲を指定して色を足していくような処理も重いですか? 範囲が凄く小さいなら大丈夫 >>549 プリミティブ描画で簡単に出来ますな 加算、減算、平均?の3通りしかないけど、ホワイトアウト程度の単純な処理なら問題なし >>530 機種によっては、drawImageには対応してるけどfillRectには非対応だったり 使い物になりませんw
553 名前:デフォルトの名無しさん mailto:sage [04/10/25 10:00:10] Vアプリで質問です。 Randomクラスを使う羽目になって、ふと疑問に思ったんですが java.util.*; ってimportできるんですね。しかもj2seで使えるAPIとはかなり違うみたいですね。 例えば、Math.Random()メソッドは使えないだの、RamdomクラスのnextFloat()メソッドは使えないだの、他いろいろ。 ここら辺についてはどのAPIリファレンスを参照すればいいんですか? JSCLとCLDCには載ってなかったです。
554 名前:504 [04/10/25 17:45:15] 毎回プログラムにファイルサイズやらを書き換えていくのが面倒なので >>528 さんが言っているObjectOutput使って複数のファイルを一まとめにしてしまおうと思ったのですが これは 1.纏めるファイル名をlist()か何かで配列に収める 2.手動で適当にファイル(txtとか)を作成して拡張子をjarしておく(binarry.jar 3.一つ目のファイルをbyte配列に読み込む 4.ObjectOutputでbyte配列を3のファイルに書き出す てな感じで初めに作った配列分、3〜4を繰り返せばいいと思うのですが ソースはこんな感じでいいのかな。。。 ObjectOutputてのが意味不明なので指摘お願いします…。 String[] files=new String[ファイル数]//ファイル数 for(i=0; i<files.length; i++){ ... ...//目的のファイルを読み込む部分 ... byte[] b;//書き込むデータのbyte配列 conn = (StorageConnection) Connector.open("file://mc/binarry.jar"); os = sc.openOutputStream(); ObjectOutput out = new ObjectOutputStream(new FileOutStream(os));//この辺りから意味不明 out.writeObject(data, b); out.frush(); out.close(); os.close(); conn.close(); }
555 名前:504 mailto:sage [04/10/25 17:52:45] >>554 の続きです。連投すみません 読み込む時は conn = (StorageConnection) Connector.open("file://mc/binarry.jar"); os = sc.openInputStream(); ObjectInputStream in=new ObjectInputStream(new FileInputStream(si)); byte[] b=("filename")in.readObject();//目的のファイルをbinarry.jarから読み込む in.close(); os.close(); conn.close(); あとはgazou = Image.createImage(b, 0, b.length);で適当に使う。 読み込む時に554で作成したファイル中の目的のファイルを指定出来ると思ってるんだけど妄想?それとも出来ます? エミュレータでファイルを一まとめにしたの作って、実機でファイルを取り出して使うような使い方がしたいんだけども…不可能かな
556 名前:デフォルトの名無しさん mailto:sage [04/10/25 18:56:53] >>553 JavaのサブセットはJ2ME。主にCLDC、MIDP1.0のリファレンスを参照のこと。 携帯アプリ向けJavaは浮動小数をサポートしてないとか 例えばStringクラスなどでも使えるメソッドが限られているとか 基本的なところが理解できるはず。
557 名前:デフォルトの名無しさん mailto:sage [04/10/25 19:58:10] >>556 ありがとうございます!CLDCに載ってました! 私が読んでいたのはMIDPの方でした・・・。 なるほど、浮動小数をサポートしていないということですか
558 名前:デフォルトの名無しさん [04/10/25 22:13:09] canvasにしているクラス外からrepaint()を使いたいのだがコンパイラがstaticじゃないと吐く public static int paint(Graphics g)にしたら今度は このstaticメソッドはCanvasからのインスタンス・メソッドを〜 とか出る ようするにcanvasクラス外からrepaint()使うのは無理ってこと?
559 名前:デフォルトの名無しさん mailto:sage [04/10/25 22:26:11] >558 Canvasのサブクラスにrepaint()呼ぶだけのpublicメソッド定義すればいいじゃん。
560 名前:デフォルトの名無しさん mailto:sage [04/10/25 22:30:41] そんな手があったか…半日悩んだのが馬鹿みたいだ 俺の中では559、あんた天才
561 名前:デフォルトの名無しさん mailto:sage [04/10/25 22:53:44] で、Canvasのサブクラスにrepaint()呼ぶだけのpublicメソッド定義は出来たんだけど 別のクラスから呼び出すとエラーでる Canvasのソースは public String repaint2() { repaint(); return null; } 呼び出してるところのは myCanvas.repaint2(); エラーは 型canvasからのメソッドrepaint2()はstaticではありません。 repaint2をstaticにしてみるとCanvas側でエラー。 なんとかしてくれ…。
562 名前:デフォルトの名無しさん mailto:sage [04/10/25 23:13:44] >561 えーと。 その「別のクラス」に、Canvasのサブクラスを参照するフィールドを作って、 Canvasのサブクラスのインスタンス生成したときにそれをフィールドにセットして 後はそのフィールドのインスタンスのrepaint2()を呼べばいい(はずなんだ)が。 (このときrepaint2()はstaticにしちゃいかんですよ) しかし、Javaの基本をもう一度おさらいした方がいいかも……
563 名前:デフォルトの名無しさん mailto:sage [04/10/25 23:56:14] フィールド作って〜やればいけた >>562 サンクス
564 名前:デフォルトの名無しさん [04/10/26 21:00:03] 昨日canvas外のクラスからrepaint()出来なくて困ってた者です。 いざ使おうとcanvas外のクラスから使ってみるとエラーになってしまいました。 色々と書き換えてみたりしたのですがどうやっても直りません ソースは以下のようになってます /* midlet */ public class msc extends MIDlet { public msc() { cvs canvas = new cvs(this); Display.getDisplay(this).setCurrent(canvas); (new Thread(canvas)).start(); } ...startApp()とかが続く /* cvs */ public class cvs extends Canvas { private MIDlet midlet; cvs() {} cvs(MIDlet midlet) { this.midlet=midlet; } public void run() { shori.exet(); } public void paint(Graphics g) { ... } ...略 /* shori */ public class shori { private static cvs cv; public shori() {} public static String exet() { cv=new cvs(); ... } ...略
565 名前:デフォルトの名無しさん mailto:sage [04/10/26 21:25:51] >564 えーと……やっぱし、Javaの基本、クラスとは何でメソッドとはどういうもので、とかを もう一辺やり直した方がいいと思う。 例えばメソッドがstaticってのはどういう意味なのか、何故staticなメソッドから そうでないメソッドが呼べないのか、全然分かってないのでは。 とりあえず、 ・cvs#run()でshori.exet()を呼んでるが、それなら単に cvs#run()でrepaint()を呼べば済む話では? ・shori.exet()でcvsの新しいインスタンスを作っているが、 それがmscのコンストラクタで生成したcvsのインスタンスと * 全く関係のない、縁もゆかりもない別物 *だということは分かってる?
566 名前:デフォルトの名無しさん mailto:sage [04/10/26 21:32:24] /*shori*/んとこのcv=new cvs();無しにしればいけるのでは??
567 名前:デフォルトの名無しさん mailto:sage [04/10/26 21:34:26] 連投ごめ、多分だけどprivate static cvs cv;てしてるとこのprivateも要らないと思う それで一回やってみそ
568 名前:デフォルトの名無しさん mailto:sage [04/10/26 21:40:31] >>564 オレも、クラスとインスタンスとstaticについて理解し直すとこからやり直した方がいいと思う。 Javaの基本というか、オブジェクト指向の基本だし。 その調子だと、privateとpublicの違いについても怪しいな。
569 名前:デフォルトの名無しさん mailto:sage [04/10/26 21:48:36] >>565 ごめん 学校で習った程度だから漏れの知識ショボイ クラスとは何でとかも習ったけど小学生相手にリンゴが一個あって〜とかと同じレベル >>566-567 言ってる部分を消してみるとエラーでエミュが落ちることは無くなった けどが描画されない・・・
570 名前:564 mailto:sage [04/10/26 22:13:52] >>568 装飾子の違いは分かってる…と思う privateとpublicの違いは確か、同クラス内と制限無しだったような staticは共有メモリ領域を利用するんだっけ…
571 名前:デフォルトの名無しさん mailto:sage [04/10/26 23:40:28] auのPhase3.0エミュを使って通信でtxtファイルを取得しようとすると403が帰ってきます。 実機では問題ありません。サーバー側のログを見ると 実機では con = (HttpConnection)Connector.open("aaa.jp/ "+net); のうちのnetの部分だけをGETしているのに対し、エミュレータからだと http://から取得しようとしている、という違いがあります。 エミュレータがわの設定の問題なのか、サーバーの設定なのか通信関係の知識がないためにわかりません。 一応403の意味はググってしらべました。 それからサーバーは自宅サーバー(win)です。
572 名前:デフォルトの名無しさん mailto:sage [04/10/27 01:10:00] >>564 MIDletとCanvasとshoriの関係ってどうなってんの?って話。 端末はアプリ実行時にMIDlet生成しようとして、通常MIDlet内でCanvasを生成して 実際の処理はCanvas内で完結するように作ると思う。 第3のインスタンス(shori)をCanvasで生成して、そいつからCanvasに再描画させるなら cvs(MIDlet midlet) { this.midlet=midlet; } と同様に、shoriの中に shori(Canvas canvas) { this.canvas=canvas; } としたら、このコンストラクタ後 canvas.repaint(); で出来る。もちろんこれだけではないが、MIDlet(msc)とCanvas(cvs)の関係と同様に Canvas(cvs)と処理役(shori)の関係を作ればいいってこと。 >>571 報告乙。え?質問なの?
573 名前:デフォルトの名無しさん mailto:sage [04/10/27 16:15:08] >>571 403の意味より…
574 名前:564 mailto:sage [04/10/27 17:29:35] さっき買ってきた本見ながら572さんの言ってるのを色々試してみるといけました。 コンパイラでエラー出ないし実行も問題ないんだけど /*cvs*/の所でshori2(shoriとはベツ)のメソッド使用すると 型shori2からのstaticメソッドmethod(String)にはstaticにアクセスして下さい と警告が出る shori2.method(String)からstaticを取ると警告は出なくなるけど、shoriがエラー。 実行出来てるし問題はないと思うんだけどかなり気になるのでたいさくあれば教えて下さい
575 名前:デフォルトの名無しさん mailto:sage [04/10/27 18:02:24] >574 もう分かったから晒せる範囲でソース*全部*晒せ。 いつの間にか最初は影も形もなかったshori2が出てきてるじゃないか。 この分だと「実は……」でshori3、shori4が出てきそうで付き合い切れん。 (まぁ、携帯相手に6個もクラス作ってる余裕は普通ないはずだが それを言ったら、そもそもクラスは2つまで!!が定石なはずだし)
576 名前:564 mailto:sage [04/10/27 18:49:39] >>575 ソースは /*cvs*/に、 shori shori = new shori(this) shori2 shori2 = new shori2(this) が増えてて、cvs()[}が消えてる /*shori*/は static Canvas canvas; が増えててコンストラクタがpublic shori(Canvs canvas){shori.canvas=canvas} に変わってる /*shori2*/は単純に受け取った文字列を無限ループで表示するメソッドがあるだけ コンストラクタはshoriがshori2に変わってるだけで同じ んで、メソッドが一つあるだけ public static String testt(String str){ try{ ...draw関係... canvas.repaint() while() ; }catch(...){} そんで、cvsからshori2のtestt()を呼ぶと警告がでる 呼んでる場所は/*cvs*/のshori.exet()の次の行 shori2testt(moziretu);
577 名前:デフォルトの名無しさん mailto:sage [04/10/27 19:48:54] >576 ……対策はただ一つ。 藻前さんがもう一度Javaの入門書をきっちり読んで理解すること。 それが嫌なら、警告が出続ける事実を甘んじて受け入れろ。 ちなみに「なぜか知らないけど付けたor取ったら動くようになった」って理由で メソッドにstatic付けたり取ったりしてるようでは「入門レベルなら理解してる」 とは言えない。
578 名前:デフォルトの名無しさん mailto:sage [04/10/27 22:52:14] 対策:Java言語の入門書(携帯アプリの本じゃないぞ)でしっかり勉強する 近道は無いよ ---------------------------- 次の方ドーゾ
579 名前:デフォルトの名無しさん [04/10/28 00:23:25] なんかオートバックスにVodafone用GPSが売ってて、専用Vアプリを使えばカーナビになるって事なんだが。。。GPSとVアプリとの通信方法って公開されてるかどうか、誰かしらない?
580 名前:デフォルトの名無しさん mailto:sage [04/10/28 01:32:40] >>579 シリアル制御してんじゃないの? その手の話はほとんど知らんのであくまで憶測だが。
581 名前:デフォルトの名無しさん mailto:sage [04/10/28 01:41:24] >>579 ttp://developers.vodafone.jp/dp/tool_dl/java/tech.php それっぽいのあるけど、pdfの中までみるのはめんどい。