iモード携帯電話用Java(iアプリ) Part10
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/11/10(木) 15:11:53※DoCoMo以外は下記スレへ。
CLDC+MIDP+携帯電話用Javaスレッド part 4
http://pc5.2ch.net/test/read.cgi/tech/1108781476/
■ iアプリ特有ではなくJava一般に関する質問はこちらへ
【初心者】Java質問・相談スレッド68【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1119115837/
■ iモード携帯電話用Java(iアプリ)まとめサイト
http://ton.my-sv.net/
■関連スレ
【日本携帯】Mascot Capsule/Micro3D【標準】
http://pc8.2ch.net/test/read.cgi/tech/1117773530/
過去スレ
Part 1 http://piza2.2ch.net/tech/kako/975/975428633.html
Part 2 http://pc3.2ch.net/tech/kako/1000/10007/1000723476.html
Part 3 http://pc2.2ch.net/test/read.cgi/tech/1040898596/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1067139509/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1084246226/
Part 6 http://pc5.2ch.net/test/read.cgi/tech/1091286071/
Part 7 http://pc5.2ch.net/test/read.cgi/tech/1102844217/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1110946222/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1120411353/
0136デフォルトの名無しさん
2005/11/30(水) 10:51:56702シリーズってDojaのバージョン統一されてない?('A`)
0137デフォルトの名無しさん
2005/11/30(水) 11:17:41ぼかしてない、ぼかしてないwww
とりあえず(ここ重要)はそうみたいだな。
が、実機見てみないことにはなんとも言えないんじゃね?w
0138デフォルトの名無しさん
2005/12/01(木) 01:46:19それを超えたらダウンロードできないんですか?それとも、
スクラッチパッドに画像とかいれる命令をしなくてはいけないんですか?
教えてください
0139デフォルトの名無しさん
2005/12/01(木) 03:36:38はい。
>スクラッチパッドに画像とかいれる命令をしなくてはいけないんですか?
100kBにおさまならければ。
0140デフォルトの名無しさん
2005/12/01(木) 18:31:14「何故スクラッチパッドにJarを落としてそれを軌道」ということができないんだろう…。
アプリ間移動つらい。
できない…よな?
0141デフォルトの名無しさん
2005/12/01(木) 18:34:35何故「スクラッチパッドにDLしたJarを、アプリJarのごとく起動実行する」ことができないのだろう。
これができれば、ポータル的なアプリだけつくり、動的にプログラムをサーバーからDLして実行できるのになぁ。
0142デフォルトの名無しさん
2005/12/01(木) 18:34:58java以前に日本語の勉強からしっかりやっていただきたい。
0143デフォルトの名無しさん
2005/12/01(木) 18:38:43アプリからアプリコードを直接実行できるようにしたらセキュリティうざいから
0144デフォルトの名無しさん
2005/12/01(木) 18:48:49でも、preverifyとか、実際アプリを起動する前のチェック処理とかを使いまわせば問題なくね?
いや、問題があるからこそできないようになってるんだろうが…。
仮想マシン作るかー…。
あほくせええええ
0145デフォルトの名無しさん
2005/12/01(木) 19:01:27携帯本体のアプリケーションマネージャが知らないアプリを
作るのは駄目ポ。
0146デフォルトの名無しさん
2005/12/01(木) 19:07:35ヒント:Jiglet
廃れつつあるが…
0147デフォルトの名無しさん
2005/12/02(金) 00:28:35DoJa4.0ではBufferedReaderクラスのreadLineメソッドを使って
以下のような感じで1行ずつ読み込んでいました。
InputStream in = con.openInputStream();
InputStreamReader ir = new InputStreamReader(in);
br = new BufferedReader(ir);
String s;
while ((s = br.readLine()) != null) {
// sは1行分のストリング
// sを配列に入れていく
}
ところが、DoJa2.xだとBufferedReaderクラスがサポートされていなくて
このソースではビルドできません。
BufferedReaderクラスのreadLineメソッドを使用しないで1行ずつデータを
取得するにはどんな方法で行えばいいんでしょうか?
0148デフォルトの名無しさん
2005/12/02(金) 00:36:460149デフォルトの名無しさん
2005/12/02(金) 00:58:400150デフォルトの名無しさん
2005/12/02(金) 01:10:460151デフォルトの名無しさん
2005/12/02(金) 05:39:310152デフォルトの名無しさん
2005/12/02(金) 06:43:59byte型を使ってコードが膨らんだり遅くなったりするのを確認されたし。
0153デフォルトの名無しさん
2005/12/02(金) 07:03:151文字ずつ読むって、具体的にどうすればよいですか?
実はjavaって今回が初めてであまりわかってないんです・・・
0154デフォルトの名無しさん
2005/12/02(金) 08:59:24実はJAVAにはBYTE型なんていう型はなく、内部的にintに変換されている。
だから最初からintを使ったほうが(-127〜128への)丸め込みの処理が無くなる分だけ高速
>>158
readByteで読んで保存していき、'\n'にぶちあたったらそこが改行ポイントということでよいのでは?
0155151
2005/12/02(金) 09:27:07凄いタメになりました…
何故悩んだかというと、
武器を装備できるかどうかのフラグを立てたく、
int型の多次元配列で フラグ,攻撃力,命中補正
って感じでやりたい、という話しをしたら、大学の講師さんが
「フラグは1か0でいいわけだから、int型を宣言するより、
BYTE型で1bitだけ使って後のbitを攻撃力とかに回した方が効率がいい」
と言ったためです
私が無知な事ももちろんありますが、152、154さんは本当凄いですね
このスレのレベルの高さを改めて実感しました
本当に感謝しています 有難う御座いました
0156デフォルトの名無しさん
2005/12/02(金) 09:37:38BYTE型で1bitだけ使って後のbitを攻撃力とかに回した方が効率がいい
0158デフォルトの名無しさん
2005/12/02(金) 09:52:28っつー質問に
「こっちの方が高速」
っていう回答して
そっちを薦めるのは変じゃないか?
0159151
2005/12/02(金) 10:01:33メモリがいっぱいいっぱい 処理はもう少し余裕がある
→処理を犠牲にしてでも メモリ効率を気にする
メモリが余裕 処理がキチキチ
→メモリを気にするより 処理に余裕を持たせる
という解釈は間違っていますか?
0160デフォルトの名無しさん
2005/12/02(金) 10:19:090161デフォルトの名無しさん
2005/12/02(金) 10:33:26それぞれに必要なbit数を数える。
8bit以内ならbyteでもいいと思う。
0162デフォルトの名無しさん
2005/12/02(金) 10:35:21携帯アプリの新端末が出るたびに保守対応をしていく状況と、
開発者が次々に辞めたり手が空いてる人がいなくて
他人のソースを見る必要がある現状だと
ソースの保守性の方を優先して欲しいと思う(´・ω・`)
0163デフォルトの名無しさん
2005/12/02(金) 10:45:45そもそも、intとbyteの容量差ごときを気にしなければならないほどメモリの使用状況がシビアなの?
>>155
> int型の多次元配列で フラグ,攻撃力,命中補正って感じでやりたい
これを見る限りそのような話にはとても見えないが。
> 大学の講師さんが「フラグは1か0でいいわけだから、int型を宣言するより、
> BYTE型で1bitだけ使って後のbitを攻撃力とかに回した方が効率がいい」
また時代錯誤な。象牙の塔の人間にありがちだなm9(^Д^)プギャーとか言ってみるテスト。
「効率がいい」って、いったい何がどのように効率がいいのですか。
そうした面倒な工夫をすることで、実際のプログラムは高速になってますか。
また、そもそもメモリを節約する必要はあるのですか。
そうした工夫は、単に汚くて保守困難なバグの多いコードを生み出すだけではありませんか。
その講師に超おすすめのページ↓
http://pitecan.com/articles/Bit/Fugo/fugo.html
効率を云々する前に、まず「そんなこと気にせんでも動くんちゃうの?」と考えよう。
パフォーマンスが出ないなり、実際にメモリ不足で止まるなり、問題が起きてから対処すればよい。
0164デフォルトの名無しさん
2005/12/02(金) 10:54:53フラグなら素直にboolean使っとけや
0165デフォルトの名無しさん
2005/12/02(金) 11:46:46そもそもビットで管理する事とintとbyteの容量差を混ぜて語ってるのが間違いなんだよね。
さらにいうなら、フラグはビットでいいが攻撃力はビットじゃ足りないだろ。
昔のTRPGみたいにサイコロの範囲内で決着が付くなら問題ないけど、攻撃力300
とか行くなら9bit必要でしょ?byteにどうやっていれるのさ?
よしんばintの32bitで管理したとして、フラグと、攻撃力と、補正値を出し入れするのに
いちいちビット演算する気? & マスクとビットシフトするくらいなら素直に配列
使った方がマシだと思う。
試しに、32bitにその3つの情報を出し入れするコードを書いてみればいい。
1bitで済む情報だけを、1つのintに複数個入れるならいいけど、数値を扱うなら
ビット演算なんて検討するのは無駄。
0166デフォルトの名無しさん
2005/12/02(金) 11:53:320168デフォルトの名無しさん
2005/12/02(金) 12:12:16ただ最近の携帯ならメモリや速度でんでんより、ビット圧縮解凍処理を入れる事によって
アプリ本体の容量が増えてしまってり、バグ発生時の対処が大変だったり、
仕様変更に耐えれなかったり、面倒な種になることが多いw
知識として持っておくには良い事だろうと思うよ。やるかどうかは別で。
プログラマとしてはビット演算によるデータの保持は基本とも言えるし、
知識がないと後から考察しろと言われても出来ないor苦労するわけだし。
余談:
メモリ効率どうこうとは話変わるが携帯でビットでフラグを所持するのは
外部ファイルとして持つ場合有効とも言える。セーブデータなんかも。
が・・・最近は外部JAR(ZIP)解凍が出来るようになったので
下手にビット演算して小さくすると逆効果になったりもするwww
ケースバイケースだなw
0169デフォルトの名無しさん
2005/12/02(金) 13:23:040 : 0
1 : 20
2 : 50
3 : 100
4 : 200
5 : 300
とかならbit数少なくても問題なし
0170デフォルトの名無しさん
2005/12/02(金) 13:47:050171デフォルトの名無しさん
2005/12/02(金) 13:58:310172デフォルトの名無しさん
2005/12/02(金) 14:13:36メモリ食わないか?という疑問に関しては、JAVAにBYTE型なんて存在しないという返事で一蹴している。
結論的には「メモリ食う量は同じ」だからね。
その上で、より高速なintを薦めた。
0173デフォルトの名無しさん
2005/12/02(金) 14:42:450174デフォルトの名無しさん
2005/12/02(金) 15:20:58素直にバイト配列使っとけや
0175デフォルトの名無しさん
2005/12/02(金) 16:05:58private final static byte[] b = { 0, 1, 2, 3, 4 };
とか、バイトコード眺めて唖然としたわ。
0176デフォルトの名無しさん
2005/12/02(金) 17:29:37腫れ上がらない
圧縮技術を勉強知る
0177デフォルトの名無しさん
2005/12/02(金) 18:32:05finalでないシンボルを作るのに比べたらはるかに少ないけど、やはり膨れるぞ。
それはjarで圧縮してもいっしょ。proguard使えば話はかなり違うだろうな。
ちゃんと携帯java技術を研究知る
0178デフォルトの名無しさん
2005/12/02(金) 18:48:45本当にごめんなさいっ!
だからプリプロセッサを使うハメになる…。
0179デフォルトの名無しさん
2005/12/02(金) 18:54:50なんでこんな糞端末使う気になるんかね?
メニュー周りのわずらわしさだけで会社の携帯地面に叩き付けそうになるヨ'`,、('∀`) '`,、
0180デフォルトの名無しさん
2005/12/03(土) 01:06:09おそらくあなたの携帯が使い難いんでしょう
0181デフォルトの名無しさん
2005/12/03(土) 07:31:32つーかbyte型ここ数年全然使ってないことに気づいた。
>>174
> 素直にバイト配列使っとけや
Javaではint配列のほうが1億万倍素直だ。
VMのインストラクションセットとコンパイル結果のバイトコードをよーく見てみろ。
0182181
2005/12/03(土) 07:39:31俺はImageMap使ってないし、これもDoJa-4.0からはint型のに置き換えられてる。
まあ、今時1バイトでデータを格納するなんてさもしくないかってこった。
0183デフォルトの名無しさん
2005/12/03(土) 08:21:35このマップをメモリにロードするときbyte[]ではなくint[]使えということでしょうか?
0184デフォルトの名無しさん
2005/12/03(土) 08:38:270185デフォルトの名無しさん
2005/12/03(土) 09:30:06Connector.openDataInputStreamでSPにアクセスして
DataInputStream.read(byte[] buf)でロードしてますが
int[]型にするにはどうするのですか?
0186デフォルトの名無しさん
2005/12/03(土) 10:44:15前レスみたかい?
0187デフォルトの名無しさん
2005/12/03(土) 13:04:45他への移植も考えたら別にbyteでもいいんじゃね?
0188デフォルトの名無しさん
2005/12/03(土) 21:29:01JUnitもしくはそれに似たようなものをDoja環境で使っているという人います?
0189デフォルトの名無しさん
2005/12/04(日) 00:22:07書けるよ。ただしテストやビルド用の環境をちゃんと作らないとダメだぞ。
0190デフォルトの名無しさん
2005/12/04(日) 12:27:43EclipseとDo-ja動かしていると程よく殺意とストレスが溜まってきます。
ココに要られる方で低スペックパソコンでストレス無く開発されている方がおられましたら
是非そのテクニックを伝授して欲しいのです。
ちなみにOSはXPで無駄なアンチウイルスソフトとか、XPの機能などは全て停止させています。
0191デフォルトの名無しさん
2005/12/04(日) 14:16:07HDDを大容量にする
Eclipseは2.x
高速化ソフトを入れる
フリーソフト窓の手を入れる
雑誌・本をレジストリをごにょごにょ
最終手段 SafeModeで起動
でも一番苦労しないのは新しいのを買うこと
新品が59800円なんて5年前なら内臓破裂ものだぜ?
0192デフォルトの名無しさん
2005/12/04(日) 14:18:180193デフォルトの名無しさん
2005/12/04(日) 16:27:19「iappli Development Kit for doja-4.0(FOMA)を完全にインストールする
前にウィザードが中断されました。
システムが変更されていません。後でこのプログラムをインストールするに
は、再度インストールを実行してください。
ウィザードを終了するには[完了]をクリックしてください。」
と表示されてインストールできないんですが、何が悪いのでしょう?
ちにみに、j2sejdk1.3.1_16はインストールしてあります。
0194デフォルトの名無しさん
2005/12/04(日) 16:34:500195デフォルトの名無しさん
2005/12/04(日) 18:56:50マウスを動かしても全然反応ないというか,エミュレータでのポインティングデバイス
に相当するものがわかりません.
0196デフォルトの名無しさん
2005/12/04(日) 20:53:550197デフォルトの名無しさん
2005/12/04(日) 23:42:37エミュでできたかな…。試したことねーや…。
0198デフォルトの名無しさん
2005/12/05(月) 19:37:15最近になって FOMAのアプリの開発を始めました。
初歩的なことですいません。
バックライトを常時点灯させたいために以下のコードを
書いたのですが、 isAvailable()のリターン値が必ず falseが
帰ってきてしまいます。
なにか、書き方が良くないのでしょうか?
テストした機種はSH901isです。
よろしくお願いします。
if ( PhoneSystem.isAvailable(PhoneSystem.DEV_BACKLIGHT) == true ){
PhoneSystem.setAttribute(PhoneSystem.DEV_BACKLIGHT,PhoneSystem.ATTR_BACKLIGHT_ON);
}
0199デフォルトの名無しさん
2005/12/05(月) 20:07:32何も不思議はない。バックライト制御ができない端末ってことだ。
0200デフォルトの名無しさん
2005/12/05(月) 20:11:23だからアプリからバックライトやバイブレーションの制御が好き勝手に出来ない端末がある。
明かり点けっぱなし、モーター回しっぱなしでバッテリー消費しまくりのアプリを防ぎたい、ってことで。
0201デフォルトの名無しさん
2005/12/05(月) 21:01:15本体側の設定で、バックライト制御の項目が「システム」になってると
falseが返ってくるようになってるんじゃないの?
0202デフォルトの名無しさん
2005/12/05(月) 21:03:49何回再起動しても同じです・・・。
0203デフォルトの名無しさん
2005/12/05(月) 23:00:23http://hobby7.2ch.net/test/read.cgi/appli/1133790912/
0204195
2005/12/06(火) 00:16:35N端末のやつです.
N端末を買ったらニューロポインタがついてたので,それを使ったアプリが
作れないかと思いまして.
ん・ぱか工房の辺りを見るとエミュレータで動かしてるっぽい画像が載ってる
のですが,やり方が全然書いてないみたいなので.
何か見落としてるんでしょうか?
0205デフォルトの名無しさん
2005/12/06(火) 00:51:45とりあえず表示ってやってみた?
一回しかニューロポインタ使ったアプリ作ったことないからうろ覚えで悪いが。
0206198
2005/12/06(火) 11:43:15やはりそういうことなんですね。
>本体側の設定で、バックライト制御の項目が「システム」になってると
>falseが返ってくるようになってるんじゃないの?
設定をいろいろ見たのですが、そういう設定が見当たらないのです。
0207デフォルトの名無しさん
2005/12/06(火) 13:20:120208198
2005/12/06(火) 13:26:41SH901isとN701です。
0209195
2005/12/06(火) 14:16:28とりあえず
PointingDevice.setEnabled(true);
って書いてあります.で,
PointingDevice.getX()とかで座標を表示してみたのですが,0って書いてあるまま
変化がありません.
0210デフォルトの名無しさん
2005/12/06(火) 14:58:24初期化は
if( PointingDevice.isAvailable()){
PointingDevice.setEnabled(true);
PointingDevice.setMode( PointingDevice.MODE_JOYSTICK );
}
だけっぽい。
0211デフォルトの名無しさん
2005/12/06(火) 15:18:05俺SHだが・・・ないなwwww
説明書どこかあったら見れてみればいいんでない?w
0212195
2005/12/06(火) 16:09:16すみません,実機で試すのを忘れていました.
実機では普通に動きました.
エミュレータだけうまくいってないようです.
「DoJa-4.0プロファイル向けiアプリ開発ツール」というのを使っているのですが,
これはポインティングデバイスには対応してないのでしょうか?
0213デフォルトの名無しさん
2005/12/06(火) 16:17:120214195
2005/12/06(火) 16:25:14すみません.ただ,Googleで検索しても全然ヒットしないので・・・
APIのリファレンスにはエミュレータの使い方なんて書いてありませんし,
ポインティングデバイスを使った場合のエミュレータの使い方を解説したサイトが
ないみたいなんです.
0215デフォルトの名無しさん
2005/12/06(火) 16:36:010216デフォルトの名無しさん
2005/12/06(火) 17:30:11実機でテストしろ
0217デフォルトの名無しさん
2005/12/06(火) 19:33:31なぜエミュレータのドキュメントを読まないのさ。
「エミュレーションの範囲」の項目を読んで自分で判断しろ。
0218デフォルトの名無しさん
2005/12/06(火) 19:35:11setMode() で MODE_MOUSE にして
setVisible(true) ってしてみたら?
0219195
2005/12/06(火) 19:56:43うーん,やっぱりそうなってしまうんでしょうか.
>>217
私が見た限りでは触れていないように見えます.
エミュレータで動かせるだろうと判断した根拠は
ここ http://www.saturn.dti.ne.jp/~npaka/sorami/2/index.html
の画像を見たからなんですが・・・
>>218
試してみましたが駄目でした.
0220デフォルトの名無しさん
2005/12/06(火) 20:29:250222デフォルトの名無しさん
2005/12/06(火) 22:14:37PointingDevice.setEnabled(true);
PointingDevice.setVisible(true);
↑初期化、setModeを先にやらないと例外が発生する端末がある
後は getX() とかで座標を拾う
操作はエミュレータの「決定ボタンの上」で、マウスの右ボタンを押しながらマウスを動かす
MODE_JOYSTICK の場合は getDirectionX() とかを使う
この場合画面の座標ではなく、入力方向が得られる
0224デフォルトの名無しさん
2005/12/06(火) 22:51:11ふと思ったんだけどさ。
そろそろモバイルで悪魔召喚プログラムとか出ねーのかな。
*/
0225デフォルトの名無しさん
2005/12/06(火) 23:04:52エミュレータでのポインタ操作については DoJa4.0のドキュメントには書いてない(と思う)
でもどっかで見たことあるなぁ〜と探していたら DoJa2.1のドキュメントに記述があったw
0226デフォルトの名無しさん
2005/12/07(水) 01:22:23↑でダウンロードしたURLが取れるみたいなんですが、
これ以外に、ADFの値って取れないですか?
例えば、AppVer(バージョン)とか、取りたいんですが。。。
0227デフォルトの名無しさん
2005/12/07(水) 03:51:290228デフォルトの名無しさん
2005/12/07(水) 10:11:390229デフォルトの名無しさん
2005/12/07(水) 11:14:04メガテンのサイトにおいきなさい。
0230デフォルトの名無しさん
2005/12/08(木) 19:27:15�@SPのgifのパレット部分を0xFFで埋める
�AgifをMediaManager.getImageで作成、表示
�BSPのgifのパレット部分を元に戻す
�CgifをMediaManager.getImageで作成、表示
�D1へ戻る
上記の様にして白点滅を行っています。
この時、
P901iはスムーズに動き、
P902iは激しく遅いんですが、原因が分かりません。。。
なぜでしょうか???
0231デフォルトの名無しさん
2005/12/08(木) 19:38:54実機無いからわからんがP902はスクラッチパッド読み書きが遅いとかそういうのは無い?
あと質問、D505でサウンドを止めたり鳴らしたりしてると
たまにサウンドが再生されないことって無い?
心当たりがあって対応したことある人の情報求む(´・ω・`)
0232230
2005/12/08(木) 19:43:45返答ありがとうございます。
iアプリのベンチ
ttp://npaka.yoko.ne.jp/bench/bench.jsp
こちらを見る限り、P902iの方が早い様です。
ゲームデータのセーブ(1.5kB程)もP902iは非常に遅いのですが、
奇妙な事に2回目以降のセーブは、P901iよりも早かったりします。
う〜む。。。
0233デフォルトの名無しさん
2005/12/08(木) 19:46:29902はSP書き込みがちと遅かったような。
てか、毎回作り直しゃ遅いに決まってるので
�Aと�Cの画像を1回だけ作って保持、交互に出せばいいだけかと。。。
>>231
D505i(S) iアプリ作成に関する注意事項の一番最初の項目参照。
0234デフォルトの名無しさん
2005/12/08(木) 19:57:55あり�d(´・ω・`)
とりあえずsleep入れて駄目だったらAUDIO_STOPPED待ってみる。
容量が足りればだけどね(ノ∀`)
0235230
2005/12/08(木) 20:05:04返答ありがとうございます。
実はその処理への移行途中でして、、、
全データ(260kB)のダウンロード時間を計ってみました。
P901i 1分6秒
P902i 1分10秒
Connector.openOutputStream の初回呼び出しがやたら遅い気がしてきました。
とりあえず、白点滅処理を変更して様子を見てみます。
ありがとうございました。
0236デフォルトの名無しさん
2005/12/08(木) 20:46:38while( true ) {
try {
print("->1");
((MApplication)IApplication.getCurrentApp()).deactivate();
print("->2");
((MApplication)IApplication.getCurrentApp()).sleep();
print("->3");
break;
}
catch( Exception e ) {
print("->err");
}
}
アプリボタンを連打していると(おそらく、スリープ状態に移行したタイミングでアプリボタンを押す)sleepのところでハングします。
AppTraceにて確認したところ、
->1
->2
->3
->1
->2
ここで停止
"->err"の例外もとれていないし、そもそもjavaの実行自体が止まっているような感じです。
機種はD902iです。
動作が正常なものと同じようにハングする機種があって困っています。何か情報をお持ちの方教えてもらえませんか?
■ このスレッドは過去ログ倉庫に格納されています