iモード携帯電話用Java(iアプリ) Part15at TECH
iモード携帯電話用Java(iアプリ) Part15 - 暇つぶし2ch261:デフォルトの名無しさん
07/09/28 23:55:16
すみません、Eclipse3.2、または3.3にて、エミュレータが起動した瞬間に落ちてしまうようになりました。
ビルドでエラーは出ず、JARファイルは生成されています。
DoJa5.0ツールで直接ビルド、起動した場合は正常に起動、動作します。j2sdkはは1.42です。
Eclipseを介してビルドした物はDoja5.0ツールから起動しても落ちます。
また少し前まではEclipseでも正常に起動していました。(ただし途中で落ちてました。)

何か設定を弄ってしまったのかもしれませんが、Eclipseに明るくなく、対処方法がわりませぬ。
思い当たる節があれば是非教えてください。

262:デフォルトの名無しさん
07/09/29 00:00:15
Stringの中身を消すとき
str="";とstr=null;
ってどっちの方がメモリ節約できますか?

263:デフォルトの名無しさん
07/09/29 00:58:55
消すという概念自体がjavaに当てはまらない気がするが
ガベコレに拾ってもらう上で""(空文字)オブジェクトが生成されない
str=null;の方が節約って意味では確実なんじゃない?
str="";は結局str=new String("");って事だから古いstrの中身は消えるだろうけど
新しいStringオブジェクトが生まれてるよ

264:259
07/09/29 01:13:49
>>260
そうでしたか。
getImageでImageをpaint内で生成しているのが原因かと思ったのですが・・・。
(描画の重ね合わせに、Graphics2.setRenderMode()と合わせて使用)

色々調べてみたところ、
さらにImageをdisposeしていないのがまずいような気がしたので、
getImage前にdisposeするようにしてみました。(WaterP6)どうでしょう。
あと、このgetImageをスイッチできるようにしました。

265:デフォルトの名無しさん
07/09/29 01:40:57
>>263
文字列リテラルはクラスがロードされたときに生成されて、
str = "";
は str がそれを指すようになるだけ。
そのたびに新しい String オブジェクトが生成されたりはしない。

266:261
07/09/29 02:06:39
すみません、自己解決しました。
デバッグの仕方を勉強して実行したたところ、
ALERT: java/lang/ClassFormatError: Bad version information.
が出てて、JRE1.5でビルドされているのが問題のようでした。コンパイル設定変えたら動きました。
1.4のbinフォルダにパス通したのはエミュレータ動作用だったのかな。
スレ汚しすまそ

267:デフォルトの名無しさん
07/09/29 02:07:10
>>261
3、4回、マイナーバージョンの違うDoJaを交互にインストール・アンインストールして直ったことがある
Eclipse 3.2.0 + Windows Vista + JDK 1.6

268:デフォルトの名無しさん
07/09/29 02:46:53
>>264
D902iでWaterP6テスト。
blurをonにした瞬間、NullPointerExceptionで落ちることがあるのはご愛嬌として、
OutOfMemoryは起きなくなったみたい。
たしかに毎フレームGraphics2#getImage()はメモリ食いそうだなぁ。




269:デフォルトの名無しさん
07/09/29 03:46:10
>さらにImageをdisposeしていないのがまずいような気がしたので、

脱力系のオチかよ

270:264
07/09/29 09:01:18
>>268
よかった。
getImageで上書きされるものと考えていたのが問題でした。
普通の使い方ならば、ガーベージ自動処理のタイミング的に大丈夫なのでしょうね。

他のアプリにも同様の処理をしているものがあるので、
アプリの機種違いによるエラーは、これで解決しそうです。
(アプリ_FallSのエラーは、現行ver.では起きないようなのでOKです。)

お手伝いいただき、ありがとうございました。

271:デフォルトの名無しさん
07/09/29 13:53:15
毎回getImageするより、オフスクリーンバッファを2枚用意したほうがいいんじゃないか?
Imageの描画コンテキストはGraphics2にキャストできないんだっけ?

272:デフォルトの名無しさん
07/09/29 14:42:06
Imageに対して直接Graphics2の描画(加算レンダリング)をするって事ですよね?
確かにその方法は良いと思います。
できるのであれば、どなたか教えてください。

273:デフォルトの名無しさん
07/09/29 15:29:39
>>272
確かにその方法は良いと思ったんなら、まず自分でやってみろよ。
良いと思うほどなんだから実現の可能性があることは自分でも分かってるんだろ?
教えてくださいじゃなくて、コード書くのが面倒なのでかわりに書いてくださいじゃないのか?

274:デフォルトの名無しさん
07/09/29 18:36:19
ってか、いきなりレベル低くなったな

275:272
07/09/29 19:26:02
>>273
こうすれば良いのですね。
Graphics gi=image.getGraphics();
Graphics2 g2=(Graphics2)gi;//簡単な事なのに、これを思い付けませんでした。

で、この方法で組み直したところ、1つ問題が出てきました。
drawLine((i+1)*d,y[i+1],i*d,y[i]);//(d:1ラインの横方向の大きさ)
曲線を連続したラインで表現するため、↑のようにしていたのですが、
これだと、隣のラインと1ドット重なってしまい、
当然、加算していくとそこだけ色が変わって
・・・
1ドットずれた位置の変位yを計算する方法↓で自己解決しました。
drawLine((i+1)*d,y[i+1]+(y[i+1]-y[i])/d,i*d,y[i]);
(厳密には変位が大きくなるとラインが途切れることになりますが)
これでgetImage()よりは軽くなったはず。(多謝)

276:デフォルトの名無しさん
07/09/30 02:24:48
他人のアプリのそんな細かい部分を語られても
さっぱり分からないが、動いたのならおめでとう。
それにしてもモーションブラーが実装できる時代になったんだなぁ。

277:デフォルトの名無しさん
07/10/01 16:08:11
最近JAVAプログラムを始めた初心者です。
リアルタイムなゲームを作ってみようと思って色んなサイトを参考にしながら作ろうとしています。
で、現在はスレッドを一つ作ってその中で無限ループさせているのですが、一つ疑問が浮かびました。
スレッドの入り口(無限ループの外)にSystem.out.println("スレッド実行");と書いた場合、ひたすら"スレッド実行"
という文字が出力されていました。これはスレッド自体が無限ループのように呼び出されている、という事
なのでしょうか?
ソースの例は以下のような感じです…。
public class applitest extends IApplication{
public static testCanvas a_test;
public void start(){
a_test = new testCanvas();
Display.setCurrent(a_test);
a_test.start();
}
class testCanvas extends Canvas{
public void start() {
System.out.println("スレッド実行中");
while(true){
//メインループ
try{
Thread.sleep(30);
} catch(Exception e){
}
repaint();
}
}
}
}


278:デフォルトの名無しさん
07/10/01 16:10:25
うん?どこでスレッドを作ってるんだ?スレッドを作ってるようには見えないが・・・

279:デフォルトの名無しさん
07/10/01 16:31:08
>>277
スレッドが作れて無いようだが?
基本的にThreadクラスから継承するんじゃないならRunnableインタフェースを実装しなきゃだし
スレッド実行開始はThreadクラスのstart()だがスレッドの実体はどっち方法で実装してもrun()だぞ?
後Canvasのpaint()はabstractだから省略できんだろ、例として書くならそこも簡単でイイから書きなさい

一応IApplicationのstart()とCanvasのイベントメソッドが別スレッドになるかも?というのを使って
IApplicationのstart()でCanvas内の無限ループメソッドを使ったメインループ作成方法はあるけど
これはスレッドを自分で作ってるとは言わないし機種に依存するはず(動く場合が多いけど)

280:277
07/10/01 17:35:39
あれっ、本当だ…。Runnableが実装されてませんね…。
よく考えたらスレッドを作成して動かしてるのはVアプリ用の方でした。
こちらの方法はスレッドじゃないですね…失礼しました。
しかも279さんの仰る通り簡略化しすぎてました…。

とは言えせっかくなので教えて頂ければ幸いなのですが
(改行エラーが出たのでソースは次に書きます)
→ソース
という感じで作っています。この場合、自分は a_test.start(); によってtestCanvas内のstart()メソッド
が一回だけ実行され、その中の無限ループでグルグル処理をするっていうイメージで作ったんです。
しかし実際にはtestCanvas内のstart()メソッドが何度も実行されているようなのです。
物凄い勢いで”実行中”というトレースを吐き出します…。
質問自体分かりづらくて申し訳ないのですが、なぜtestCanvas内のstart()メソッドが何度も呼び出される
のか、ご教授願えれば幸いです。

281:277
07/10/01 17:36:30
public class applitest extends IApplication{
 public static testCanvas a_test;
 public void start(){
  a_test = new testCanvas();
  Display.setCurrent(a_test);
  a_test.start();
 }
 class testCanvas extends Canvas{
  public void start() {
   System.out.println("実行中");
   while(true){
    //メインループ
    repaint();
    try{
     Thread.sleep(30);
    } catch(Exception e){
    }
   }
  }
  testCanvas(){
   //色々処理
  }
  public void paint(Graphics g){
   //描画
  }
 }
}

282:デフォルトの名無しさん
07/10/01 17:38:37
>IApplicationのstart()でCanvas内の無限ループメソッドを使ったメインループ作成方法
Fの505,506,900でこれやると、processEventとmediaActionに処理こねぇ(ノд`)

283:デフォルトの名無しさん
07/10/01 17:41:25
Eclipseのデバッグモードで確認すれば一発

284:デフォルトの名無しさん
07/10/01 17:58:10
>>280
これ実機の話か?
取り敢えずDoJa5.0のエミュ上だと"実行中"は1度出力されるだけだ
a_test = new testCanvas();
の前に
System.out.println("起動");
a_test = new testCanvas();
ってやるとどうなる?
IApplicationのstart()がループしてるのか、Canvasのstart()がループさせられてるのか切り分けてみ

285:デフォルトの名無しさん
07/10/01 18:02:28
あ、後当然ながらstart()とprocessEvent()の両方からアクセスしてるメンバは全部synchronizedになってるよな?


286:デフォルトの名無しさん
07/10/01 23:20:27
>>282
マジ?
ずばりこのやり方で作りまくりなんだけど、、
Fの901以上とか700は大丈夫なの?

287:デフォルトの名無しさん
07/10/02 00:09:24
>>286
この手法って機種依存じゃないの?
IApplication.start()がCanvas.processEvent()とは必ず別スレッドで呼ばれることが保証されてるってどっかドキュメントに書いてある?


288:282
07/10/02 02:51:23
>>286
実は端末がなくて、そこまで調べていない。
とりあえずデバッグ時に、手元にあった上記の三つは動作しなかったので
直した。その他の端末は、修正後に検証センターで端末チェックしたので
その他のF機についてはわからない。

289:286
07/10/02 06:45:39
>>282
>>287
10K制限の時から気にせずやってたけど、
今は容量制限もゆるいし普通のやり方が一番安全ですね。

290:デフォルトの名無しさん
07/10/02 11:26:51
俺もstart()で無限ループやりまくってるw

リリース前にゃ全端末チェックして貰った事もあるけど
問題なかったなぁ。ユーザからクレームも上がってない。

んまぁ音鳴らすアプリが殆どない上processEvent使ってないし
気づかなかっただけかもだけど。


291:デフォルトの名無しさん
07/10/09 11:45:28
過疎ってる(゜Д゜)


292:デフォルトの名無しさん
07/10/09 14:12:31
おうよ

293:デフォルトの名無しさん
07/10/09 20:59:45
ネット上のAPIリファレンスの見方を教えて下さい
全然分かりません

294:デフォルトの名無しさん
07/10/10 10:43:16
ネット上にDojaのAPIリファレンスなんてあったっけ?
ここからダウンロードして使ってえば。
URLリンク(www.nttdocomo.co.jp)


295:デフォルトの名無しさん
07/10/11 01:17:55
このHPなんだけど(Doja5.0)
URLリンク(www.rcdtokyo.com)

例文が全然ないから書式が全然分かりません
できるだけ詳しく教えてください

296:デフォルトの名無しさん
07/10/11 01:20:24
それはまず Java の勉強をするべきでは?

297:デフォルトの名無しさん
07/10/11 03:16:15
>>295
まず初心者用のjavaの勉強から始めるべきだし
もしjavaの勉強のためにDoJaを使おうとしてるなら奨めはしないが
どうしてもというならiアプリ開発解説系サイトの初心者講座を見てhello worldからはじめるべきかな
その上でまずDevGuide.pdfとjguidefordoja5_x_070423.pdfを内容覚えるぐらいに読んでおく
APIリファレンスはリファレンス(参考書)であって入門書ではないからリファレンスだけを見ても
iアプリは作れるようにはならないよ?

もちろんjavaの事を既によく知っていてSwingとは言わんからAWTでいいから使ったことがあるとかなら
DevGuide.pdfとjguidefordoja5_x_070423.pdfを適当に流し読みした後にAPIリファレンスだけあれば
iアプリは作れるだろうけどね

298:デフォルトの名無しさん
07/10/11 22:08:04
初心者用のjavaの勉強は5年もしました
しかしDojaのAPIリファレンスは難解すぎて理解できません
もうやめます

299:デフォルトの名無しさん
07/10/11 22:59:52
Java で5年間何をやってたのか気になるところだな。


300:デフォルトの名無しさん
07/10/12 00:44:16
5年間ずっとjava初心者用HPのサンプルコードのコピペを続けてたのだろうか?
それはそれで根気があるが……

301:デフォルトの名無しさん
07/10/12 00:45:41
ネタだろ。
数年前に一週間程度java勉強しただけの俺でも何とか分かる。

302:デフォルトの名無しさん
07/10/12 21:54:18
しかしそれは本来のJavaでなく携帯向けJavaだったのだ

303:デフォルトの名無しさん
07/10/13 02:10:42
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――‐┬┘
                        |
       ____.____    |
     |        |        |   |
     |        | ∧_∧ |   |
     |        |( ´∀`)つ ミ |
     |        |/ ⊃  ノ |   |
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |    ミ [本来の Java]



304:デフォルトの名無しさん
07/10/13 03:35:34
>302
携帯向けのJavaが偽物みたいにいうな禿

305:デフォルトの名無しさん
07/10/13 03:57:13
携帯向けのJavaなんて存在しないんだけど?w

306:デフォルトの名無しさん
07/10/13 05:14:54
JavaME

307:デフォルトの名無しさん
07/10/13 07:53:16
CLDCとMIDPの立場って一体……

308:デフォルトの名無しさん
07/10/13 07:53:21
携帯向けのJavaってソースに
#ifdefとか#defineとか入ってる奴?w

309:デフォルトの名無しさん
07/10/13 08:02:59
無知だな

310:デフォルトの名無しさん
07/10/13 08:36:07
>>308
30Kに収めようと思ったり機種依存APIを使うために場合分けが必要な場合(Unable to load class回避)には
必要に応じてプリプロセッサも使うけどな
まぁそれも初心者にはあまり関係ない話だ

311:デフォルトの名無しさん
07/10/13 08:53:40
>>307
世界で使われている

312:デフォルトの名無しさん
07/10/13 12:13:12
プリプロセスできれば、と思うことは何回もあった

313:デフォルトの名無しさん
07/10/13 12:19:52
30KiBの壁にあたったとき、プリプロセッサ使って3KiBくらいちんまく
なったときには、純粋なJavaと決別しようと思ったさ。

314:デフォルトの名無しさん
07/10/13 12:48:26
KIBだんご

315:デフォルトの名無しさん
07/10/14 00:05:44
プリプロセッサってクラスファイルを小さくしてくれるの?
あ、でもなんか単位が違うなぁ

316:デフォルトの名無しさん
07/10/14 01:53:14
Kを1000じゃなくて1024であることを明確に示したいときにはKiって書くのよ。

317:デフォルトの名無しさん
07/10/14 01:59:05
それ何業界で使われてるの? ストレージ関連?
こっちでは単に KB て入ったら 1024 bytes 以外の可能性はないなあ。
M が 1000^2 じゃなく 1024^2 であると示したい場合は MeB?

318:デフォルトの名無しさん
07/10/14 01:59:33
でもあんまり浸透してないよなぁそれ・・・
キビバイトとかメビバイトとか言いにくいからかな

319:デフォルトの名無しさん
07/10/14 02:05:58
>>317
URLリンク(ja.wikipedia.org)

320:デフォルトの名無しさん
07/10/14 02:20:10
KIBだんごが正しくてワロタ

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

322:デフォルトの名無しさん
07/10/14 03:35:49
いきなりどうした?

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

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

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

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

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

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

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

329:デフォルトの名無しさん
07/10/14 19:38:04
10進数で通信速度を測定するのって何の通信?

330:デフォルトの名無しさん
07/10/14 21:29:29
話切って申し訳ないですが、質問させてください。。

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

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

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

331:330
07/10/14 21:33:46

public class Gesture1 extends IApplication {

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


332:330
07/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
07/10/14 21:36:04
//最後

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

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

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

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

336:デフォルトの名無しさん
07/10/14 22:28:07
Exceptionでエラー確認してみ

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

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

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

338:330
07/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:デフォルトの名無しさん
07/10/14 22:35:14
とりあえず、運良く会社から持ってきてた俺自作のソース見ると

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

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

m_RollData.getImmediateMotion();

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

340:330
07/10/14 22:41:44
>>339
ありがとうございます!
がんばってみます。

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

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

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

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

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

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

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

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

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


346:デフォルトの名無しさん
07/10/15 11:20:19
何か酷いな…

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

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


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

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

349:デフォルトの名無しさん
07/10/15 13:36:29
お、機種依存なのか


350:デフォルトの名無しさん
07/10/15 14:07:36
>>347
URLリンク(www.nttdocomo.co.jp)
「4.4.5 FOMA 携帯電話によるVisualPresenter でのiモーションの再生」
を熟読するんだな

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

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

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

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

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



354:330
07/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
07/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
07/10/15 15:45:54
//さいご

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

public void paint(Graphics g) {
}

}

}

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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


368:デフォルトの名無しさん
07/10/16 23:39:40
マスコットカプセル4にしちゃえよ

369:330
07/10/17 11:54:56
>>359, 360
助言ありがとうございます。。

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

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

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

370:デフォルトの名無しさん
07/10/17 12:15:05
カメラIDは機種依存だよ

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

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

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

373:デフォルトの名無しさん
07/10/17 20:56:23
鉄拳ってjavaで作られているんですか?


374:361
07/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:デフォルトの名無しさん
07/10/18 03:53:10
それが楽しかったりするのさー

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

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

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

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

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


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

380:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/22 12:20:24
isAvailable()は、厳密には、デバイス搭載機の端末の設定が許可になっているかを調べるためのメソッドらしいから(例のPDF参照)、
try-catchした方がいいと思われ

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

383:デフォルトの名無しさん
07/10/22 23:30:40
processEventで無限ループ

384:デフォルトの名無しさん
07/10/22 23:33:35
setMediaListenerしてない

385:デフォルトの名無しさん
07/10/23 08:49:50
サウンドのケツに大量の無音部分が入ってる

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

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

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


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

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

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


391:デフォルトの名無しさん
07/10/27 16:10:18
おk、笑う準備完了。

392:387
07/10/27 16:23:55
前スレで作りかけの1回うpしたやつだけどね
URLリンク(zif.hp.infoseek.co.jp)

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


394:393
07/10/27 16:33:30
む、外したw
しかし随分パワーアップしたな…


395:デフォルトの名無しさん
07/10/27 16:50:50
おk
読むの断念。
仕事に戻る。

396:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/27 19:19:45
俺もざっとしか読んでないけど画像122枚一気読みが原因では…


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

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


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

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


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

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


405:デフォルトの名無しさん
07/10/28 07:59:52
んぱか
をゲイツに聞いてみろ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


416:デフォルトの名無しさん
07/10/28 18:39:20
>>415
熱意に溢れてるなw

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

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

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

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


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

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

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

長文すみません。

422:デフォルトの名無しさん
07/10/28 20:52:55
>>421
ここら辺から適当にダウンロードしてみ。

URLリンク(java.sun.com)
URLリンク(java.sun.com)

423:デフォルトの名無しさん
07/10/28 21:05:10
>>421
505i以降
URLリンク(www.nttdocomo.co.jp)
900i以降
URLリンク(www.nttdocomo.co.jp)
903i以降
URLリンク(www.nttdocomo.co.jp)
一応自分の携帯電話にあわせたやつ使え、それが確実だ
70xiの場合は機種によるんで安全のために505i用を使えば確実だ

java2SDKは
URLリンク(java.sun.com)
これ(j2sdk-1_4_2_16-windows-i586-p.exe)使え一番確実だ


424:デフォルトの名無しさん
07/10/28 21:10:32
>>422>>423さん
うぉおありがとうございます。
とりあえず参考にしようと思ってるサイトさんのファイルに一番近そうな
>>java2SDKは
>>URLリンク(java.sun.com)
>>これ(j2sdk-1_4_2_16-windows-i586-p.exe)使え一番確実だ

をDLしてみます。!

回線遅いのでアレですが、、、

ありがとうございます。


425:デフォルトの名無しさん
07/10/29 02:09:28
みんなから3年くらい遅れてると思うけど
がんばれ


426:デフォルトの名無しさん
07/10/29 12:47:26
大丈夫。あと五年内のうちには携帯でWindowsプログラミングできるようになってるはず
HSPとか簡単なスクリプト言語でサクサクっと手軽に出来るようになるから今無駄に努力する必要はないよ

427:デフォルトの名無しさん
07/10/29 12:51:13
(;^ω^)

428:デフォルトの名無しさん
07/10/29 13:06:38
あと5年かどうかは別として
アセンブラはもう使わなくて良い時代になってきたな。

429:デフォルトの名無しさん
07/10/29 14:06:25
お前は改造マリオを馬鹿にしたっ(゜Д゜#)

430:デフォルトの名無しさん
07/10/29 16:11:28
改造マリオ?
何だそりゃ?
ちょっと任天堂にメールで聞いてみる。

431:デフォルトの名無しさん
07/10/29 16:34:33
本当に送るなら任天堂の反応晒して

432:デフォルトの名無しさん
07/10/29 16:59:44
改造マリオってデータだけ変更してプログラムは同じなんじゃないか

433:デフォルトの名無しさん
07/10/29 20:55:33
なんというニコ動ネタ

434:デフォルトの名無しさん
07/10/30 00:30:06
>>411
いや、普通にF505もF506も動いたよ
F900も問題無し
F系はそれ以前にくだらねえ問題がちらほらあるから好きじゃないな!w

435:282
07/10/30 10:30:29
いまさらながら、whileループで間違えた部分があるので修正。
startで無限ループじゃなくて、IApplicationを継承したクラスの
コンストラクタで無限ループしたらアウトだったわ。
startでは試したことなかった。ってか俺startの中身は空だわ^^

436:デフォルトの名無しさん
07/10/30 11:23:23
>>434
290にも同じ事書いたばかりだけど、
ウチでもstart無限ループで問題になってる機種は無い。
先ほど調べたらFOMA全機種対応の
MediaListener使ってるアプリも評価パスしてるわ。

思うに、保証されてはいないものの、どの機種も問題ないのではないかと。
だからと言って推奨はしないけど。


437:デフォルトの名無しさん
07/10/30 11:27:45
>>435
流石にそれは間違えすぎだろw
流石にコンストラクタで無限ループなんてするなよ!
コンストラクタで全て初期化してから、start()に処理が回ってくる仕様なんだからさ

438:デフォルトの名無しさん
07/10/30 11:42:16
>>435
君の指摘により何人が検査やり直したと思ってるんだ?w


はい俺も完璧に釣られますた(=´∇`=)


439:デフォルトの名無しさん
07/10/30 11:50:23
自作テンプレを絶対的に信じてるから
検査やり直しとかする気も無い(`・ω・´)

かれこれ4年間改良を続けて来たものだしな。

440:デフォルトの名無しさん
07/10/30 20:45:41
MIDPというかauとかに移植するときってどうしてる?プリプロセッサ使う?それとも互換クラス作ってる?

441:デフォルトの名無しさん
07/10/30 21:34:33
>>439
俺のN88BASICから始まる合計15年分の経験則は
その思い込みこそがプログラムにおけるもっとも危険な思考だと警告してる

442:デフォルトの名無しさん
07/10/30 21:56:30
まあ結局のところ、 >>439>>441 のどっちもが正しい、というのが現実だがな
一時の思い込みで過去完璧に動いてきたプログラムをいじるのは、予想してるよりはるかにリスクが高い。
といいつつ、絶対に間違いのないプログラムなど決してない。

443:デフォルトの名無しさん
07/10/30 22:07:02
>>442
リスクが高いと理解するのと自分が作ったものを盲信するのは次元が違うと思うがな


444:デフォルトの名無しさん
07/10/30 23:08:23
でも4年間問題なく動いてきたシステムに自信を持つのは悪いことじゃないと思うがね

445:デフォルトの名無しさん
07/10/30 23:47:55
>>444
自信を持つのは別に悪くは無いがそれを盲信するのは問題だろう
まず最初に疑うべきは自分自身とそのソースコードだ
それを理解した上で自分の知識と知恵と経験を総動員することこそがプログラムの醍醐味ではないのかね?

446:デフォルトの名無しさん
07/10/31 00:39:17
「盲信」っていうのは、過去と今の状況の違いを忘れて
コードの実績を信じる、という感じかな?

ぜーんっぜん関係なさそうな箇所の違いが、いままでの
実績の前提条件を崩してたのに気づく、とかいうことはあるな。

こういう熟成されたコードに修正を入れなきゃいけない問題が
出たら「あー、カビ生えちゃった」とか言わない? 言わないか・・・。




447:デフォルトの名無しさん
07/10/31 00:43:06
私的には、世界で最も信用ならないのは、自分が書いたコードだと思う。

448:デフォルトの名無しさん
07/10/31 01:56:19
至言だ。

449:デフォルトの名無しさん
07/10/31 03:28:51
N900iの端末で動くアプリを作るため、
最近環境整えた。

J2SE SDK 1.4.2
Eclipse 3.2.1
Doja 4.0

古い J2SE と古い Eclipse を探すのに苦労した。




どうせインストールするなら最新版をインストールしたかったな(´・ω・`)

450:デフォルトの名無しさん
07/10/31 04:08:28
全部最新版でも問題なく作れるはずだがなんか不具合あったっけ?

451:デフォルトの名無しさん
07/10/31 10:12:02
N900iはDoja3.5という突っ込みはあり?

452:デフォルトの名無しさん
07/10/31 13:12:40
え?最新版でも問題ないの?(´∀`)

(すいません、N900iは Doja 3.5 でしたorz)

改めて質問・・・

Doja 3.5 は、Java6、Eclipse Europa(3.3.3)に対応していますか?

以下のサイト
URLリンク(www.nttdocomo.co.jp)
を読むと、J2SE 1.3.1、Eclipse 2.1.1 にしか対応していないような書き方がされているのですが・・・
サイト側の情報が古いだけで、最新版でも問題ないのですか?


453:デフォルトの名無しさん
07/10/31 13:14:07
やってみないと分らない

454:デフォルトの名無しさん
07/10/31 13:21:59
やってみる価値があるということがわかっただけで大収穫です
どうせなら最新版インストールしたかったので・・・
とりあえずやってみます。結果報告は1週間後かもですがよろです。


455:デフォルトの名無しさん
07/10/31 13:42:46
100kアプリくらいまでならIDE無しの
テキストエディタだけで作っちゃうからなぁ(´・ω・`)

456:デフォルトの名無しさん
07/10/31 13:46:28
Doja5.0SDKでも問題ないって意味だと思った

457:デフォルトの名無しさん
07/10/31 14:19:35
>>452
DoJa3.5のiαppliToolだと環境変数弄らんとJava6使うの面倒だったと思う。
5.0なら6使っても自動でコンパイルオプション付けてくれるから平気。
ついでにEclipse3.3でも5.0のプラグイン使える。

コンパイルは5.0ので平気だけど、3.5以降の拡張API使うとアウト。
気になるなら3.5もインストールして、
Eclipse側のライブラリのパスを書き換えとけばおk。

ちなみにEclipseでコンパイルするとアプリサイズが大きくなるんで、
最終的にiαppliToolで吐き出す前提で書いる。
Eclipseのみでよければ上記の制約は幾つか無くなる。


458:デフォルトの名無しさん
07/10/31 14:54:35
>>457
DoJa5.0SDKのエミュレーター環境設定のビルドの設定でターゲットプロファイルをDoJa3.5にしておけば
4.0とかのAPIを使えばコンパイル時にエラー出してくれるよ

ただエミュレーターそのもので動かす際には5.0までのAPIが使えちゃうのと
微妙にだが5.0SDKでターゲットプロファイルを弄って吐かせたコードと
3.5SDKで吐かせたコードが異なる場合があるみたいなんで
完全に安全を期するなら3.5SDKも入れておいて普段は5.0SDKとそのプラグインで作って完成してから
3.5SDKでコンパイルして動作確認撮ればいいはず

459:デフォルトの名無しさん
07/10/31 18:58:20
240x240の画面を縦4横3の12個に分けて0~9、*、#に対応した箇所に画像を表示するアプリを作っています。
getKeypadState()メソッドを使って複数キーの同時押しにも対応させたつもりです。

エミュレーター上では、全ての同時押しを取得しそれぞれ表示できそうなのですが(ビープ音が鳴る個数以上は検証出来ない)
実機(N904i)では2個までしか取得できないでいます。(3個目は2個のうちどちらかが離されないと表示されない)

3個以上の同時押しキー取得はiアプリの仕様で無理なんでしょうか?

460:457
07/10/31 19:00:54
あー、ゴメン。1点勘違い。
Eclipse3.3でDoJaプラグイン試してないわ。
プラグインはEclipse3.0/3.1用とあるけど、3.2では動いた・・・の間違い。


461:デフォルトの名無しさん
07/10/31 19:02:00
>>459
iアプリというより端末の仕様だな。

462:デフォルトの名無しさん
07/10/31 19:17:21
2個まで同時押し保証、3個目以降機種依存じゃなかったっけ。
同時押し前提のアプリは作らん方が良いよ。


463:デフォルトの名無しさん
07/10/31 19:51:45
同時押しそのものが機種依存じゃなかったか?
でなけりゃD504i,D505i,D505iSとか仕様に則ってないことになるぞ

つーか同時押しそのものに関しての記述がdocomoの資料にはない

464:デフォルトの名無しさん
07/10/31 20:29:35
Dで同じ列2つはダメとかそんな感じのあったな。

465:デフォルトの名無しさん
07/11/01 04:47:58
QRcode:URLリンク(stat.ameba.jp)
ぶっちゃけ無限プチプチのiアプリ版を作ったのですよ。
無限プチプチで2個までしか押せないとかヒドスw

端末の仕様か…もうどうしようも無いから開発終了orz

466:デフォルトの名無しさん
07/11/02 06:08:47
>>402
 私もstartでループしまくってるよ。スレッドを使うのは通信処理だけ。
ゲーム作ってるんだけど、音も出してるしprocessEventも使ってるけど問題ないよ。
全機種チェックして問題でなかったしユーザからもクレームは来てない。

 ただ、これが正攻法ではないとは思うけどね。10Kアプリからの名残というか。
docomoもそこら辺わかってるから、このまま動かしてくれるんでないかな。
MIDPは2つスレッド作ってるけど。

 数週間分まとめて読んだけど、上の件、結論出てたのか・・

 しかしP900とN900の不具合はひどい。どれだけ悩んだか(1日だけど)・・対象外にしたいくらい。

 あと、MLD。さっさと統一してほしいもんだ。


467:デフォルトの名無しさん
07/11/02 16:09:52
MLDは、905からNがヒュートレックになって、Yamaha ADPCMはさようなららしいよ。

468:デフォルトの名無しさん
07/11/02 16:19:34
携帯のチープなスプーカーには
YAMAHA音源のほうが合ってるのにね


469:デフォルトの名無しさん
07/11/02 16:59:02
>>467
マジですか。
ちょっと悲しいけど、しょうがないな。

470:452
07/11/02 23:08:37
勉強になります。

だいぶ勘違いしていました。

DoJa 3.5 のアプリを作るには、DoJa 3.5をインストールしておいて、
開発環境は Java6 + Eclipse 3.3.3 + DoJa 5.0 で
拡張APIに注意しながらコードを書いて
(Eclipse側でライブラリのパスをDoJa 3.5のものに書き換えればOK?)、
その後、DoJa 3.5 SDKでコンパイルして動作確認する、と・・・

ところで、以前、DoJa 3.5のアプリを作ろうと思って J2SE 1.4.2 をインストールしたのですが、
Java 6 をインストールしたら、この J2SE 1.4.2 は削除してしまっても問題ないのでしょうか?


471:デフォルトの名無しさん
07/11/03 01:05:01
ADF ProfileVar -> DoJa3.5

472:デフォルトの名無しさん
07/11/03 19:42:35
正直、一つのファイルで全端末鳴らせるようになればどれでもいい

473:デフォルトの名無しさん
07/11/03 20:00:16
悲しいこと言うなぁ

474:デフォルトの名無しさん
07/11/03 20:13:45
端末間での違いって、機械的にデータ修正できるようなものなの?
MLDファイルをアプリ上で動的に再生成して、上手いことやれないのかな。

475:デフォルトの名無しさん
07/11/03 20:19:59
>>474
音付きのエミュレータアプリがあるくらいだから出来ると思うけど激しく重そう

476:デフォルトの名無しさん
07/11/03 20:21:46
ところで音声のMLDが一つに統一できなかった理由ってNがヤマハのチップにこだわってたからって解釈でいいの?

477:デフォルトの名無しさん
07/11/03 20:38:46
むしろ他メーカーがヤマハを採用するのをしぶったともいえる
国内他キャリア考えると、これはこれでめんどい話だ

478:デフォルトの名無しさん
07/11/04 00:18:13
Eclipseで開発していて、Doja5.0でデバッグする際に端末を設定する方法はありますか?

ADFのDrawAreaが240x320のアプリをデバックする際にDoja5.0の端末のデフォルトが240x240らしく、
「DrawArea の値が不正です」というエラーが返ってきます。

479:478
07/11/04 00:20:33
すみません、解決しました。
見当違いなところをずっと探してました・・・

480:デフォルトの名無しさん
07/11/04 01:58:45
自機(携帯)のメアドはどうすれば取得できますか

481:デフォルトの名無しさん
07/11/04 02:04:20
ここを見るとN905iもYAMAHAっぽいんだが。
URLリンク(www.n-keitai.com)

FUETRECは、あまり情報を公開してくれないから嫌い

482:デフォルトの名無しさん
07/11/04 23:23:02
N905iもYAMAHAのサウンドチップ搭載だが。
ADPCMは再生可能。

483:デフォルトの名無しさん
07/11/05 00:32:27
ROHMは駆逐されたの?

484:デフォルトの名無しさん
07/11/05 15:32:33
MLDはやっと統一されるかと思ったけど、LとNMが・・。
MLDが統一されていないのはdocomoが主導してハードの上に1枚被せるようにしなかったのが悪い。
foma切り替え時にでもやれただろに。

485:デフォルトの名無しさん
07/11/05 15:45:45
でもそれをすると被せなくても済むメーカーとそうでないメーカーとで
価格差や設計の難易度に響くからできないんでしょ。
mdlの差分がどーのこーので困るって一部の開発者の都合だし。
その視点でものを言えば
そもそもDoJaとMIDPとBREWが存在すること自体ウザイ訳でw


486:デフォルトの名無しさん
07/11/05 17:06:27
結局 Java の Write Once, Run Anywhere なんて幻想さ。

487:デフォルトの名無しさん
07/11/05 17:47:45
幻想なのはJ2MEが出てくる以前からすでに知られていて信じていたのは一部のJava狂信者だけ

488:デフォルトの名無しさん
07/11/05 17:49:19
>>485
DojaとMIDPはなんとかなってもBREWはどうしようもないもんなぁ・・・

489:デフォルトの名無しさん
07/11/05 17:55:14
iアプリの作成で行き詰っています。

Canvas1(タイトル画面)→Panel(入力画面)→Canvas2(メイン画面)という構成のiアプリを作成しています。

PanelとCanvas2をsetCurrent()メソッドを使用して、相互に画面を切り替えられるようにしたのですが、
Canvas2でキー操作を行ったあとで、Panelに画面を切り替えると、
Canvas2で行ったキー操作が、なぜかPanelでも反映されてしまいます。

どなたかこの問題を解決する方法を教えていただけないでしょうか。
よろしくお願いします。

490:デフォルトの名無しさん
07/11/05 18:00:31
release yo?

491:デフォルトの名無しさん
07/11/05 18:15:36
>>489
キーイベント受けてから少し待ってsetCurrent


492:デフォルトの名無しさん
07/11/05 18:59:36
>>491

見当違いなことを聞いていたらすみません。
少し待つというのは、たとえば、Thlead.sleep(1000)
とすればいいのでしょうか?

待ってみてもやはりキー操作が反映されてしまいます。

493:デフォルトの名無しさん
07/11/05 19:17:45
>>492
おしい

494:デフォルトの名無しさん
07/11/05 21:09:38
みんなDojaかMIDPにして、アプリ用のメモリサイズや画面サイズタイマー精度などを全て統一すれば良いのに。

495:デフォルトの名無しさん
07/11/05 22:25:59
そういうことするとたいてい進化が止まるね


496:デフォルトの名無しさん
07/11/06 00:04:02
>>493
すみません!
Thread.sleep()ですね。

でもできませんでしたorz

497:デフォルトの名無しさん
07/11/06 01:11:37
canvas1で押した瞬間に処理するんじゃなく放した瞬間に処理するようにすればいい

498:デフォルトの名無しさん
07/11/06 02:28:44
そういえば数年前スタープロジェクトとかいうDocomoとsunで
組んで新しい携帯用のプロファイル作るって話はどうなった?

499:デフォルトの名無しさん
07/11/06 02:43:26
スタープロジェクトwあったなぁ
つーかそんな内容だったっけ、もう忘れちゃったよ

500:デフォルトの名無しさん
07/11/06 05:00:08
全く話題にもならんし立ち消えじゃないの?
というかsun側が正式にDoJaをプロファイルの一つに入れるとかじゃない限り
今更DoJaの既存クラス大幅変更なんてできないだろ
旧メソッドを残して上位互換としてクラスを変更してくってのもまたデバグとかの面でかなり面倒だし

501:デフォルトの名無しさん
07/11/06 10:19:12
>>496
processEvent内でThread.sleepは無効と思っとけ。
前スレの後の方にprocessEvent使わないサンプルあるから使ってみれ。

>>497
キーアップでもパネルにキーイベントが残る端末があったような。


502:デフォルトの名無しさん
07/11/06 14:33:13
Doja 3.5 のアプリ開発の開発環境に悪戦苦闘している俺です。

Java EE 6 (java_ee_sdk-5_03-preview2-windows.exe)でも Doja 3.5 アプリの開発できますか?

Windows XP sp2 です。
ここさえ乗り越えれば、アプリ作り放題の日々が待っているんです。

503:デフォルトの名無しさん
07/11/06 14:43:36
って、>>457 の方がまさに俺宛に回答してくれてたorz

前回、457を読んだ時はレベルが高すぎて・・・もう少し環境整えたら
もう一度再読しようと思ってたんだっけ・・・。

Java 6 で i アプリを開発する場合は、DoJa 5.0 を入れて DoJa 5.0 のコンパイルオプションを利用する、
でしたね。


Java EE は、 Java SE も含んでいるから・・・問題ない、と。

すみません、解決しましたm(._.)m

端からみると、同じような質問を繰り返してるようにしか見えませんねorz


504:デフォルトの名無しさん
07/11/06 18:35:28
改行がうっとうしい

505:デフォルトの名無しさん
07/11/06 18:58:57
つくるのめんどくさい

506:デフォルトの名無しさん
07/11/06 23:06:43
テクスチャのUV指定について質問があります。
現在Doja5.0でマスコットカプセルを使って
COMMAND_RENDER_QUADS(四角形ポリゴン)をコマンドリストで描画させているのですが、

テクスチャBMPの(0.0)の座標に置いてある「16ドット四方のグラフィック」を単純に画面左上に等倍の大きさで貼り付けたい場合、

4つの頂点座標は平行投影で
( 0, 0) (16, 0) (16,16) ( 0,16)で、

その場合UVをおなじく
(0,0) (16,0) (16,16) ( 0,16)
にすると、右側1ラインと下側1ラインが1ドットずれてテクスチャマッピングされてしまいます。

この場合UV指定は16ではなく15にしないといけなかったりしますか?

507:506
07/11/06 23:15:39
(続き)
テクスチャ座標 ( 0, 0) (16, 0) (16,16) ( 0,16)
UV座標     ( 0, 0) (16, 0) (16,16) ( 0,16)
だと、 スクリーン上の16ドット四方の領域に 15ドット四方のテクスチャがマッピングされている、といった感じになってしまいます。

とすると
テクスチャ座標 ( 0, 0) (16, 0) (16,16) ( 0,16)
UV座標     ( 0, 0) (17, 0) (17,17) ( 0,17)
にすればいいのでしょうか・・う~ん

508:デフォルトの名無しさん
07/11/07 00:13:44
porigon sure iki nasai

509:デフォルトの名無しさん
07/11/07 06:20:00
>506
>361と同じ話か?

510:デフォルトの名無しさん
07/11/07 11:47:11
ポル友になってくらさい。
URLリンク(www.polpe.com)


511:デフォルトの名無しさん
07/11/07 14:17:53
905とか705のDojaのバージョンって、
いくつなんですかね?

もう公式発表されてましたっけ?

512:デフォルトの名無しさん
07/11/07 15:10:29
まだドコモ公式には置いてないね。
705iは知らんが、905iは5.1かね。
5.1の開発ガイドとエミュはすでに一般公開されてる。

513:デフォルトの名無しさん
07/11/07 17:38:58
通信にプログレスバーを付けたいのですが、現在「どれくらい通信が済んでいるか」を取得することってできますかね?

514:デフォルトの名無しさん
07/11/07 17:42:28
>>513
え・・・ストリームからデータを読み込むときに戻り値で把握できるはずなんだが
なんで「どれくらい通信が済んでいるか」を取得したいと考えたのかそれが不思議

515:デフォルトの名無しさん
07/11/07 17:50:12
え?
ストリームから読み始められる時。つまり
HttpConnectionのconnect()が制御を返した時って、既に通信は全て終わっていませんか?
ストリームからどれくらい読み出せているかを表示したいのではなく(それは一瞬だと思いますので)、通信があとどの程度で終了するのかを表示したいのです

516:デフォルトの名無しさん
07/11/07 17:56:44
>>515
一瞬で終わるのなら終わりでいいだろうに・・・
というかそもそも1回の通信で150kbしか受信できないのは知ってる?

517:デフォルトの名無しさん
07/11/07 17:59:05
今まさにデータを受信してる最中ですって時に
何バイト受信したかをリアルタイムで知りたいってんだろ?
答え:不可能。
以上。

518:デフォルトの名無しさん
07/11/07 18:05:08
>>516
いくらなんでも読解力無さ過ぎ

519:デフォルトの名無しさん
07/11/07 18:05:15
>517補足。
受信バッファを仮に1024byte分用意して、byte[] buf = new byte[1024];
それで細切れに読み込んで、今何回目の読み込みかで計測するくらいはできる。

でもそれで描画処理まで挟むのは面倒臭いと思う。
1ファイル完了ごとに(=1回の通信をクローズするごとに)バーを進めるくらいならまぁ。

520:デフォルトの名無しさん
07/11/07 18:07:47
どうせ一回に150kbしか受信できないんだから素直に受信が終わるごとにバーを進めたらいいのに

521:デフォルトの名無しさん
07/11/07 18:09:15
>>517
不可能ですか。ありがとうございました

>>519
ストリームからの読み込みは超速いので描画処理挟むのは微妙ですよね。

1ファイルを小さくすれば細かくバーを進められますね。
接続準備時間がもったいないから絶対やりませんけどw
150KBをDLしきるのはそこそこ時間かかるので、その間バーを(正しく)進めたかったんですけどね…

勝手にちょっとずつ伸びてく偽バーで「進んでるように見せる」のはアホらしいですよね…

522:デフォルトの名無しさん
07/11/07 18:35:37
>>521
いや、アホらしいんじゃなくてそれが普通。
ダウンロード中のバイトサイズまできっちり制御できんのはBREWくらい。


523:デフォルトの名無しさん
07/11/07 19:33:04
BREWごときができんのにさ・・・

524:デフォルトの名無しさん
07/11/07 19:37:37
ファイルが複数あるなら、ダウンロードするデータ量と、ダウンロードが完了したデータ量で割り算すれば
計算できないこともないけど、よくある例としては
・進んでるように見せるバー(IEとか某フルブラウザとか)
・アニメーションするバー(Windows起動時とかiTunesとか)
・アニメーションする画像(古いIEの地球儀アイコンとか)

525:デフォルトの名無しさん
07/11/07 19:41:35
BREWが出来るのかどうか調べないとわからないけど
UNIXとかWindowsとかでも>>519見たいに細切れに読みながらバーを進めるのが普通のやり方のはずだが・・・

526:デフォルトの名無しさん
07/11/07 20:03:23
通信を別スレッドでまわして、描画処理してるスレッドで
[受信サイズ/contentlength]を表示すればよいだけじゃないの?
ファイルが複数ならそれも考慮すればいいだけだし。
おれはそうやってるが。


527:デフォルトの名無しさん
07/11/07 21:51:21
read()に入る前に、ダウンロードは終了していまっているとかいう話
526は、Java側で処理した量の話

528:デフォルトの名無しさん
07/11/07 21:52:10
>>521
10Kくらいずつならファイル分割してもいいんじゃないか

529:デフォルトの名無しさん
07/11/07 22:00:41
readから戻ってきた時点で通信が終わっているとは限らない
仮に終わってるような短時間の通信であればそんなのを考慮する意味がない


530:デフォルトの名無しさん
07/11/07 22:00:51
>>511
最低でも5.0LEかな
L705i,L705iXが500Kアプリ
NM705iが30+200Kアプリであることと
それ以外がメガアプリ対応であることが判明してる

531:デフォルトの名無しさん
07/11/07 22:04:45
上補足
L705i,L705iX,NM705i以外は最低でも5.0LE

532:デフォルトの名無しさん
07/11/07 22:11:21
その情報ってプレスリリースとかどっかニュースサイトで出てる?

ソース出せよって煽りじゃなくて
関係者情報リークだったら無茶すんなって意味でw

533:デフォルトの名無しさん
07/11/07 22:19:43
docomoのオフィシャルサイトからの情報だけど?

URLリンク(www.nttdocomo.co.jp)
URLリンク(www.nttdocomo.co.jp)
URLリンク(www.nttdocomo.co.jp)
上記以外は自分でurl調べてサイトの方みてくれ
全部メガiアプリになってるから

534:デフォルトの名無しさん
07/11/07 22:24:31
ちなみにL704iはDoJa-3.5LEだが500Kアプリと記載されてるので
実際の500K(500K以内であればJARとスクラッチパッドのサイズ比は自由)アプリか100+400Kアプリかどうかは判別できない

535:デフォルトの名無しさん
07/11/07 23:38:16
ちょっと前に、start()での無限ループ+processEvent()は実装依存と言
う話がありましたが、仕様を満たすには、start()のメインループ部分を
別スレッドにしちゃうとかで解決できるんでしょうか?

この場合、IApplicationにRunnableを実装して、run()にメインループを押
し込んじゃえばいいんでしょうか?

Canvasを使うの初めてなんで、どうせ創るなら仕様を満足した方がいい
かと思って。


536:デフォルトの名無しさん
07/11/08 00:29:14
>>498
個人的考えだけど、携帯Javaは今後携帯電話向けFLASH+AS3かFLASH+AIRの
つなぎとして生きて消えていくしかないよ

ドコモも「共通仕様? 利益にならんでしょ」と言っちゃう会社だしな
サンは知らんが、当のドコモはもうやる気ないだろうし、アプリ関係はアドビに任せたいだろ
BREWの進化の早さっぷり見てれば、数社で独自仕様をさっさと進化させて
金に換えれる方がいいじゃないか。MIDPの停滞ぷりをみよ

537:デフォルトの名無しさん
07/11/08 01:02:56
doja5.0で一部のアプリ実行時にwindowsがエラーを吐いて実行できないようになった

resフォルダにでかい画像ファイルなんかを入れて再コンパイル
ソースを適当に組み替えて再コンパイル
のどちらかの方法で一応実行できる様にはなる

どうやら最近あったwindowsアップデートの影響らしいんだけど
皆はどうですか?

538:デフォルトの名無しさん
07/11/08 03:04:42
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ     >>536
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

539:デフォルトの名無しさん
07/11/08 03:07:18
どう見ても釣りだな
でなければかなり偏ってる
いずれにしろ参考にならない

540:デフォルトの名無しさん
07/11/08 10:05:09
なあ、ゲームとかの画像とか音楽データとか挿入動画みたいのをSDに入れてそれを再生するってできんの?
Bindingにしかアクセスできないんだけど調査不足?それとも気のせい?
全部をダウンロードさせるのって結構面倒なんだけど

541:デフォルトの名無しさん
07/11/08 12:47:19
エスパーきぼんぬっすか

542:デフォルトの名無しさん
07/11/08 13:25:42
>>501
前スレをみて少しやり方を変えたら問題が解決しました。
ありがとうございました。

543:デフォルトの名無しさん
07/11/08 14:08:53
DoCoMoから落とせる5.Xコンテンツ開発ガイドに、
905はdoja5.1って書いてあるな。

これが公式発表みたいなもんかね。

544:デフォルトの名無しさん
07/11/08 19:19:00
N904i について聞きたいのですが、この機種、私が試した範囲ではSystem.gc()してもメモリーを一切解放してくれません
しかもそのまま使いつづけていくと劇的に処理速度が低下していき、FPS60なんて保ってられず・・・
みなさんどのように対策してますか?

同じアプリでもN903iやF903iは問題なく開放されました

・開放されてない
System.getRuntime().getFreeMemory() で空きを調査して、空きが増えることは一切なく減る一方
String str = "ほげ";
str = null;
System.gc();
をループさせるだけでも、どんどん"ほげ"がメモリーリーク(と呼んでもいいかも)していきメモリーがガンガン減っていく

・ループ
IApplicationのstart()内で無限ループしている状態


545:fr
07/11/08 19:20:26
携帯裏アプリ
ポケモンが熱い
URLリンク(62.xmbs.jp)

546:デフォルトの名無しさん
07/11/08 19:59:15
>>544
そもそも、文字列リテラルの代入だけではピープは消費しない
携帯でなくても、Java SEで試せばわかる
それなのにピープの空き容量が変わるということは、どこか別のところに問題がある

やるならこう
String str = new String("ほげ");

547:デフォルトの名無しさん
07/11/08 20:29:06
>>546
ごめん、思い出しながらコード書いたもので間違えた
とりあえず、newしたものをnullいれて、System.gc()しても空きメモリーが回復しないのは確かでした

他携帯なら問題なかった(903だけではなく、いろんな901や902でも試した)ので、コードに問題があるとはあまり思えないところです

548:デフォルトの名無しさん
07/11/08 21:23:24
すまんがピープワロタ

549:デフォルトの名無しさん
07/11/08 21:24:52
>>546
何を覗くんだ?

550:デフォルトの名無しさん
07/11/08 21:30:15
>544
System.gc()のあとにThread.sleep()入れても意味ないかな。わからんが。

どうにもならなかったら
高速性を要求されるところでは、なるべくメモリを動的に確保しないようにする
で対策なのかな。(対策って言うんかこれ)

551:デフォルトの名無しさん
07/11/08 22:25:11
>>550
問題は、高速性を要求されなくなったから「さあ溜まってたゴミを捨てようか」と思っても捨てられないこと
N904に正式に対応する場合、起動時に全て静的にとるなんていう馬鹿コードになる可能性が・・・

552:デフォルトの名無しさん
07/11/08 22:34:21
>>551
FPS60がどのくらいまで落ち込むの?止まるの?

553:デフォルトの名無しさん
07/11/08 22:53:55
数分で、FPS20くらいまではとりあえず落ちましたね
はっきりいってボロボロです

耐久テストしてるので明日また報告します

554:デフォルトの名無しさん
07/11/08 22:56:07
スタックが一つポップされるまで回収対象にならないとか

555:デフォルトの名無しさん
07/11/08 23:40:24
fpsを数字の前に持ってくるな。気持ち悪い。

556:デフォルトの名無しさん
07/11/08 23:48:06
>>544
その機種が壊れてるんだよ
初期出荷の携帯はシステムにバグが多い
アップデートする必要があるかもしれないからDSに聞いてみるといい

557:デフォルトの名無しさん
07/11/09 00:19:10
>>556
その可能性もありますね
OSアップデートで修正される(初期出荷時には間に合わなかった?)かもと
正直こんな仕様じゃ、既存リリースのアプリが何一つまともに動きませんからね

・Thread.sleepを入れてみる
・IApplication#start()の中で無限ループするのをやめてみる
・OSをアップデートしてみる

明日これらを試してみますが、他にもアイデアがあればよろしくお願いします

558:デフォルトの名無しさん
07/11/09 01:35:08
>>554に1票

559:デフォルトの名無しさん
07/11/09 09:19:34
原因わかりました
メモリー量を画面に表示していたのですが、その際
g = img.getGraphics();
g.drawString(略);
g.dispose();

を行なっており、原因はこれです
N904iはgetGraphicsしたGraphicsを、きちんとdisposeしてもリークさせるようです
解決策としては一度作ったGraphicsは生成しなおさないということになりますが、複数持ちたい場合困りますね・・・

560:デフォルトの名無しさん
07/11/10 12:10:00
N904i使いだけどこの機種フリーズ、再起動、電源落ちは当たり前
絶対バグありまくりだよ


561:デフォルトの名無しさん
07/11/10 13:37:10
交換しろよ
そんな症状は出ない

562:デフォルトの名無しさん
07/11/10 14:39:00
>>559
imgも一緒に開放(dispose)してもリークする?

563:デフォルトの名無しさん
07/11/10 20:15:58
iチャネルに関すると思われるエラーが最近多い
長く使うと携帯は壊れるものなのかもしれない


564:デフォルトの名無しさん
07/11/10 23:31:42
bitrotかも。

565:クリフト
07/11/12 14:08:21
Doja4.1でD800iDS用のタッチパネル式アプリを作成しています。
タッチアクションの処理をボタンの長押しにするには下のソースコードをどう変形すればよいでしょうか?

// タッチアクションの処理
public final void touchControlAction (TouchControl source, int type, int x, int y) {
// Rightボタンの押下
if (source == rightButton && type == TouchControlListener.CLICKED) {
i++;


566:デフォルトの名無しさん
07/11/12 14:14:55
>>565
使ったこと無いけどメインループ作れって事で。

if( source == rightButton ) {
bRight = type == TouchControlListener.CLICKED;
}

メインループ
if( bRight ) {
i++;
}


567:クリフト
07/11/12 18:42:51
>>566
ありがとうございます。
うまくいきませんね。もうチョイがんばってみます。

568:デフォルトの名無しさん
07/11/12 19:40:41
>>567
うまくいかないって touchControlAction の中に
ループ作ってるってオチじゃないよな?


569:デフォルトの名無しさん
07/11/12 19:57:52
(PC不可)
URLリンク(polpe.com?g=12jfasd345sdf)<)
URLリンク(polpe.com?g=4h6d54h64h6sr)<)

570:デフォルトの名無しさん
07/11/13 01:22:29
携帯Javaアプリやってるわけではないのですが、皆さんに質問。

携帯Javaの利点ってなんでしょう?私も組み込みプログラマ
の端くれでCでitronやLinuxで開発しています。で、結構
速度の要求だけは顧客から来るので、省メモリコピーなどに
腐心していて、C++ですら使いたくても使えないような状況なんです。

組み込みJavaの利点って、汎用のフレームワークがあるから
という、単なるプラットフォームの問題だけなのかな?
だとしたら、ソフトバンクやGoogleなんかが提唱しようとしている、
OpenKODE(OpenGL/ES)ベースのプラットフォームが、無償で提供されて、
高速だったりすると、そっちのほうがよかったりするのかな。

素朴な疑問です。

571:デフォルトの名無しさん
07/11/13 01:32:58
誤爆ですよね
スレ一覧よく見てください

572:デフォルトの名無しさん
07/11/13 02:01:40
>>570
int foo[5]; みたいな配列で foo[10]=8; とかやったらどうなるかって事

573:デフォルトの名無しさん
07/11/13 03:11:04
>>571
そんなにスレ違いとも、おもわないんだが。

574:デフォルトの名無しさん
07/11/13 04:30:34
Javaをよく知らなくて>1が分からなかったのなら仕方がない

575:デフォルトの名無しさん
07/11/13 07:58:14
>>570
Javaにどんだけ利点があろうがなかろうがウンコだろうがiMODEで商売しようと思ったら
Java使うしかないんです><
汎用フレームワークがあるっていうかそれしかないっていうか

576:デフォルトの名無しさん
07/11/13 09:20:44
本物の技術者なら、目の前のオモチャで遊ばないなんて。
面白いぞ、たとえ実用性は二の次でも。

577:デフォルトの名無しさん
07/11/13 09:42:22
>>570
そんな現状動かないものを考慮してもしょうがない
携帯アプリを作る選択肢が携帯JavaかFlashかJSしかない
ただそれだけ

578:デフォルトの名無しさん
07/11/13 11:15:11
速度か速かろうと遅かろうと、ユーザーにとっては面白ければなんでもいいわけで。

579:デフォルトの名無しさん
07/11/13 13:00:03
よくマジレスするなと感心させられますw

580:デフォルトの名無しさん
07/11/13 15:29:39
>>570
セキュリティを管理するOS が無かった昔の携帯電話で、
セキュリティの問題なくアプリを動かすには
 (a) Java 等のサンドボックスで守る方式
 (b) BREW等の検証済みの公式アプリしか使わせない方式
のどっちかが必要だったわけです。
いまでも実際には似たようなもんで、ネイティブコードのアプリを実行
できる式の携帯電話は大抵ハックされてるよね。

581:デフォルトの名無しさん
07/11/13 20:13:46
>>577
GoogleのアンドロイドSDKが公開されましたね。
URLリンク(code.google.com)

予想通りOpenGL/ES採用しているっぽい。JavaのVM(Dalvik)が、
OpenGL/ESと並列で並べられているということは、携帯Java
を追い落とそうという意志が感じられないでもない。

582:デフォルトの名無しさん
07/11/13 20:23:33
移植メンドクセーんだから余計なもん増やすなよ検閲エンジン

583:デフォルトの名無しさん
07/11/13 20:33:36
スレ違いはそろそろしんでください^^;

584:デフォルトの名無しさん
07/11/13 21:29:26
>>570
適当に作っても平気なのはかなりのメリットだな。
javaもC/C++に比べれば全然簡単だし、
学生が遊び感覚で作れるのはいいとおもう。

585:デフォルトの名無しさん
07/11/13 21:39:53
>>581
OpenGL/ESはドコモもすでに採用してるわけだが
JavaとOpenGL/ESを無料に関連付けて何がしたいんだろう?

586:デフォルトの名無しさん
07/11/13 21:45:11
アプリエミュでスリープ時間測定したらかなりずれたんだけど
エミュのバグでしょうか。
sleep(10)=16
sleep(20)=31
sleep(30)=31
sleep(40)=47
sleep(50)=63
sleep(60)=62
sleep(70)=78
sleep(80)=94
sleep(90)=94
sleep(100)=109
ちなみに実機だと正しくスリープしてました。

587:デフォルトの名無しさん
07/11/13 22:00:56
そーゆーもんだとおもう。
制度そんなに高く無いお

588:デフォルトの名無しさん
07/11/13 22:09:22
>>585
げっ、アンドロイドのアプリケーションフレームワーク部って
結局、全部Javaなんか・・・。

589:デフォルトの名無しさん
07/11/13 22:21:09
>>587
そーゆーもんなのか
ここまで違うとゲームの難易度に差が出て調整がしずらいな
自分の携帯はソフトバンクだから実機動作は友達に頼むしかないorz
一応実機
sleep(10)=10
sleep(20)=22
sleep(30)=31
sleep(40)=42
sleep(50)=52
sleep(60)=61
sleep(70)=71
sleep(80)=82
sleep(90)=92
sleep(100)=102

590:デフォルトの名無しさん
07/11/13 22:35:32
ドコモの携帯買おうぜ。キャリアとしてのソフトバンクって利点が少ない。
実機テストを一機種でしかしてないのにリリースするのはあんまり良くないし。

正直、ソフトバンクが人気でMNPで人が流れて行ってるのが不思議なくらい
あそこはまともじゃない企業なんだが・・・

591:デフォルトの名無しさん
07/11/14 07:44:11
>>586
Windowsのタイマーの精度が15.525msだから

592:デフォルトの名無しさん
07/11/14 10:25:28
>>589
sleepの精度は端末に依存だからちゃんと経過時間を計ってやらないとだめだよ

593:デフォルトの名無しさん
07/11/14 10:57:18
>>589
ちなみに、30kダウンロードすると約50円だから
友達無くさんようにな。

594:デフォルトの名無しさん
07/11/14 11:49:43
パケホーダイを勧めておけば

595:デフォルトの名無しさん
07/11/14 11:57:45
>>589
sleep時間が難易度に影響するような構造がそもそもおかしいんじゃ

596:デフォルトの名無しさん
07/11/14 12:44:43
キャラの移動速度を決める時や、格ゲーのコマンド入力監視みたいなのは
sleep()じゃなくてSystem.currentTimeMillis()使った方がいいってのが
以前にスレで出た気がする。

597:デフォルトの名無しさん
07/11/14 14:31:41
すいません。質問です。
byte配列に置いた文字列を随時読み込んで画面表示したいです。
Stringのコンストラクタなら文字コードも指定できて良い塩梅と思っていたら
作っているうち、newを連発しているのが気持ち悪くなってきてしまいました。

最終的にStringBufferにappendできれば良いかと考えて、byte[]をchar[]に
変換しようとしたところで詰まってまs。
byte[]に文字列を置いた場合は、どういう方法で変換・表示するのが格好良い?


598:デフォルトの名無しさん
07/11/14 15:26:34
>597
newを連発する意味がわからないな。
Stringのコンストラクタで文字列にしたら後はそれを保持してればいいのでは。

byte[]の中身が変化するというなら、その都度newするのは当然。
「new連発が気持ち悪い」と気にする必要はないよ。

それでも何かこだわりがあるならJava一般スレ行って聞いてみて。

599:デフォルトの名無しさん
07/11/14 16:19:38
>>598
スクラッチパッドに有る圧縮した文章を、こまめに伸張しつつ
ブックリーダ的に表示できないかな、と思っていたので、数秒
に一度は新しくStringを読んでくることになりそうです。

スレのちょっと前を読んでいたら、503iを試した時にSystem.gc()
がうまく動かないのと四月問題が嫌になってiアプリから離れた
記憶が蘇ってしまい、ちょっと疑心暗鬼気味になってしまった
ようです。
今のDoJaは大丈夫だから、どんどんnewすりゃいいじゃん、と
言われれば、本当にその通りだと思います。質問しておいて
なんですが。


600:デフォルトの名無しさん
07/11/14 16:34:24
「byteをStringに変換」って言い回ししてるけど、もしかしてStringをオブジェクトだと思ってないとか?
newがオブジェクトを確保することだと思ってないとか?

601:デフォルトの名無しさん
07/11/14 16:35:52
InputStreamReader を使うといいんじゃない?たぶん。

602:デフォルトの名無しさん
07/11/14 16:52:26
>Stringのコンストラクタなら文字コードも指定できて
DoJaがサポートするのはSJISのみ

603:589
07/11/14 17:09:35
>>592
こんな感じでいいのかな?
long sleep1=0,sleep2=0;
int hosei=0;
wihle(true)
{
処理
int myTime=50; //50msスリープする
str.Millis=System.currentTimeMillis();
sleep1+=myTime-str.Millis+hosei;
if(sleep1>0)Thread.sleep(sleep1);
if(str.Millis-sleep2>myTime)hosei--;
if(str.Millis-sleep2<myTime)hosei++;
sleep1=sleep2=str.Millis; //現在の時間を記録
}

604:デフォルトの名無しさん
07/11/14 17:25:14
597です
InputStreamReaderとByteArrayInputStreamの組み合わせで解決したようです。
ありがとうございました。

配列をストリームとして読む発想が無かったようです。

605:デフォルトの名無しさん
07/11/14 17:27:14
>>589
いやsleep()に指定した時間分きちんとsleepすることが保障されてないわけだから
sleepがどうこうは関係なくて経過時間分の処理をする
time = 0
white(true) {
 start = System.currentTimeMillis();
 処理(移動などの処理はtime時間分の計算をする)
 time = System.currentTimeMillis() - time;
}
こんな感じ

606:デフォルトの名無しさん
07/11/14 17:28:58
>>603
アニメ処理等でなるべくきっちり合わせたいときは、ちょっと少なめにSleepしてから
ビジーループで目的時刻を待つと良いよ。

607:605
07/11/14 17:29:04
すまん…間違ったorz

time = 0
white(true) {
 start = System.currentTimeMillis();
 処理(移動などの処理はtime時間分の計算をする)
 time = System.currentTimeMillis() - start;
}

608:デフォルトの名無しさん
07/11/14 17:35:36
メインループの回転数を固定にしする方が賢いような気がするけど。
全部にtimeを掛けてたら大変だし。


609:589
07/11/14 17:39:03
>>606
ビジーループって電池食いそうで嫌だったけど
その手があったか
それで行ってみます

610:デフォルトの名無しさん
07/11/14 17:42:13
>>608
どうやって固定にするん?

611:デフォルトの名無しさん
07/11/14 17:50:11
>>610
前スレのFPS固定ロジックでいいんでないの?
sleepが嫌なら while(time > System.currentTimeMillis() ); みたいな感じで済む話だし。

座標計算だけならいいけど、sprite使ったアニメーションにまでtime掛けて管理とか、
どうしてもメインスレッドをsleepしたい場合やサスペンド対応考えると
time一個でどうにかすんのはムズいんじゃないかな。

まぁ時間で管理したほうが確実なんだけどさ。


612:デフォルトの名無しさん
07/11/14 19:35:15
>>591
げ、エミュって内部でタイマーなんて使ってんのか
System.currentTimeMillisですら16ms単位くらいで値よこすから、エミュだとデバッグしづらくなってきたんだよなぁ

ちなみに仕事では当然のようにビジーループ
「sleepにすると電池の消費が少なくなる」なんてのはP504iだけだったと記憶してる

613:589
07/11/14 20:07:29
>>612
ビジーループで時間計ったけどsleepの時と変わらなかったのは
System.currentTimeMillisでも16msだったからか

614:デフォルトの名無しさん
07/11/14 20:09:55
んなーこたーない

615:デフォルトの名無しさん
07/11/14 20:10:45
614は612のレスね

616:デフォルトの名無しさん
07/11/14 20:12:59
Vistaは1ms単位で測れるよ

617:デフォルトの名無しさん
07/11/14 20:16:10
>>613
実機でログ取るべき。
大抵は10msec単位またはもっと正確な値が取れる。

618:デフォルトの名無しさん
07/11/14 21:57:30
質問です
いままでiアプリではGIFとJPEGしか扱えないと思っていたのですが、PNGもいけるのでしょうか?
(これは実機で確かめればいいとしても)
対応画像形式一覧みたいなものをMediaImageの項などで探してみたのですが、見当たりません
どの資料かにまとまってますでしょうか?

619:デフォルトの名無しさん
07/11/14 22:33:28
Windows上でのエミュだけの問題ならtimeBeginPeriod(1)を呼ぶような
別のプロセスを立ち上げておけばいいんでない?
自分で作るのが面倒ならメディアプレイヤーで何か再生してやるとか
sleepの実装がWin32APIのSleepを呼んでるなら1ms単位になるはず

620:デフォルトの名無しさん
07/11/14 22:44:20
>618
iアプリ開発ガイド詳細編を読もう

621:デフォルトの名無しさん
07/11/14 23:28:01
>>612
 sleepにしてもバッテリ消費にはあまり影響ないのね。
描画(2D)を減らしたら消費減るのかな、とか興味があって、
1度検証してみたいとは思ってたけど結局やってないなぁ。


622:デフォルトの名無しさん
07/11/15 00:38:25
えっと、PNGは無理みたいですね
なんでいつまでたってもPNG対応しないんでしょう。SoftBank版と互換したいのに

623:デフォルトの名無しさん
07/11/15 00:46:58
いつになったら、って問題じゃないと思うよ
大人の事情だろう

624:デフォルトの名無しさん
07/11/15 00:49:03
単純にgifやjpegに変換して振り分けるのが吉

625:デフォルトの名無しさん
07/11/15 01:15:30
SoftBankがGIFを使える件

制限あるけど。

626:デフォルトの名無しさん
07/11/15 02:27:39
PNGが読み込めないのはドコモダケ

627:デフォルトの名無しさん
07/11/15 02:47:34
前すれログって読めないんすかねぇ・・・。
最初の方のフレーム制御関係を参照したかったんですが。

628:デフォルトの名無しさん
07/11/15 08:38:58
URLリンク(rag.life.coocan.jp)


629:デフォルトの名無しさん
07/11/15 09:08:29
PNGはフリーなんだから、大人の事情もなにもないと思うんだが

630:デフォルトの名無しさん
07/11/15 09:46:49
>>629
対応に関してのコストはどこから出るのでしょうか

631:デフォルトの名無しさん
07/11/15 11:38:05
630笑えるw

632:627
07/11/15 11:47:07
>>628
さんくすです!!

633:デフォルトの名無しさん
07/11/15 16:18:35
反論に困ったら「笑えるw」wwww

634:デフォルトの名無しさん
07/11/15 18:45:13
>>627
過去ログ読もうとしたらよむ方法かかれてるでそ?

635:デフォルトの名無しさん
07/11/15 19:27:56
カメラが起動しようがムービープレイヤーが起動しようが
画像を表示させるってのはできるのかな?
ロゴとかをずっと表示させときたいんだけどさ

636:デフォルトの名無しさん
07/11/15 19:36:43
ネイティブの機能が起動しちゃったら無理。

637:デフォルトの名無しさん
07/11/15 21:16:40
>619
それ意味無い
おそらくエミュはShortTimer使ってる。もう完全にアホの仕事

ちなみにMSNMessengerがtimeBeginPeriod(1)してくれてるぞ。豆知識な


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch