トップページ⇒tech
1001コメント349KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/11/10(木) 15:11:53
NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。

※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/
0268デフォルトの名無しさん2005/12/13(火) 08:08:54
>>267
おお、マジでサンクス。
ちょっと行ってくる!



そして通信量減らす為に色々と宣伝してくる。
0269デフォルトの名無しさん2005/12/14(水) 09:12:23
>>200
> だからアプリからバックライトやバイブレーションの制御が好き勝手に出来ない端末がある。

これぶっちゃけ余計なお世話なんだよなあ。
長々と考え込むようなパズルゲームとかだと(例えば詰め将棋)
バックライトがついたり消えたりで鬱陶しくてかなわん。端末開発者には再考を望みたいものだ。
0270デフォルトの名無しさん2005/12/14(水) 11:40:53
アプリからではなくて端末メニューの設定でバックライト常にONってできない?
0271デフォルトの名無しさん2005/12/14(水) 21:22:41
そして「電池の消費が速すぎる!なんとかしろ!」と苦情がくる
0272デフォルトの名無しさん2005/12/14(水) 21:34:04
>>270
マニュアルを必死で読みあさったけどないんだ。本気でショボンヌだ。
0273デフォルトの名無しさん2005/12/15(木) 11:13:47
>>272
機種は何を使ってるのだ?
0274デフォルトの名無しさん :2005/12/16(金) 22:26:41
>>>200
>> だからアプリからバックライトやバイブレーションの制御が好き勝手に出来ない端末がある。
>269
>これぶっちゃけ余計なお世話なんだよなあ。
>長々と考え込むようなパズルゲームとかだと(例えば詰め将棋)
>バックライトがついたり消えたりで鬱陶しくてかなわん。端末開発者には再考を望みたいものだ。

これって初めて知ったんで気になったんだけど、好きに制御できないとなると
PhoneSystem.setAttribute()でATTR_BACKLIGHT_ONした後はどうなるの?

基本的にはiアプリでバックライトをONにしてても
ユーザがキーを押してしまったらネイティブで設定されてる秒で
省電力に落ちるだろうけど、iアプリの方で
getAttribute()でATTR_BACKLIGHT_OFFだったらバックライトをONにする
対策も取れなくはないだろうからジャンルによって
iアプリ開発者も考慮してみてほしいね。
02752742005/12/16(金) 22:50:18
>>206
>>何も不思議はない。バックライト制御ができない端末ってことだ。
>
>やはりそういうことなんですね。
>
>>本体側の設定で、バックライト制御の項目が「システム」になってると
>>falseが返ってくるようになってるんじゃないの?
>
> 設定をいろいろ見たのですが、そういう設定が見当たらないのです。

 自分はたまたまSH901iCなんでアプリ作ってみたんだが、
 PhoneSystem.isAvailable(PhoneSystem.DEV_BACKLIGHT)でtrueが返ってきてる。
 ただし、省電力設定の照明時間設定を00秒にしてる場合は常にfalseだった。
 
0276デフォルトの名無しさん2005/12/18(日) 01:02:10
JarInflater in = null;
で宣言しているのですが、なぜかエラーがでます><
importもしているのですが、原因として何かありますか?
教えてくだざい><
0277デフォルトの名無しさん2005/12/18(日) 01:03:24
>276
ちなみに、シンボルを解決できません。てでます
0278デフォルトの名無しさん2005/12/18(日) 01:26:39
ソースを良く見直してみるくらいしか思いつかない(´・ω・`)
0279デフォルトの名無しさん2005/12/18(日) 11:57:59
キモい
0280デフォルトの名無しさん2005/12/18(日) 12:16:14
>importもしているのですが
正しくできている自信があるくらいなら質問すな。
正しくできてないだけ。書け。
0281デフォルトの名無しさん2005/12/18(日) 13:04:55
失礼します。
Java blenderでファイルを圧縮しようとすると「足りないメソッドがあります」で止まってしまいます。
デバッグや圧縮せずに携帯で実機テストを行っても止まったりする事がないのでどのメソッドが足りないのか分かりません。
足りないメソッドを調べる方法はないのでしょうか?
0282デフォルトの名無しさん2005/12/18(日) 13:16:21
>>281
JavaBlenderのページは見てみた?
JavaBlenderのVer1.18aでDoja3.5対応って書いてあるから、
それ以降のDojaを使ってたり、JavaBlenderのバージョンが
古かったりするとダメかも(´・ω・`)
0283デフォルトの名無しさん2005/12/18(日) 13:16:43
リバースエンジニアリングする
0284デフォルトの名無しさん2005/12/18(日) 15:00:12
281です。
Dojaのサイズ確認しました。見事に4.0でしたorz
3.5に入れ替えてもう一度確認しようと思います。
0285デフォルトの名無しさん2005/12/19(月) 10:34:30
ウチはJavaBlenderだと3.5でも何か駄目だったから、
諦めてproguardに変えた。
0286デフォルトの名無しさん2005/12/19(月) 11:33:14
Java1.4を使うとJavaBlenderはダメだぞ。
0287デフォルトの名無しさん2005/12/19(月) 19:11:03
505i以降対応のゲーム作ってます。RPG。
32×32のマップをint[32][32]で表現して、背景色や移動可能、イベントのありなし
などをビット演算で取り出してやってます。

メモリ効率を考えて上のようにやってたんですけど、
>>151以降の話題を追ってみると、
この程度のデータではわざわざビット演算などやってる意味なくて、

int bgColor[][]とかboolean canMove[][]とかを適宜32×32ずつ
用意したほうがいいんでしょか?
0288デフォルトの名無しさん2005/12/19(月) 20:21:58
>>287
自分で実験して確かめるのが一番だと思うよ。
0289デフォルトの名無しさん2005/12/19(月) 21:50:33
ちょっと興味もってJavaBlenderでいろんな環境で圧縮してみた。
Eclipse(jre1.5.0_04使用)でビルドしたファイル→圧縮出来ず。
Doja3.5(j2sdk1.4.2_09使用)でビルド→圧縮可。
Doja4.0(j2sdk1.4.2_09使用)でビルド→圧縮可。
ちなみにDoja3.5と4.0では本当に僅かだが3.5のファイルの方が容量が少なくなった。
それより凄いのはEclipseでビルドしたファイル。
同じソースファイルをDoja単体でビルドすると容量が半分ぐらいになる。
「ターゲットリソースが〜〜〜」って言うメッセージが出てビルドできないヤツは設定の「sun.tool〜〜〜を使用」をチェック。
これでビルド出来るはず。
既出知識ならスマン。
0290デフォルトの名無しさん2005/12/19(月) 23:00:37
>>289
いやいや、ありがたい。ナイス情報

>>287
ビット演算なら複数条件を一括で検索とかできる。
まぁ好みの問題だけど、ビット演算もおおいにアリじゃない?
0291デフォルトの名無しさん2005/12/19(月) 23:12:14
>>289
Eclipseはデフォルトでデバッグオプションてんこ盛りだぞ。
まあそれらを外してもごくわずかだけどeclipseのほうがコードサイズは
大きいけどね。
0292デフォルトの名無しさん2005/12/20(火) 00:12:19
>>289を見ると>>286は誤情報ってことでいいか?
0293デフォルトの名無しさん2005/12/20(火) 11:25:27
>>287
メモリを考えての話ならint配列でいい。
そのデータの持ち方を考えているならビット演算がいい。
(使うときは解答するなりそのままなりで)
0294デフォルトの名無しさん2005/12/22(木) 22:22:39
>>293
データの持ち方ってのがよくわからないけど、
>>290も言ってるように複数条件が絡むような分岐のことかな?
地図に描画する画像と移動不可とイベント有無みたいのは
密接に絡むから、ビット演算でやってもいいのかもね。

>>288
それが一番正しい姿勢だとは思うんだけど、
いかんせんJavaでメモリ使用量なんて低レベルな部分を気に掛けたことが
ないから、どうやって調べればいいのかわからん。

せめてググるにしてもキーワードだけでも教えてたもれ...
0295デフォルトの名無しさん2005/12/22(木) 22:34:00
たぶん誰も本気で気にかけたことがないのでぐぐるだけ無駄だと思うぞ。
アプリサイズならまだともかく。
0296デフォルトの名無しさん2005/12/23(金) 00:13:32
まじで?そんなに逼迫するものでもないのか。めもり。
今、アプリのサイズは8k。まだ気にする領域でもないか・・・
0297デフォルトの名無しさん2005/12/23(金) 00:52:58
まあ、空きメモリしらべたいなら
java.lang.Runtimeあたりのメソッド呼ぶんだろうなあ。
0298デフォルトの名無しさん2005/12/23(金) 13:44:26
いろんな機種で遊んでもらう事を考えて、
505シリーズまで動くかを見る時にメモリ残量は気にするけど、
最近の機種では気にしたことはないな。
最近ので逼迫するようなら自分のソースを見直すよw
アプリサイズは230Kあれば個人作成物くらいなら十分だし。
0299デフォルトの名無しさん2005/12/23(金) 16:40:11
>>297

freeMemory

public long freeMemory()

システムの空きメモリの量を返します。gc メソッドを呼び出すと、freeMemory によって返される値が増える場合があります。

CLDC API に存在したよ ゚∀゚
0300デフォルトの名無しさん2005/12/23(金) 17:05:56
今度時間のあるときに詳しく調べるけど、
>>287あたりは「気にするだけハゲる」という結論に落ち着きそうだ・・・
0301デフォルトの名無しさん2005/12/24(土) 00:59:06
freeMemoryで調べても、P900やN900はメモリー断片化が酷いからなぁ・・
03022972005/12/24(土) 01:57:50
>>299
もちろんそれを想定して言ったんだけど(^^;

>>301
御意。なんとかしてほしいものだ。
0303デフォルトの名無しさん2005/12/24(土) 03:24:22
iアプリでテトリスとかできるなら、マインスイーパーできないかな・・・。
作りたいけど、知識のない私には無理なので
作ってもいいよって人作ってください(;´Д`)
03043032005/12/24(土) 03:40:34
よく探したらあった(;´Д`)
スレ汚しスマソ
0305デフォルトの名無しさん2005/12/24(土) 11:00:54
断片化を考慮した空き容量を取得するメソッドがある。
たしかDoJa4.0から。名前は忘れた。
0306デフォルトの名無しさん2005/12/24(土) 19:07:15
DLしたの2chブラウザしかねえやwww
0307デフォルトの名無しさん2005/12/25(日) 00:29:01
質問失礼します。

iアプリからphpにアクセスし、データをダウンロードしようと考えています。
http://www.hogehoge.or.jp/test/down.php?name=resouse.dat
(上記の様なURLにアクセスし、ダウンロード)

�@HttpConnection con= (HttpConnection)Connector.open(clPath, Connector.READ, true);
�Acon.setRequestMethod(HttpConnection.GET);
�Bcon.setRequestProperty("Content-Type", "application/octet-stream");
�Ccon.connect();
上記がアクセスしているソースなのですが、�Cの段階でConnectionExceptionが出て落ちます。
getStatusで調べたのですが、ILLEGAL_STATE(=1)が返ってきている様です。

DoJa-3.0 Standard API には、
http 接続において、openInputStream, openOutputStream, connect メソッドを、呼び出してはならない状態のオブジェクトに対して呼び出した 場合に発生します。
とあるのですが、connectを使用せずデータをダウンロードする方法ってあるのでしょうか?

レスポンス
Content-Type:application/octet-stream
Content-Length:nameで指定したファイルのサイズ
down.phpの仕様には上記の様に記述してあるのですが、レスポンスの受け取り方が分かりません。。。

よろしくお願いします。
03083072005/12/25(日) 00:31:02
書き忘れました。
リクエストメソッドがGETなのは仕様だそうです。
0309デフォルトの名無しさん2005/12/25(日) 01:14:10
>>307
なんでGETなのにContent-Type設定してるの?
それやるとILLEGAL_STATEかどうか忘れたけど、とにかく例外は発生した覚えが。。
03103072005/12/25(日) 01:23:22
返答ありがとうございます。

>>309
>なんでGETなのにContent-Type設定してるの?
GETだったらContent-Type設定しなくて良いって知りませんでした。。。
�Aを削除したバージョンで明日(昼間のみアクセス可能)試してみます。
結果は後ほど。
ありがとうございました。
0311デフォルトの名無しさん2005/12/25(日) 01:30:55
>>310
Content-Typeってのは、自分が送るコンテンツの型を指定するもんだ。
GETじゃ、自分からはコンテンツ送らないでしょ?
03123072005/12/25(日) 01:42:59
�Aじゃくて�Bでした。

>>311
そういえばそうっすね。。。
03133072005/12/25(日) 01:48:17
>>311
ttp://plusd.itmedia.co.jp/mobile/0104/27/ijava_14.html
多分ココ見たから思い込んだんだと思います。

�B消しただけで取得できるかなぁ。。。
0314デフォルトの名無しさん2005/12/25(日) 02:33:23
GET要求にContent-Typeがあるって話、
過去スレにもあったような。

似たようなところを間違えてるってことは、
APIマニュアルのサンプルプログラムが間違ってるんでしょうか?
03153072005/12/25(日) 17:27:49
�Bを消して試したら今度はHTTP_ERROR(=10)が返ってきました。。。
(前回と同じく�Cの段階です)

なんか遠ざかった気がしまつ(´・ω・`)
もうコリャ納品無理っすわ。。。
0316デフォルトの名無しさん2005/12/25(日) 18:25:52
PHPの出力じゃなくて、
普通のテキストファイルのDLはできてるの?
03173072005/12/25(日) 18:56:12
>>316
返答ありがとうございます。

普通のテキストファイルというのが何を指しているのか、技量が足らず良く分からないのですが、
他サーバーからdown.phpを利用しないダウンロードには成功してます。

HttpConnection con= (HttpConnection)Connector.open(clPath, Connector.READ, true);
con.setRequestMethod(HttpConnection.GET);
con.connect();

こんな感じのソースです。
clPathとjam変えれば良いだけと安易に考えていたのですが、ものの見事にはまりました。。。
0318デフォルトの名無しさん2005/12/25(日) 20:45:20
test.txt
を鯖にUPして、それをDLできるか試せ。

通信でひっかかりやすいポイント。
1・iアプリはiアプリが置かれていた鯖としか通信できない
2・iアプリにデータを渡す時は、Content-Lengthが必要
0319デフォルトの名無しさん2005/12/25(日) 20:46:42
>>>315
>�Bを消して試したら今度はHTTP_ERROR(=10)が返ってきました。。。
>(前回と同じく�Cの段階です)
>なんか遠ざかった気がしまつ(´・ω・`)
>もうコリャ納品無理っすわ。。。

最初はILLEGAL_STATEが出てて、修正したら
HTTP_ERRORが出てるって事は、状況は改善されたと思われ。
通信先(PHP?)はちゃんと期待する反応を返せるのかどうか・・・。
0320デフォルトの名無しさん2005/12/25(日) 21:47:41
先方に聞いちゃいました。。。(恥)
マルチすいません。
03213072005/12/25(日) 21:48:29
>>307 == >>320
03222932005/12/26(月) 12:01:09
>>294
すげー遅レスだがデータの持ち方ってのは判りにくい表現だったな。すまん。
言いたかった事は、セーブデータの事です。

32*32で1024の配列をチップ番号、フラグ番号、当たり判定、とばらばらに保存して
3倍の容量くうよりもビット演算などいれてくっつければ容量へるっしょ。ってことw
ま、くっつけなくても別々にビット演算して小さくして使うってものありだし。

でそれらセーブデータをそのまま使うかビット演算でint配列に解凍して使うかは本人次第ってことで。
メモリを気にする必要はあまりないが、ファイル容量は気にした方が良いってのが言いたいことです。
本体に格納するならともかく、スクラッチパッドにHTTPでダウンする形なら特にね。
0323デフォルトの名無しさん2005/12/27(火) 01:56:01
(,,゚Д゚)∩先生質問です
iAppliToolの「設定」-「ネットワーク設定」の「ADFのURL」
の設定はEclipseを用いた開発の場合、どこで設定すればよいのでしょうか?
03243232005/12/27(火) 02:06:33
ごめんなさい。速攻自己解決しました。
「ウインドウ」-「設定」の
「DoJa4.0 Environment」-「ネットワーク設定」にありました。
すまそ。
0325デフォルトの名無しさん2005/12/27(火) 09:13:19
自己解決した後でもちゃんと回答を書いてるところが良いね。
0326デフォルトの名無しさん2005/12/27(火) 15:21:04
アプリのダウンロードで詰まりました。
N504・・・正常
SH505・・・正常
F2051・・・異常 「ソフトに誤りがあります」と出ました
F2102V・・・異常 「ソフトに誤りがあります」と出ました
P901・・・正常

原因が全くわかりません。。。
正常にダウンロードさせたいのですが、分かる方お願いします。
0327デフォルトの名無しさん2005/12/27(火) 16:25:36
アプリ名の最後の文字が、\\コードを含む二バイト文字。

例えば 十 など。(二バイト目が0x5C)
確か二バイト目が0xA0でもダメだったような気がする。

お勧めは最後に i などの1バイト文字を入れること。とりあえず試してみ。
03283262005/12/27(火) 16:34:29
キタ━━━━(゚∀゚)━━━━ッ!!

>>327
あんた最高!

っつうか、この仕様はちょっとなぁ、、、
0329デフォルトの名無しさん2005/12/27(火) 18:50:12
>>326
ああ、Fね。

(遠い目)
03303092005/12/28(水) 01:35:51
>>315
HTTP_ERRORってのは、200番台以外のレスポンスが返された場合だ。
まずはweb serverのaccess_logとかerror_logを見て、何のレスポンスが返されてるか確認するべし。
そこで400番台とか500番台とかが返されてるなら、iアプリのせいじゃなくて、webサーバの設定のせい。
0331デフォルトの名無しさん2005/12/28(水) 05:54:18
公開されてたDoJa4.1エミュレータで動作検証しようと思ったのですが、
DrawArea = 240x240 と書くとエミュレーターが強制終了します。
DrawAreaの項目を空欄にすると正常動作します。
原因箇所までは突き止めたものの何が悪さしているのかさっぱりです。
解決法などご存知の方おられませんでしょうか。
0332デフォルトの名無しさん2005/12/28(水) 18:39:41
ゲームのデータを保存するのにスクラッチパッドじゃなくて
txtファイルに保存とかだめですか?
0333デフォルトの名無しさん2005/12/28(水) 19:10:36
テキストファイル形式のデータを保存してもいいけど、
結局保存先はスクラッチパッドすよ。
ものすごくかみ砕いていうと、以下のような。

.txt → .jpeg .gif .htmlの仲間。ファイル形式。
スクラッチパッド → CD ハードディスク フラッシュメモリの仲間。保存先。
03343312005/12/29(木) 00:18:30
自己解決しました。
DoJa-4.0までで使っていた自作のエミュレータスキンが問題だったようです。
今まではスキンの設定が lcd_height = 271 だったのですが、
lcd_height = 273 にしないと240x240を確保できないようです。
スレ汚しすみません。
0335デフォルトの名無しさん2005/12/29(木) 20:44:23
質問失礼します。色を指定するとき、
g.setColor(Graphics.getColorOfName(Graphics.WHITE));
と毎回、getColorOfNameをコールするのが速度的に遅く
なりそうなのですが、みなさんどうされてますか?
private final int GW=Graphics.getColorOfName(Graphics.WHITE);
と定数化してみたこともあるのですが、この値は機種依存とも
書かれているのでやめて、最初に
for(int i=0;i<16;i++) $Color[i]=Graphics.getColorOfName(i);
とすべて変数にほりこんでみたりもしているのですが…
こうするのが常識、みたいなものがあれば教えてください。
0336デフォルトの名無しさん2005/12/29(木) 21:07:40
> private final int GW=Graphics.getColorOfName(Graphics.WHITE);
右辺が返す値は機種依存かもしれんが、
上のコードなら機種ごとにとることになるから
問題ないんじゃないかねぇ。

むしろ
> for(int i=0;i<16;i++) $Color[i]=Graphics.getColorOfName(i);
こっちの方が個人的には気持ち悪い。


遅いかどうかはベンチマークをとるのが早いだろうけど
また機種ごとに速度違うかもしれないしなぁ。
0337デフォルトの名無しさん2005/12/29(木) 21:31:30
>>335
本当に遅いか?測ったか?
そもそもそんなに頻繁に呼ぶか?
0338デフォルトの名無しさん2005/12/29(木) 22:26:59
>>336>>337
ありがとうございます。一般アプリ作者なもので、
drawStringとかでいろいろ色をつけてるんです。
測ってはいないのですが、変数の方が速いだろうと
思って、コツとかがあればと思いまして。
final int…で今後は書こうと思います。
0339デフォルトの名無しさん2005/12/30(金) 12:03:30
あー、色か。
D900は32bitで、P900は16bitとか、てんでバラバラだもんな。
自前半透明作る時苦労したよ。(〜OfRGBの使用を避けたからね。遅いんで)

final intでいいと思うよ。
動的に変化するのでなければ、配列よりそれぞれ個の変数のほうがいい。
0340デフォルトの名無しさん2005/12/31(土) 20:56:21
switchで条件分岐するのと
if else ifで条件分岐するのでは速度とかかわったりしますか?
0341デフォルトの名無しさん2005/12/31(土) 21:57:05
バイトコードのサイズが違うかな
switchを使うくらいならif if ifでやったほうが小さくなる。
switch > if else if > if if if
だったと思う
0342デフォルトの名無しさん2005/12/31(土) 23:32:48
速度重視ならswitch
0343デフォルトの名無しさん2006/01/01(日) 00:25:14
Javaのswitchって、default省けばテーブルジャンプになるのかね。
0344デフォルトの名無しさん2006/01/01(日) 00:42:15
javapしろよと思っていろいろいじってて気が付いた。
eclipse/JDTのコンパイラはtableswitchだけど、Sunのコンパイラは
lookupswitchなのか。
0345デフォルトの名無しさん2006/01/01(日) 01:09:43
例えば10ヶのメソッドがあるとして、
ループ用の変数をそれぞれのメソッド内で生成するのと、
クラス内にglobalで一つ用意しておくのと、どちらがメモリ量、実行速度の面で有利ですか?
0346デフォルトの名無しさん2006/01/01(日) 01:29:27
10ヶのメソッドはループ中に相互に呼び出したりしないの?
0347デフォルトの名無しさん2006/01/01(日) 02:36:21
あっ、それぞれ単独の場合で、干渉し合わない前提でのことです。
0348デフォルトの名無しさん2006/01/01(日) 02:57:12
質問なのですが、携帯電話のアプリでオンラインで音声チャットができるようなものは作れないのでしょうか?
0349デフォルトの名無しさん2006/01/01(日) 04:19:08
アプリと通話を同時に動作させられないので作れない。
0350デフォルトの名無しさん2006/01/01(日) 04:40:54
>>348
W-ZERO3上で動くSkypeみたいなことができないかってこと?
0351デフォルトの名無しさん2006/01/01(日) 16:55:46
>>347 だったらglobalで用意したほうがメンテし難いという1点を除き全ての面で有利だよ。
0352デフォルトの名無しさん2006/01/01(日) 17:11:59
>>351
そうなんですか?
回答ありがとうございます。
変数名全て一文字にしたり、いろいろテクニックが必要なんですね。
0353デフォルトの名無しさん2006/01/01(日) 17:35:01
>>352
変数名を短くするとかいうのは、最後にProGuardに任せればOK
開発時は気にする必要ないよ
0354 【大吉】 2006/01/01(日) 17:59:17
iアプリの今後を占ってみるテスト
0355デフォルトの名無しさん2006/01/02(月) 01:23:52
>>354
今年もデスマ決定だなw
0356デフォルトの名無しさん2006/01/02(月) 08:05:47
質問失礼します。Javaヒープより大きいJarファイルを読もうとして、以下のようにしてみたのですが
動きません。このやり方ではまずいですか
JarReader(String name) {
int jsize;
int offset = 0;
int size;
byte[] data = new byte[20480];
HttpConnection c = null;
InputStream in = null;
OutputStream out = null;
in= Connector.openInputStream("scratchpad:///0");
jsize = in.read() * 256 + in.read();
in.close();
if(jsize == 0) {
c = (HttpConnection)Connector.open(
IApplication.getCurrentApp().getSourceURL() + name,
Connector.READ, true);
c.setRequestMethod(HttpConnection.GET);
c.connect();
in = c.openInputStream();
out = Connector.openOutputStream("scratchpad:///0;pos=0");
out.write(jsize/256);
out.write(jsize%256);
while((size = in.read(data, offset, data.length)) != -1) {
out.write(data);
offset += size;
}
in.close();
c.close();
out.close();
}
0357デフォルトの名無しさん2006/01/02(月) 08:44:49
まずどう動かないのか書かないとわからない。
コンパイラがエラーを言うなら、そもそもコードが間違ってるし。

というかヒープより多きいんじゃ読めなくても当たり前と違うの?
(直接スクラッチパッドに書き込むつもりでも内部でどうやってるか
 わかったもんじゃないし)
03583562006/01/02(月) 09:14:45
コンパイルは通っています。
Exceptionが派生しているのは
while((size = in.read(data, offset, data.length)) != -1) {
の部分です。
そもそもHTTPでoffsetを設定したreadをしていいのかが気になっています。

もしかしてJavaヒープとスクラッチパッドって同じメモリ領域を共有しているのですか?
とりあえずJavaヒープに収まる
byte[] data = new byte[20480];
で分割しながらスクラッチパッドに書き込もうと思っていたのですが…。
0359デフォルトの名無しさん2006/01/02(月) 09:43:23
>>356
>while((size = in.read(data, offset, data.length)) != -1) {
>out.write(data);
>offset += size;
>}
ヒープサイズなんて関係ないだろ。
これだと、offsetが20480バイト超えた途端にArrayIndexOutOfBoundsException出ないか?
おまけに、size見ないで毎回20480バイトwrite()してるし。
0360デフォルトの名無しさん2006/01/02(月) 13:17:02
カメラの動作を確認する場合は実機に落とさないとダメですか?
0361デフォルトの名無しさん2006/01/02(月) 13:47:18
うん
0362デフォルトの名無しさん2006/01/02(月) 13:53:44
>>356
1回の通信で取得できるデータの長さには制限がある
それにひっかかってんじゃないのか
0363デフォルトの名無しさん 2006/01/02(月) 20:06:24
>>358
>>357と同じく、なんのExceptionが発生しているのか
書いてくれんと、原因を特定しずらい。
0364デフォルトの名無しさん2006/01/03(火) 01:52:55
readの話題が出たので便乗質問します。

http = (HttpConnection)Connector.open(url,Connector.READ);
http.setRequestMethod(HttpConnection.GET);
http.connect();

int contentLength = (int)http.getLength();
inputStream = http.openInputStream();

data = new byte[contentLength];
int readBytes = 0;
while(readBytes < contentLength) {
readBytes += inputStream.read(data,readBytes,contentLength - readBytes);
}

上記のようなソースを書いているのですが、contentLength>=10240の場合に
inputStream.readで例外が出てしまいます。IndexOutOfBoundExceptionです。

最初の1回で10240バイト読んで、その次のループで例外を出してしまいます。
1000バイトずつ読むようにしても、
どうしても10240バイトを超えて読もうとするとそこで例外が発生します。
(おそらく最後の1回で240バイト、その次のループで例外が出るのだと思います)

実機はP504iです。もちろんエミュレータ上では問題なく動いているのですが、
DoJa 2.0ではInputStream#read に読み込みバイト制限でもあるのでしょうか?
0365デフォルトの名無しさん2006/01/03(火) 03:15:01
>>364
初歩中の初歩だぞ・・・
http://www.saturn.dti.ne.jp/~npaka/ibook2/izon.html
ココのHTTP受信/送信データサイズ参照。
03663562006/01/03(火) 05:28:41
>>359
offsetの値は関係ありません。毎回dataを上書きしていますから。

>おまけに、size見ないで毎回20480バイトwrite()してるし。
確かにサイズ考慮していなかった…鬱

端末のスペック表、読み違えてた…。
Javaヒープの容量読み間違えていた、Byteだと思っていたら、KByteだった。
スクラッチパッドのサイズより十分大きいいや…鬱

一回のreadで読み込むようにして、読めるようになりました。
0367デフォルトの名無しさん2006/01/03(火) 05:37:25
iアプリのデバッグってどんな感じでやってますか?
printStackTrace()は使えないみたいだし
Eclipse2.1.2でトレースデバッグもできないみたいだし…。
■ このスレッドは過去ログ倉庫に格納されています