[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 10/05 13:14 / Filesize : 253 KB / Number-of Response : 939
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

iモード携帯電話用Java(iアプリ) Part15



1 名前:デフォルトの名無しさん [2007/08/21(火) 15:32:26 ]
NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。

※DoCoMo以外は下記スレへ。
CLDC+MIDP+携帯電話用Javaスレッド part 7
ttp://pc11.2ch.net/test/read.cgi/tech/1180010672/

■ iアプリ特有ではなくJava一般に関する質問はこちらへ
【初心者】Java質問・相談スレッド104【大歓迎】
ttp://pc11.2ch.net/test/read.cgi/tech/1185493592/

■ iモード携帯電話用Java(iアプリ)まとめサイト
ttp://ton.my-sv.net/

■関連スレ
【日本携帯】Mascot Capsule/Micro3D【標準】
ttp://pc8.2ch.net/test/read.cgi/tech/1117773530/


321 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 03:32:02 ]
純粋なJavaなんてこだわってるのは信者だけ
そろ信者と頭の古いsunのせいでそれはいるだろって機能でさえ
C#がでるまで入れようとしなかったくらいだから迷惑な話だよな

322 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 03:35:49 ]
いきなりどうした?

323 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 03:48:33 ]
つまり、プリプロセッサを公式にサポートしろと言いたいのですよw

324 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 04:01:43 ]
>>315
組み方によるがプリプロセッサに頼った方が小さくなる
例えばstatic finalは#defineに置き換えれば大抵の場合クラスファイルを縮小できる
まぁ色々あるんで一概にどうこうとは言いにくいんだが読みやすさを損なわないレベルで小さくなる場合が多いのは事実だな
ただ初心者にはお奨めはしないけどな
Obfuscatorを2〜3個と7Zipも使ってもどうにもならない場合の最後の最後の手段だな

325 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 04:06:34 ]
>318
言いにくいからというより、単純に通じないからだろうな。
メディアや様々なドキュメント類が一斉に変えない限り普及しないんじゃないだろうか。

現状、ドキュメントなら大抵「1キロバイト=1024バイト」とか注意書きがあるんで混乱しないし、
1キロバイトが1024バイトなのはファイルサイズやメモリ容量、
1000バイト(というか1メガバイト=1*1000*1000バイト)なのはストレージ(大抵HDDを指して)、
としてまず問題なく会話できるし。

326 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 07:31:01 ]
最近の人は「キロ」と「ケー」の区別をつけないのか

327 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 07:45:38 ]
HDDさえ1024単位にしてくれりゃ会話でまぎらわしいことは
かなり減ると思うけどな。

328 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 18:14:45 ]
通信速度が10進数だから,そっちを基本にするしかないだろ

329 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 19:38:04 ]
10進数で通信速度を測定するのって何の通信?



330 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 21:29:29 ]
話切って申し訳ないですが、質問させてください。。

904iシリーズで追加されたオプションAPI、
「動作認識」を実装しようとしてるのですが上手くいかず困ってます。。

最初はとりあえず、ケータイの傾き(rolldata)を取得し、
その値を画面に表示させるコードを書こうとしています。

プログラミング初心者のため、かなり汚いコードだとは思いますが、
指摘いただけるとうれしいです。

331 名前:330 mailto:sage [2007/10/14(日) 21:33:46 ]

public class Gesture1 extends IApplication {

public void start() {
GestureCanvas c = new GestureCanvas();
Display.setCurrent(c);
c.exe();
}


332 名前:330 mailto:sage [2007/10/14(日) 21:35:22 ]
//続き
class GestureCanvas extends Canvas {

void exe() {
RollReader rollreader = RollReader.getRollReader(0);
Graphics g = getGraphics();
float zahyo[] = new float[2];

while (true) {
//動作認識処理
rollreader.start();
RollData roll = rollreader.getRollData();
zahyo = roll.getAccumulatedMotion();
rollreader.stop();

g.lock();
g.setColor(g.getColorOfName(g.WHITE));
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(g.getColorOfName(g.BLACK));
g.drawString("x座標 : " + zahyo[0], 5, 20);
g.drawString("y座標 : " + zahyo[1], 5, 40);
g.unlock(true);

333 名前:330 mailto:sage [2007/10/14(日) 21:36:04 ]
//最後

try {
Thread.sleep(200);
} catch (Exception e) {
}
}
}
public void paint(Graphics g) {
}
}
}

//長々とすみませんでした。。。

334 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:06:48 ]
機種は?
確かDだけ何か違ったとか報告受けた覚えがある。

335 名前:330 mailto:sage [2007/10/14(日) 22:16:48 ]
SH904iです。。
エミュレータで試験できないので、実機にアプリをDLして実行してみているのですが、エラーの表示と共に強制終了されてしまい原因もわかりません。。。

336 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:28:07 ]
Exceptionでエラー確認してみ

337 名前:330 mailto:sage [2007/10/14(日) 22:32:37 ]
330です。何度もすみません。
Dだけなにかが違うという件ですが、、
Dには加速度センサが、SHとPにはgesturetek mobileが搭載されているということだと思います。
前者ではその名のとおりセンサを使って、後者ではインカメを用いた画像検知によりケータイの動きを認識します。

ドコモ提供のAPIリファレンス(オプション・拡張編)
ttp://www.nttdocomo.co.jp/service/imode/make/content/download/kiyaku5_details.html
では、最後の章に加速度センサの、19章に動作認識(インカメ使用)の説明があります。

私は、shですので、インカメを用いた動作認識を実装したいと考えています。

338 名前:330 mailto:sage [2007/10/14(日) 22:35:00 ]
>>336
Main :com.nttdocomo.device.gesturereader.GestureException Gesture1
com.nttdocomo.device.gesturereader.GestureException
at com.nttdocomo.device.gesturereader.RollReader.getRollData(+80)
at Gesture1$GestureCanvas.exe(+22)
at Gesture1.start(+17)
com.nttdocomo.device.gesturereader.RollReader

このようなエラーが出ますが、未熟者のため解決できず。。。

339 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:35:14 ]
とりあえず、運良く会社から持ってきてた俺自作のソース見ると

m_RollReader.start();
m_RollReader.recenter();

はwhile() の上に出して1回だけにした方が良さそう
それでもダメなら

m_RollData.getImmediateMotion();

の方のパラメータも変なの来てるか確かめれ。
もちろんExceptionもなw



340 名前:330 mailto:sage [2007/10/14(日) 22:41:44 ]
>>339
ありがとうございます!
がんばってみます。

341 名前:330 mailto:sage [2007/10/14(日) 22:48:11 ]
>>339
一つ質問なのですが、
rolldata.start()
をwhile外に出すとすると、
rollreader.stop();
の位置が問題になると思いますが、

一回一回の処理ごとにstopかける必要はないのでしょうか?
というか、もしかしてstop()自体なくても、動作に支障はないのですか?

342 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:32:23 ]
大きい範囲で1回であればいるかもしれんけど、
枚フレームする必要は無いな。

まぁ、経験上カメラとか外部のインターフェース使う奴は
動作が遅いのが普通だから毎フレーム呼び出しは
無理な場合が多い。

343 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 00:40:55 ]
マナーモードや受話音量の制御ってアプリ側からは出来ないですかね?

344 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 04:12:01 ]
できちゃったら本末転倒
アプリや本体の挙動を制御するための機能なんだから

345 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 11:07:19 ]
>>341
JSや加速度センサは、start()時の位置を(0,0(,0))として、
次フレームでゼロ地点からの相対位置を元に何かを求めるモノなので、
基本動きっぱなしを想定してる。
なので止めちゃダメ。

あとDoJa5.0 Ver3.0のiαppliToolで、エミュレーションにも対応してる。
ツール→動作認識データ編集と、ツール→加速度センサデータ編集がそれ。
使い物になるかは少々疑問だけど、とりあえずの動作確認だけならエミュで十分なハズ。
パラメータを設定しなくても、エミュで例外は出ない。
ゼロが帰ってくるだけ。

たしか移動量の定義がShake以外不明だったと思うんで、
実機でやってみないとわからない部分が多いと思うがガンガレ。


346 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 11:20:19 ]
何か酷いな…

JS→ジェスチャーテックのことで略してJSと何処かに書かれてて
  そう覚えてしまった(´д`) ゴメン。
帰って→返って

ちとマグロでも釣ってくるわ。


347 名前:デフォルトの名無しさん [2007/10/15(月) 13:12:40 ]
なあ、@アプリで再生できる動画サイズって500KB以上は無理なんか?

348 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 13:31:43 ]
確かDojaのバージョン依存とみせかけて機種依存だったと思った。
俺の仕事じゃなかったから適当に聞いてたんでうろ覚えw

349 名前:デフォルトの名無しさん [2007/10/15(月) 13:36:29 ]
お、機種依存なのか




350 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 14:07:36 ]
>>347
www.nttdocomo.co.jp/binary/pdf/service/imode/make/content/iappli/about/jguidefordoja5_x_070423.pdf
「4.4.5 FOMA 携帯電話によるVisualPresenter でのiモーションの再生」
を熟読するんだな

351 名前:デフォルトの名無しさん [2007/10/15(月) 14:17:48 ]
機種によっては500kb以上いけるかもしれないが
Doja5.0では500kbまでしかだめだ

って書いてあるようなないような

352 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 15:11:30 ]
500KBまでは全機種で動くことを保証してそれ以上のサイズを放り込んだ時動くかどうかは機種依存ってことだろ?

353 名前:330 mailto:sage [2007/10/15(月) 15:42:57 ]
>>345
ありがとうございます。
エミュレータの動作認識設定を行い、何とかエミュ上で立ち上がるまでになりました。
しかし、実機に移すと、エラーが起こり、アプリが立ち上がりません。。。

どうしてでしょうか。。。。。



354 名前:330 mailto:sage [2007/10/15(月) 15:44:30 ]
ちなみに、教えていただいたとおり、while外にstart()を出してあります。
ソースは以下のとおりです。
(また、長々とすみません・・・)

public class Gesture1 extends IApplication {

public void start() {
GestureCanvas c = new GestureCanvas();
Display.setCurrent(c);
c.exe();
}


355 名前:330 mailto:sage [2007/10/15(月) 15:45:22 ]
//つづき

class GestureCanvas extends Canvas {

void exe() {

RollReader rollreader = RollReader.getRollReader(0);
Graphics g = getGraphics();
float zahyo[] = new float[2];
rollreader.start();
rollreader.recenter();

while (true) {

RollData roll = rollreader.getRollData();
zahyo = roll.getAccumulatedMotion();

g.lock();
g.setColor(g.getColorOfName(g.WHITE));
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(g.getColorOfName(g.BLACK));
g.drawString("x座標 : " + zahyo[0], 5, 20);
g.drawString("y座標 : " + zahyo[1], 5, 40);
g.setPixel((int) zahyo[0]/2+120, (int) zahyo[1]/2+120);
g.unlock(true);


356 名前:330 mailto:sage [2007/10/15(月) 15:45:54 ]
//さいご

try {
Thread.sleep(1000);
} catch (Exception e) {
}
}
}

public void paint(Graphics g) {
}

}

}

357 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 15:47:41 ]
>330
ソースよりもまずエラーの内容を書かないと始まらない

358 名前:330 mailto:sage [2007/10/15(月) 16:28:37 ]
>>357
指摘ありがとうございます。
エラーの内容ですが、実機だとただ単に強制終了されてしまうため、
どのようなエラーが発生しているのかもわからない状態なのです。。。
エミュレータではエラーは出ないのですが・・・

何度も質問ばかりで申し訳ありません。

359 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 16:42:16 ]
AppTrace=on にしてみれば実機でも見れるんじゃね?
それと roll の null チェックはした方がいいな。
機械動かす以上すぐにパラメータが取れるとは思えない。



360 名前:345 mailto:sage [2007/10/15(月) 21:09:43 ]
マグロ漁行ってる間に職場がアク禁食らってた(=´∇`=)
これだからNTT回線は…

>>330
たぶんRollData#getRollData()をtry〜catchで囲んでないからだと思うよ。
パラメータ取得失敗時に、普通に例外吐く仕様だったはずだから。

ぬるぽチェックはzahyoの定義で初期化してるから要らないと思うけど、
例外キャッチした時に前のパラメータが残るのだけ注意。
相対座標として扱うと計算ミスる。案外使ってて違和感感じるから。

で、例外についてはリファレンス読んでくださいな。

361 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 02:45:25 ]
拡縮/回転ができるスプライトシステムを作ろうと思いポイントスプライトでいろいろ
実験しています。どうも画像が歪むのでテクスチャを格子模様にしてどういうときに
歪むのかチェックしたのですがいま一つ条件がわかりませんでした。uvwhのぞれ
ぞれが2のn乗になっていない時かなとも思いましたが64*64でも1ドットだけずれて
表示されたりしたのでよくわかりません。

WEBでサンプルソースを見つけたのでそちらも試したのですが、一見ちゃんと表示
されているようでも右端と下端のドットが表示されていませんでした。
ポリゴンでフィールドを表示しておいてその上にdrawImageで各種情報を表示する
ような(フィールド側は拡縮可能)構成を考えていたのでちょっと悩んでいます。

なぜ歪むのか原因、もしくはプログラム上/データ上のチェックポイントがわかる方
がいらっしゃいましたらご教示願えないでしょうか。



362 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 09:58:29 ]
歪むとかいってるのはエミュでの動作の話?
昔同じようなことやったことあるが、マスコットカプセルの
ソフトウェアレンダリング(901時代とか)は、内部で2pxとか4px単位で
処理してるのか画面上とテクスチャの大きさをあわせても
そのままdot by dotのマッピングにはならないと判断した
最近のハードウェアレンダリングする機種では結果違うかもしれんよ

363 名前:361 mailto:sage [2007/10/16(火) 12:52:53 ]
>>362
情報ありがとうございます。
エミュと実機両方で試しましたが、同じような表示になりました。
矩形の枠の一か所だけ1ドット飛び出したような表示になったりしたのですが、その
飛びだす位置が同じだったので同じアルゴリズムなのかなどとちょっと感心しまし
たが。
書き忘れましたが900i以降対応させるのでDojaのプロファイルは3.5です。
試した実機は対応する機種のミニマムスペックに近いF900iやN901icなどの古めの
ものです。
ポイントスプライトをやめて三角形や矩形のポリゴンにしたらどうかな、などと考えて
ましたがソフトウェアレンダリングによる歪みというか誤差だとするとだめっぽいです
ね。やりたいことの性質上、きっちり1ドット単位で表示できないと困るので面倒だけど
drawImageとdrawScaledImageでやろうかな。D900iを非対応にすればGraphics2で
半透明使えるし、回転はほとんどないからなんとかなるかも。

364 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:07:53 ]
小数使ってる?
0.5を足してから整数化するとか。

365 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:10:36 ]
ピクセル毎に自力処理か。
どっちを回してる?
スプライト側のピクセル毎に回転後座標を求めてキャンバスに打つより、
キャンバス側で「スプライトのどのピクセルが来るか」を基に打つといいよ。

366 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:41:50 ]
drawScaledImageに半透明が適用されるかどうかは
機種依存じゃなかったっけ?

367 名前:361 mailto:sage [2007/10/16(火) 14:16:27 ]
>>364
小数は使っていません。今のところ拡縮などはしないで等倍のスプライトを表示して
実験しているだけなので。その段階で361のような状態なのでちょっと悩んでいたの
です。
>>365
自力での描画処理は行っていません。もし行うとすればたしかに365さんのおっしゃ
るようにディストネーション側のピクセルからソースの色を引っ張ってこないと拡大
したときに隙間とかができてみられたものじゃなくなりますね。そもそも自前描画で
速度は足りるものでしょうか。以前30Kアプリでプログラムサイズが全く足りなくて、
一部ルーチンをスクリプト化してスクラッチパッドに逃がしたことがあったのですが、
以外と速度は大丈夫でした。しかし描画処理となるとそれとは比較にならないほど
演算量が増えるのでやるとするとまた実験が必要ですね。
>>366
情報ありがとうございます。そうなるとちょっと辛いですね。機種情報調べてみます。


368 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:39:40 ]
マスコットカプセル4にしちゃえよ

369 名前:330 mailto:sage [2007/10/17(水) 11:54:56 ]
>>359, 360
助言ありがとうございます。。

AppTrace=on にして、RollData#getRollData()をtry〜catchで囲み、、、

そして、これが重要な問題だったと思うのですが、
RollReader rollreader = RollReader.getRollReader(0);
のカメラIDを(0)から(1)に変更したら、実機で動きました!

インカメのIDは1なんですね。
皆様色々とアドバイス本当にありがとうございました。
助かりました。



370 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 12:15:05 ]
カメラIDは機種依存だよ

371 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 13:15:44 ]
確か1の場合が多かった気はするが、機種依存だな。
ウチはとりあえず数回まわして初期化して取れた奴使うってやってた。

372 名前:デフォルトの名無しさん [2007/10/17(水) 18:56:21 ]
Dojaの標準クラスのファイル操作って結構メモリ周りを乱雑に扱ってないか?
使えるメモリ少ないのにメモリ上に全部展開とかって出来ないファイルとかどうすればいいんだかねえ

これ標準クラスのソースなんて公表されてないんだよな?

373 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 20:56:23 ]
鉄拳ってjavaで作られているんですか?


374 名前:361 mailto:sage [2007/10/18(木) 03:01:39 ]
>>368
マスコットカプセル4だとDoja4.0からなので今回は使えないです。

あれから機種情報を調べたり実験したりしていました。
まずdrawImageの半透明ですがDoja4.0の機種で使えないものが何機種かあった
のでダメでした。3.5だとD900i以外大丈夫だと思ったのですが、4.0でこんなに非対
応の機種があっては採用できません。ためしに実装したものを手元にあるN901ic
で実行したところやはりダメでした。

ポイントスプライトの実験をやり直していたところどうやら縦横が2のn乗であれば
大丈夫らしいことがわかってきました。以前の64*64で駄目だったのは私の見間
違いだったようです。縦横が2のn乗であれば正方形である必要はなく8*16等でも
いけました。今回の場合、画像素材がすべて一辺8の倍数で描かれていたので
8*8に分割して描画してやれば大丈夫そうです。
その場合、プリミティブ数が増えるのでそっちの方がちょっと心配ですが(240*240
の画面だと全面埋め尽くすと900個のポイントスプライト)半透明で描画する可能性
のある画像はごく一部なのでdrawImageと併用して凌げると思います。

iアプリは2年に一回くらいしか作る機会がなく、作る度に何かしら苦労してます。


375 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 03:53:10 ]
それが楽しかったりするのさー

376 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 22:57:50 ]
トライアングル2枚で右下だけuv調整、とかいう話をしてるの?

377 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 03:37:41 ]
ニューロのジョイスティックモードに対応したいと考えています。
PointingDeviceクラスの説明には

>端末によってサポートされていない場合があります。
>未サポートの場合、メソッドが呼び出された時点で
>UnsupportedOperationException が発生します。

とあるのですが、isAvailable()で使用可否を取得するだけでも発生するのでしょうか?
未対応端末なら通常通り十字キーで使用できるように判定したいのですが・・・

378 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 10:47:44 ]
>>377
例外出ようが何だろうがキャッチすりゃ良いだけでない?


379 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 10:52:35 ]
使いたい機能が使えなかったら非対応にするしか無いから
特に考える必要は無いな。



380 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 11:15:23 ]
>>377
DoJa-3.0な機種とかだと全ヶ所をtryで括っていても
PointingDeviceのジョイスティックモード(DoJa-3.5以降なので)用のメソッドを含んだclassがあるだけで
Unable to load classを吐いて強制終了する端末がある(クラスローダーが例外を発するのでtryで止められない)
100Kアプリなら問題ないけど30Kアプリだと問題になる
(30Kアプリでニューロジョイスティックモード対応機種はN700i,N701i)

もし古い機種にも対応した上でニューロも対応したいなら
jarを2個提供する方が安全だと思う
DoJa-3.5以降でも同様の実装の機種があるかどうかの確認はしてないんで知らない

後メソッドが呼び出されたら例外と書いてあるんだからDoJaの仕様にちゃんと則ってれば
isAvailable()を呼んだだけで例外が起きるPointingDevice関連は全部tryで括るべき

381 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 12:20:24 ]
isAvailable()は、厳密には、デバイス搭載機の端末の設定が許可になっているかを調べるためのメソッドらしいから(例のPDF参照)、
try-catchした方がいいと思われ

382 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:03:29 ]
サウンドの再生が終わったのに
mediaActionが全く呼び出されないんですが
原因は何が考えられるでしょうか…?

383 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:30:40 ]
processEventで無限ループ

384 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:33:35 ]
setMediaListenerしてない

385 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 08:49:50 ]
サウンドのケツに大量の無音部分が入ってる

386 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 14:48:31 ]
mediaActionが呼び出されたことを確認するためのコード自体が間違っていて
実際は呼び出されているのに、それがわからない状態。

387 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 14:10:31 ]
エミュでは実行できたけど
実機で実行したら「ソフトに継続動作出来ない障害が発生しました。」
って出るんだけど原因は何でしょうか。

388 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 14:43:16 ]
>>387
1、メモリが足りない
2、その機種では使用できないオプショナルなor上位DoJaのAPIを使ってしまった
3、synchronizedが必要な個所でsynchronized抜け
4、他


389 名前:387 mailto:sage [2007/10/27(土) 15:30:58 ]
インポートしてるのが
import com.nttdocomo.ui.*;
import java.util.*;
import javax.microedition.io.*;
import java.io.*;
これしかないんだけどオプショナルなAPIがこの中に含まれてたりしますか?



390 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 15:56:12 ]
オプショナルなAPIはリファレンス読めばどんなのがあるかわかる

つーか細かく聞きたいならソース公開しろ
はっきり言ってこんな質問してる段階でプログラムの出来とかには誰一人期待もしてないから
どんな下らんソースアップしても笑うやつは居ないよ
それ以上は自力でどうにかしろ


391 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:10:18 ]
おk、笑う準備完了。

392 名前:387 mailto:sage [2007/10/27(土) 16:23:55 ]
前スレで作りかけの1回うpしたやつだけどね
zif.hp.infoseek.co.jp/tmp/tori2.zip

393 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:27:27 ]
よし、俺がエスパーしてやる。
実機だと Display#setCurrentした瞬間にpaintが呼ばれる。
なのでIApplication#start()後に画像読み込み、paintで描画処理としていると、
先にpaintが呼ばれるため落ちる。


394 名前:393 mailto:sage [2007/10/27(土) 16:33:30 ]
む、外したw
しかし随分パワーアップしたな…


395 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:50:50 ]
おk
読むの断念。
仕事に戻る。

396 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:05:57 ]
取り敢えずざっと流し読みした
危なっかしいコーディングがいくつか見受けられるがあまりそれが問題だとは考えたくは無いかな
start()でメインルーブを作ってるの以外機種依存な部分は見受けられない
メモリが足りてないんじゃないか(ヒープコンパクション関連も含め)とは思うが
しかし巨大な配列を作ってるわけでもないしデータはリソース読みみたいだからサイズ的にも多寡が知れてるので
ちょっと原因が不明だな実機でのappTraceの結果はなんとなってる?
あと実機の機種名がなんなのかもだな>N900i,N901i,P900i,P901iはヒープコンパクション問題があるが
どこまで実行が進んでるのかを見るためにappTrace=onにして

System.out.println("0");
toriMain ten=new toriMain();
System.out.println("1");
Display.setCurrent(ten);
System.out.println("2");
ten.exe();

みたいにしてみて根本的に実機で起動そのものが出来てるのかの確認をしてみ


397 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:19:45 ]
俺もざっとしか読んでないけど画像122枚一気読みが原因では…


398 名前:387 mailto:sage [2007/10/27(土) 19:23:10 ]
jargで圧縮したのが原因みたいでした。
10KB分容量大きくなっちゃうけど諦めようorz
みんな色々調べてくれてありでした。

399 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:48:15 ]
jargは-nobcoを入れたほうがいいぞ
今ならProGuardをかけてからjarg -nobcoでjargにpreverifyもやらせればかなり縮む
その後7Zipで潰せば良い

あと気になったところ
一応安全のためにCanvas.eventはsetとgetをメソッドで保護してメソッドは1つのオブジェクトでsynchronizedにしておくべき
それ以前にIApplication.start()そのものでメインループを作る場合はprocessEvent()が呼び出されることは保証されてない(機種依存となる)

Calendar.getInstance()を何度も実行してるが1つ目と2つ目の間で日や月を跨ぐ可能性を考慮してないので
Calendar.getInstance()は1度にしてそれを1つ目と2つ目で使いまわすべき

定期的にSystem.gc()を呼んだ方が良い




400 名前:387 mailto:sage [2007/10/27(土) 21:51:14 ]
>>399
アドバイス色々ありです。
class myEvent
{
int event;
synchronized void setEvent(int ev){event=ev;}
synchronized int getEvent()
{
int n=event;
event=-1;
return n;
}
}
setEventはprocessEvent()から呼び出して
getEventはループ内から呼び出すってことでいいのかな?

401 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:28:32 ]
yes
別にクラスを分けなくてもメソッドそのものはCanvas(toriMain)に統合してても問題は無いけどね
(Canvasという一つのオブジェクトで保護すればいいってことだから)
まぁint 1つなら保護する必要性の有無は疑問ではあるがしないよりはしておく方が安全
結局の所start()というスレッドと携帯端末が作成したprocessEvent()を呼び出してるスレッドが並列動作時の問題だから


402 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:22:26 ]
>それ以前にIApplication.start()そのものでメインループを作る場合はprocessEvent()が呼び出されることは保証されてない(機種依存となる)

ちょっとまった、うちのゲームは全てstartで無限ループしているが、1回たりとも機種依存でダメだったことはないぞ
機種依存って資料かなにかに書いてあった?


403 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:00:49 ]
>>402
じゃあ聞くがIApplication.start()とCanvas.processEvent()が別スレッドで呼ばれることが保証されてると書かれた資料を示せ
少なくともjguidefordoja5_x_070423.pdfの86ページにはCanvas.processEvent()がどのようにスレッド割り当てされるかは機種依存とある

404 名前:デフォルトの名無しさん [2007/10/28(日) 07:50:22 ]
DoCoMoの各機種の文字サイズ(大フォントが○×○、中フォントが○×○、小サイズが○×○)とか
をまとめてるサイトって誰かご存知ないですか?


405 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 07:59:52 ]
んぱか
をゲイツに聞いてみろ。

406 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 10:02:49 ]
>>403
仕様として機種依存にできることは書いてるけど、
402実際に制限のあった実装してる端末が今のとこなかった、ということでしょ

保証を出せとか言い出して少し落ち着けよ

407 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 12:36:29 ]
>>403
確かにスレッド割り当て〜はあるから「シングルスレッドで実装されてたらダメ」だね
資料Thx
一応商業的に作ってても、今のところ「startで無限ループしたらやばかった」って機種は無かったよ
将来的な保証を考えて、普通にスレッドでやったほうがいいかもね

408 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:04:57 ]
>>406
それは今の所の実装がそうであるってだけじゃん。
もし動かない端末が現れた場合、客にどう言い訳する?
仕様は守っとこうぜ。

409 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:18:02 ]
契約の内容次第だが、新機種対応は別料金です。
でおk。

言い訳の必要が見当たらん。



410 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:04:16 ]
仕様も大切だが、趣味でやってる立場からすると
現実の実装についての>>402の情報はスゲーありがたい。

411 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:39:12 ]
>>407
一応既に>>282って発言もあるみたいだけど?
趣味な人間としちゃ自分の周りで持ってる人と自分が持ってる機種でしか直接確認できないから
その辺どうなのかは確かに気になるな

412 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:40:29 ]
>>408
仕様外でも動く数がここまできたらもうDoJaの仕様の方を変更する規模だよ
知らずに作ってる人だって多いだろ。俺も知らんかったし
影響を無視して仕様を強行するより、現実の動作に互換を合わせて
マイナーアップで仕様を変更する方が現実的。まあ1プログラマの予想だけどね

で、仕様通りに作れてなかったソフトが、1発目に動かなければ非対応になるか、
409の通り別料金か修正すればいいだけ。
理由が仕様に載ってようがいまいが、存在しない機種のための動作保証なんてしないのが普通。
言い訳をする必要はなく謝って修正すればいい話。

413 名前:デフォルトの名無しさん [2007/10/28(日) 18:12:17 ]
i-appliでまだ商売できるのなら、この国も終わりだね。

昔からPCは技術者を育成した、しかし、携帯は中国・インド・イスラエルに仕事を
与えるだけだ。

414 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:19:52 ]
>>413
行間が空き過ぎてて読み取れません(´・ω・`)

415 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:26:48 ]
>>412
>仕様外でも動く数がここまできたらもうDoJaの仕様の方を変更する規模だよ
>知らずに作ってる人だって多いだろ。俺も知らんかったし
単にドキュメント読んでないだけだろう。
動作保障外の組み方しておいて、今までたまたま動いてたからって
それを仕様としろなんて普通ありえない。

>理由が仕様に載ってようがいまいが、存在しない機種のための動作保証なんてしないのが普通。
とりあえず仕事として、将来的にも機種対応をしていくつもりで組んでいるのであれば、
ある程度は動作を見込んで実装するのが普通。


416 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:39:20 ]
>>415
熱意に溢れてるなw

ウチの会社で中国人と一緒にアプリ作らないか?w
携帯アプリに関わった人どんどん辞めて奴隷不足なんだ。

417 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:58:32 ]
>>415
ちょっと聞くけどさDoJa1.0の頃からドキュメントに記載されてたの?もしそうなら

> 単にドキュメント読んでないだけだろう
って言う貴方の意見が絶対的に正しいんだけどさ

418 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:09:32 ]
>>417
jguide010514.pdf(DoJa1.0のドキュメント2001/06/22発行)の65〜66ページにもちゃんと書いてある
誰でも確認できることなんだから自分で確認してから書いたほうがいい


419 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:15:05 ]
え?
こんな事わざわざ確認するのがめんどくさいから聞いたんだけど



420 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:50:11 ]
>>412
仕様を縮小解釈するのなら、実装を拠り所にしてもいいけど、
仕様を拡大解釈するのはマズいんじゃないかな。

421 名前:デフォルトの名無しさん [2007/10/28(日) 20:35:51 ]
流れぶった切ってすみません、
生まれて初めてのjavaというかプログラミングに挑戦したいと思って
いるのですが、開発環境すら整備できていません、
ネットで読み漁ったところ
java2SDK,Standard Edition
j2sdk-1_3_1_11-windows-i586.exe
をゲットする所から始めないといけないようですが、
SUNのサイトにいくとSolarisむけの開発環境しか手に入らないぽいです。
(プロ向けに有償サポートなら手に入りそうな文面ですがそこまでは、、)
皆さんはどういった開発環境で行われていますか?
今でも環境を整えられる方法があれば知りたいです。

長文すみません。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<253KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef