CLDC+MIDP+携帯電話用Javaスレッド part 2

このエントリーをはてなブックマークに追加
1
J2ME CLDC+MIDPベースの携帯電話用Java(主にEZアプリ、Vアプリ)に関するスレッドです。
質問でも議論でも何でもこい、と。

前スレ:
携帯JAVAのスレッド
http://pc2.2ch.net/test/read.cgi/tech/1011977260/

--
Java一般に関しては:
【初心者】Java質問・相談スレ37【大歓迎】
http://pc2.2ch.net/test/read.cgi/tech/1070159693/

NTT DoCoMoのiモード携帯電話用Java(iアプリ)については:
iモード携帯電話用Java(iアプリ) Part 4
http://pc2.2ch.net/test/read.cgi/tech/1067139509/

>>2あたりにリンク集
2:03/12/08 13:50
Google
http://www.google.co.jp/

Java 2 Platform, Micro Edition (J2ME)
http://java.sun.com/j2me/
Reference Documentation(仕様書やAPIリファレンス)
http://java.sun.com/j2me/docs/
J2ME Wireless Toolkit
http://java.sun.com/products/j2mewtoolkit/

EZアプリ技術情報
http://www.au.kddi.com/ezfactory/tec/spec/ezplus.html
Vアプリ技術情報(Vodafone Developers Support Site)
http://www.dp.j-phone.com/dp/
3デフォルトの名無しさん:03/12/08 18:28
3
4デフォルトの名無しさん:03/12/08 18:38
MIDP2.0やったことありますか?
5デフォルトの名無しさん:03/12/08 20:04
質問。
HttpConnectionでCGIにアクセスしたときに、サーバー側CGIで環境変数は拾える?
HTTP_REMOTE_HOSTとか。
MIDPだけで何ができるのやら・・
>> 6
MIDP2.0 なら、キャリア拡張仕様が無くても、かなりのことができるよ。
そして、JTWIなら...。

やめとこ、守秘義務が...。
VodafoneのP5型にてVアプリの作成中なのですが、
MailTransportListener
の使い方が・・・いまいちわかりません。
もしよかったら、サンプルのある場所等ご存知でしたらお教えください。
9デフォルトの名無しさん:03/12/09 21:54
MIDPで年・月・日・曜日の習得ってどうやってやるんだ?
時間はできたんだけどなぁ・・・・
java.util.Calendar クラス
11デフォルトの名無しさん:03/12/09 22:14
>>10
サンクス
12デフォルトの名無しさん:03/12/10 21:00
SmafPlayer player=new SmafPlayer();
smafData=new SmafData("/he.mmf");
player.setData(smafData);
player.play(true);

これで再生するとリピート再生になってしまうのですが、
解決方法を教えてください。。
*細かいところは省略してます。
>player.play(true);
player.play(false);
または
player.play(1);
にする。

カッコの中はboolean指定で繰り返し再生の有無。
数値で繰り返し回数。
14デフォルトの名無しさん:03/12/10 21:37
>>13
レスサンクス。

が。また問題が発生。
再生を終了したら
player.stop(); を実行するようにするには
どうすればよいのでしょぅか?

いままでは
if(c==he){
if(select==0){player.play(false);select = 1;}
else{player.stop();select = 0;}
}
でボタンを再び押せば停止って感じだったんだけど、
player.play(false); で再生したら止まるようになったので・・・
15デフォルトの名無しさん:03/12/10 21:39
ezアプリなんですが、
アプリを実機で動かし、http通信をすると下記のようなresponseがきます。

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta http-equiv="Cache-Contorol" content="max-age=0" forua="true"/></head>
<card><p>リクエストされたページは表示できません。</p></card>
</wml>

GETで、サーバ側のCGIが動きDBからデータをとってくるはずなのですが・・・
エミュレーターでのHTTP通信だと問題はありません。

なにかご存知の方いらっしゃいましたら教えてください。
>>14
MediaPlayerListenerを使えばいいのでは。

>>15
詳しくはわからないけど、エミュレータは、直接サーバに通信してるんじゃないかと。
実機だと、KDDIのサーバを経由するので、エラーチェックとかに
引っかかってると思う。

ドキュメントによると、WMLとかHDMLは送信できないとか、いろいろ制限があるみたいだけど。
17デフォルトの名無しさん:03/12/11 20:27
>>16
インタフェースを2つ以上実装するにはどうすれば・・・

implements MediaPlayerListener,CommandListener,Runnable
だとエラーになるし・・・
implements MediaListener, TimerListener, Runnable
で普通に通ってるけど。
インターフェースのすべてのメソッドを実装してる?
20デフォルトの名無しさん:03/12/12 13:47
>>15
16が書いているようにKDDIのサーバを経由するので、使えるデータタイプが
制限されてます。CGI で出してるデータの Content-type がなにになって
いるか調べてみてください。テキストだと text/plain、バイナリだと
application/octet-stream にしとくのが無難かと。
21デフォルトの名無しさん:03/12/12 16:44
16, 20の方ありがとうございます。
データをhdmlのタグで包んで返さないといけないとかそういうことでは、
ないんですね。
22デフォルトの名無しさん:03/12/12 18:20
EzWebアプリのダウンロードすると
ダウンロードデータが正しくありません。
と表示されてうまくダウンロードできないのですが
どうすればいいでしょうか。

htmlの中身
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title>au</title>
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta name="vnd.up.markable" content="false"/>
</head>
<body>
Hello<hr>
<object data="Hello.kjx" type="application/x-kjx" copyright="no" standby="download">
<param name="disposition" value="devkdj2" valuetype="data"/>
<param name="size" value="2337" valuetype="data"/>
<param name="title" value="Hello" valuetype="data"/>

</object>
</body>
</html>

23デフォルトの名無しさん:03/12/12 18:24
>>18.19
サンクス。
メゾットが抜けてただけでした・・・。。
特定の機種以外はHDML+CGIでないとダウンロードできない。

ezgetというCGIがおすすめ。
25デフォルトの名無しさん:03/12/13 19:10
1つのみ選択可能のリストを表示し、
選ばれたら確認画面→それをレコードに保存するには
どうすればいいのでしょぅか?
>>25
List→Alert→RecordStore
2725:03/12/13 21:35
Listを
public void paint(Graphics g)
で表示出来ない・・・

ってかオプションとか使わないとダメとか?
ListはCanvasと同じようにDisplayにsetCurrentして表示。
前スレが読みたいです…
30名無しさん:03/12/17 18:08
pngファイルの色変更ってプログラムで、できますか?
容量制限の関係で、ファイルを沢山もてません。
具体的には、1パターンの人間の画像をjarに入れておいて
服の色、頭の色違いで何パターンか元ネタから、プログラム内で生成し、
レコードストアに入れておきたいのですが。

やり方や、サンプルなどご存知の方がいらっしゃいましたら教えてください。
>>32
ありがとうございます。
34デフォルトの名無しさん:03/12/22 19:36
.jar を逆コンパイルする方法ってある?
3534:03/12/22 19:46
追加で、AU用のkjxファイルです。
ソースファイルが消えてしまったので・・・・
> ソースファイルが消えてしまったので・・・・
アキラメレ


KJXカッター
ezplusの実行形式KJXファイルを簡単にJADファイルとJARファイルに戻せる

jarはzipと同じなので、適当なツールで伸張

Java逆コンパイラ(沢山あるからググれ)にかける
37デフォルトの名無しさん:03/12/22 23:00
int mode = 0;
で定義したものを
レコードストアから呼び出したものに置き換えたいのだが、

RecordStore rs=RecordStore.openRecordStore("test",false);
byte[] b=rs.getRecord(1);
まで呼び出したまではいいのだが、
modeにどうやって置き換えればいいんだ・・・
>>37

キャストしる。

mode = (int)b[0];

もしくは記録したのが4バイトなら

mode = ((int)b[0] << 24) | ((int)b[1] << 16) | ((int)b[2] << 8) | (int)b[3];

こんな感じ。
>>37
mode = (((b[0] & 0xff) << 24) | ((b[1] & 0xff) << 16) | ((b[3] & 0xff) << 8) | (b[4] & 0xff));

とかでよかったっけ?
4038:03/12/22 23:19
間違い。

((int)b[0] << 24) & ((int)b[1] << 16) & ((int)b[2] << 8) & (int)b[3];
4137:03/12/22 23:31
>>38
サンクス!

>>37に書き忘れたんだが、
書き込むときの int mode→byte[] bにする場合は
どうすれでいいのでしょぅか?
4238:03/12/23 00:00
>>41

byte[0] = (byte)((mode >>> 24) & 0xFF);
byte[1] = (byte)((mode >>> 16) & 0xFF);
byte[2] = (byte)((mode >>> 8) & 0xFF);
byte[3] = (byte)(mode & 0xFF);
>>42
byte の b は何処へいった?(w

int mode = 0;
だから1バイトじゃないのか?
>>43
そーゆーことをやってると、読み込むときに苦労する。
昔のベーシックのPAINT命令のような
塗りつぶしを実装したいのだが
どのような方法が考えられますか?

俺が考えてみたのは
画面上の座標をチェックしながら
境界線となる色が見つかったら
その範囲内に直線を引いていく
というようなものだったのだが、画面上の
ドットを拾う方法がわからず・・・・

もう一つ考えたのは、配列(描画する大きさ分)
上に画面上のドットの色を保存しておいて
配列をチェックしつつ線を引いていく(塗りつぶす)
この方法で出来そうなのだが、そうするとLINE命令のような描画を
再現することができない(こともないとは思うが)

どんなカンジの処理をしたいかというと、
20年位前のAVGのような画面描画処理です。
サラトマ、スターアーサー、はーりぃふぉっくすみたいな。
線がちゃかちゃか描画されて、そのごとろい塗りつぶしが行われる。
そんなかんじの。
>>46
う〜ん・・・
そこは、すでに昨日みたです。
塗りつぶしの方法については、まあ
いろんなアルゴリズムあるし、
高速である必要はないです。今回。
あえて、遅い方がらしさがでるようなきがするので・・・・
ぐぐってはみたんです、その上での質問です。

おそらく、わざとそんな昔のしょぼい描画を再現するなんて
需要ないだろうし、紹介している人もいないとは思います。
ですので、MIDPに詳しい方に方法として、どんなものが考えられるか
質問してみたのです。
ちなみに、MIDPのアンオフィシャルのAPIリファレンスのサイトと
MIDP解説本を参考に自分なりに考えてはみました。
JAVA SEでは、画面上のドットを取得するメソッドがあるみたいですが
MIDPのみでそのようなメソッドはないようですし、
見た目だけでも似た感じにできれば。。。と思っています。
長文の上、文章がへたですいません。
ならびに45さんありがとうございます。
4845:03/12/23 01:57
ごめんなさい。
お礼は46さんですた・・・。
4937:03/12/23 10:52
>>42
書き込みの部分だが、

RecordStore rs=RecordStore.openRecordStore("test",true);
/*
ここにint modeの変換する処理・・・@
*/
if (rs.getNumRecords()==0) {
rs.addRecord(b,0,b.length);
} else {
rs.setRecord(1,b,0,b.length);
}
rs.closeRecordStore();
と書いてあるだが、
@に>>42をいれても文ではありません。とエラー。
うーん・・・ヨクワカラソ・・・
>>49
byte[0] を b[0]に…

43 名前:デフォルトの名無しさん[sage] 投稿日:03/12/23 00:06
>>42
byte の b は何処へいった?(w
>>47
遅くしたいなら、ゆっくり描画すればいいのでは?
アルゴリズムはそこに出てるような感じでしょ
(スキャンラインシードフィルね)
>>35
一度削除したものを復活させるソフトがあるからそっちを試してみたらいいと思われ。

ttp://www.vector.co.jp/soft/win95/util/se192983.html
そのうち「携帯パソコン上でIP電話」ってのが主流になるよ 
>>47
MIDP1.0では、Imageの pixelを取り出すことはできない。
そのうち出てくる MIDP2.0なら出来たと思う。

それから、EZアプリとVアプリのAPIでは、
Imageのpixel取れたと思うので、確認してみれば?
>>49
シンタックスエラーになってあたりまえ。
もう一度Javaの基礎を勉強しなおした方が良いかと。

50さんの指摘以外に、">>>" とかもエラー。
そんなのJavaにはありません。
5637:03/12/24 07:33
>>55
というか大体自分なりに書き換えて
成功したのでOKという方向で。
>>55
「>>>」を知らんのか?
それは、もう一度Javaの基礎を勉強し直した方がよいかと。




・・まぁオレも使わんけど。
">>>"を知らんやつはJava初心者。
初心者です。ケテスタください
たすてけ?
61デフォルトの名無しさん:03/12/24 21:00
Vアプリの説明欄って書き込めないの?
本見たけど書いてなかったので・・・
MIDlet-Descriptionのことかね?

UTF-8で書けば説明の項目に出るよ
>>61
何の本を読んだのか知らんが。
説明欄というのが、端末のプロパティから参照できるやつのことなら、
MIDlet-Description
64デフォルトの名無しさん:03/12/24 23:31
>>62.63
レスサンクス

ちなみに
「携帯JAVAアプリケーション開発ガイド」
という本。
携帯アプリ板
http://news6.2ch.net/appli/
66デフォルトの名無しさん:03/12/28 03:21
Vアプリで着信を受けてバイブレータ動かすことってできないの?
setDeviceActiveだとドキュメントにあると折りエラー...。

V601SHでメール作成画面等にあるときに着信音が鳴らない
(バイブレータも動かない)のをVアプリで補おうと思ったんだが...。
6766:03/12/28 03:23
ぁ、「着信」ってのはメール着信のことです。
>>66
メール作成画面時は常駐アプリが動いていなくて(一時停止)
そもそもイベントを取得できないと思うが。
>>66
設定で変更できるんじゃない?
7066:03/12/28 18:56
>>68
P5型でのみ使える MIDlet-Resident: S でいけるんじゃないかと
思っているんですが。ダメかしら。

>>69
それができないんですよ。取説にも書いていませんし、一応携帯板で
質問してみたんですが、やっぱりできなって話です。
>>70
継続起動待受アプリってやつだね。
こいつは、端末が折り畳まれていても実行され続ける、というだけのはず。
つまり、折り畳まれていても実行されている以外は、普通に実行されている状態と何ら変わらないのでは。
7266:03/12/28 20:26
>>71
そーゆーことですか。ありがとうございます。
となると、>>68 さんの言うように、なんにしろ目的は達成できそうに
ありませんね。

調べないでこの端末を買ったのが悪いんですが、ちと困ったな。
73デフォルトの名無しさん:03/12/29 17:08
P5型のアプリでカメラの起動方法がいまいち分からないのですが
どうやればいいんでしょぅか・・・
>>73
・CameraConnection camera = Connector.open("camera:");
・いろいろ設定メソッドを呼び出す
・camera.capture();キャプチャする
7573:03/12/29 18:37
レスサンクス。
あと、P5用のパッケージがコンパイルで弾かれるんだけど
どうすればいいんだろう。。
いままで↓
javac -bootclasspath c:\J-PHONE-SDK\stubclasses.zip *.java -target 1.1
でコンパイルしてたけど
c:\J-PHONE-SDK\stubclasses.zipを使わなければいいだけ?
>>75
P5用のstubclasses.zipを使ってる?
7773:03/12/29 19:57
>>76
サンクス。
P4のままでした(汗

ってかカメラの起動〜保存までの書き方が分からない・・・。
誰かサンプルとか教えてください。。。
78デフォルトの名無しさん:04/01/01 19:40
httpで収得した文字列が
info= 0,1,2,3,4,5,6,7,8
だとして、
, で区切ったものを別々の変数?に分けるにはどうすれば・・・
例えば
a[2] → 2
a[3] → 3
のような形に・・。
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
まず言い出しっぺが頑張ってください。
81デフォルトの名無しさん:04/01/03 12:56
info= 0,1,2,3,4,5,6,7,8
をsplitを使って , で分割するには
どのように書けばいいんでしょぅか?
8238:04/01/03 16:24
>>81

@ 現在位置を保持
A String#indexOf()で","の位置を取得
B Aで取得したところまでをString#substring()で抜き出す。
C Aで取得した位置に移動
D @に戻る

を文字列の終わりまで繰り返す。
8382:04/01/03 16:24
名前に辺なのはいっちまった。
>>81
vbsですが、
info = "0,1,2,3,4,5,6,7,8"
result = Split(info,",")

これで result(LBound(result))〜result(UBound(result))に値が入ります。
8581:04/01/03 20:00
>>82
レスサンクス。
indexOF()で、もし , が無かったとき(-1)
にそこで処理を停止するに、
if文を使おうとしたのだが、
演算子 != は int,java.lang.String に適用できません。
と言われました。。

じゃあ何にすれば良いんだよと・・・・・
8681:04/01/03 20:06
ちなみにVodafone用のアプリです。。
>>85
コード片書いてちょ
>>85
コードは正直だ、おまいが悪い。
エラーになる部分のコード晒してみ。
8981:04/01/03 22:36
private String info1="未収得";

public void commandAction(Command c,Displayable s) {
if (c==soft1) {
info1=readText(url1);
int i0 = info1.indexOf(",");
if(i0 != "-1"){ // ここの部分でエラー
W01 = info1.substring(0,i0);
    }
repaint();
}
public void paint(Graphics g) {
g.drawString(W01,0,80,g.LEFT|g.BOTTOM);
}

かなり省略してますが。。
readText(url1);は 0,19,41,0.02,0.07,0.10 という文字列が返ってきます。
それを , で分割してW01,W02,W03・・という感じで入れたいのです・・。
どうして "-1" なんて書くのか、まったく想像もつかない。
>>89
うはぁ・・・・脱帽
9281:04/01/03 22:58
あっ。
perlと混ざって種。
スマソ。。
>if(i0 != "-1"){ // ここの部分でエラー

何で""が付いてんの?

> readText(url1);は 0,19,41,0.02,0.07,0.10 という文字列が返ってきます。

バイナリデータで返すように作ったら?
固定小数点でいいならゲタはかせて整数にすればいいし
Perlでも"-1"なんてことしないよ・・・
>>81 はアホでFA
うひょ
97デフォルトの名無しさん:04/01/10 09:46
Vアプリで ResourceOperatorクラス のjavadocが見たいのですが
どこに乗っているかご存知の方いませんか?
Javadoc(P5)には無いみたい

ちなみにclassの中を直接見ると
com/j_phone/media/ResourceOperatorになってました
98:04/01/10 09:51
すまん、Javadoc(C4)にあったよ(恥
P5から使える機能化と思ってた
補足しておくとV601SHではResourceOperatorがサポートされていないので
P5用のStorageConnection等の代替クラスを利用するノダ。
100:04/01/10 13:08
>>99
StorageConnectionすげー
"フォルダ名/"にアクセスできるじゃん
でもP5型JSCL 1.2しか使えないんじゃなぁ

ちと勉強してみます
101デフォルトの名無しさん:04/01/10 17:46
Vアプリで配列をレコードストアに保存して、それを読みこめるようにしたいのですが、どうすればよいのでしょうか?

例として
int[] data;
data= new int[10];
data[0]=0;
.
.
.
data[9]=9;

みたいなのをレコードストアの1〜10までに保存したいわけですが・・・

どなたかご存知でしたら御教え下さい
こーゆー感じに書いていく。
間違ってたらスマソ。でも実際に使ってました。

int[] data = new int[5];
byte[] b;
RecordStore rs; // openRecordStoreを行う

for (i=0;i<5;i++) {
b=new byte[4];
b[0] = (byte)(data[i] & 255);
// 255迄しか数値を扱わない場合は以下3行削除
b[1] = (byte)((data[i]>>>8) & 255); // 65535
b[2] = (byte)((data[i]>>>16) & 255); // 16777215
b[3] = (byte)((data[i]>>>24) & 255); // 4294967295
rs.setRecord(b,0,b.length);
}
アプリのソースコードを公開しているサイトってどこかない?
ぐぐれ
「ぐぐれ」=「知りません」w
>>105
バカw

>>103
国内でもいくつかあるが、MIDPをキーにして探してみろ。
海外でソース置いてるとことか大量に出てくるぞ。
String t01="000032";
を 0.32 に、
String t02="001653";
を 16.53 にして画面に表示させるには
どうやればいいの?
>>107
Stringとintに変換。
100で割る。
求めた2つのintを表示する。
String t01="000032";

int in1 = Integer.parseInt( t01 );
int ans1 = in1 / 100;

g.drawString(ans1,0,120,g.LEFT|g.BOTTOM);

ここまではやってみたが、
javax.microedition.lcdui.Graphics の drawString(java.lang.String,int,int,int) は (int,int,int,int) に適用できません。

細かいところを教えてください。。
お願いします。
> g.drawString(ans1,0,120,g.LEFT|g.BOTTOM);

g.drawString(""+ans1,0,120,g.LEFT|g.BOTTOM);
コンパイラが変換してくれます
やってみたらコンパイルは出来たのですが、
数値が 0 になるのですが・・・。
チミは割り算も出来ないのかね
MIDPは整数の世界なので 32/100 = 0
後は・・・・・分かるな?
小数点の位置が固定なら後ろから2個目と3個目の数値の間に点を挿入すればいいのでは?
115デフォルトの名無しさん:04/01/14 00:20
public void deleteRecord(int recordId)
「レコードIDに対応するレコードをレコードストアから削除します。 そのレコードのためのレコードIDは再使用されません。」
すげー辛い仕様だよ
てっきり削除したら自動的に前詰するか、追加時に空いているIDを探してくれるモンかと思ったのに。。。。

「ハイスコアは最大100個まで」みたいなアプリを作るときは、
普通はどうするモン?
>>115
1レコードに全部ぶち込むとか。
117:04/01/14 00:42
それいい考えだ!!
>>115
オレは、基本的に上書きしかしないようにしている。
初回起動時にてきとーに100個分埋めて、あとはスコア更新時に常時上書きって言う具合。

>>99
マジすか?
基本的に下位互換は完璧だと思ってたんだけど、甘かったか。
119デフォルトの名無しさん:04/01/14 22:00
Vodafone用に、簡単なシーケンサーアプリを作ろうと思ってます
SMAFファイル等を経由しないで、直接内部音源鳴らせます?
音・長さ・タイミングなど指定して。
あと音が重ねられたらいいな。
こんなの可能ですか?
>>119
できません。。。
やるとしたら、SMAF Phraseでいろんな音程・長さのデータを持っておくとか、内部で作成するとか(できるかどうかは知らんけど)
122デフォルトの名無しさん:04/01/14 22:25
>>117
この方法だと、最初から最大容量を使っちゃうのがちょっとなぁ
いろいろ考えた結果、毎回ソートして順番を書き換える1レコード式で
ちょっと試してみます
サンクス
123デフォルトの名無しさん:04/01/14 22:30
えー、すげー基本のような気がするのですが
各種javaDocを見渡してみたのですが発見できなかったので
質問です。
jarに同梱してあるoutputの下に置いたデータファイルを
読みたいのですが、どうすればいいのでしょう?
Connectorをどうにかして使うものでしょうか?
Imageみたいな、FILEとか無いんですかねー
>>123
Class#getResourceAsStream() を使う

具体的には、
InputStream in = getClass().getResourceAsStream(<File Name>);
って感じ。
>>121
> >>119
> できるよ。
> http://www.itmedia.co.jp/mobile/0205/20/n_jjava.html

ウザイ
嘘はヤメレ
126デフォルトの名無しさん:04/01/14 23:54
>>125
やっぱできないよね!?
>>126
基本的にできないよ。

ただ次の2点はできる

>> 音・長さ・タイミングなど指定して。
タイミング、長さは指定可能

>> あと音が重ねられたらいいな。
これは可能
128119:04/01/15 11:11
>>127
音は指定できないの?

SmdPlayerのsetDataメソッドに、SMDデータのバイトデータ渡してあげればできるかな?
って思ったんだけど・・
129デフォルトの名無しさん:04/01/15 14:30
レコードストアに
レコードストアID1〜100まで保存しようとするとエミュレータがエラーを返すのですが・・・

レコードIDって1〜10までが限界なんですか?
ちなみに、RMSの最大値は30KBまでとってあります
130129:04/01/15 14:43
訂正
レコードストアIDは複数作成できてるっぽいのですが、読みこみ時にエラーがでます
java.lang.ArrayIndexOutOfBoundsException
at KtaiCanvas.commandAction(+212)
at javax.microedition.lcdui.CommandMenuList.commandAction(+90)
at javax.microedition.lcdui.Displayable.commandAction(+18)
at javax.microedition.lcdui.List.dispatchUi(+96)
at javax.microedition.lcdui.List.dispatch(+29)
at javax.microedition.lcdui.UiEventDispatcher.dispatchUi(+127)
at com.jblend.io.j2me.events.EventDispatcher$EventWorkerThread.run(+387)
Application EMERGENCY termination. (-1)
131129・130:04/01/15 14:45
↑みたいな
で、読みこみ部分のソースは
if (c==soft2) { //データの読み込み
try {
//RecordStore
RS = RecordStore.openRecordStore("gra",true );
for(int i=0;i<100;i++){
i++;
byte[] rec = RS.getRecord(i);
i--;
hiScore[i] = rec[i];
}
//Integer.parseInt(new String(data));
RS.closeRecordStore();

} catch (RecordStoreException re ) {
}
wk= "read";
}
ですが
RecordStoreとは関係ない予感。
133129・130:04/01/15 15:51
>>132 そうなんですか?
if (c==soft2) { //データの読み込み
try {
RS = RecordStore.openRecordStore("gra",true );
for(int i=0;i<100;i++){
i++;
byte[] rec = RS.getRecord(i);
i--;
data[i] = rec[i];
}
RS.closeRecordStore();

} catch (RecordStoreException re ) {
}
wk= "read";
}
とりあえず修正したら100までは読みこめるようになりました。
希望は1万まで保存&読みこみさせたいのですが・・・
recordstoreじゃないとなるとcommandactionあたりが悪いんでしょうか?
>>133
} catch (RecordStoreException re ) {
//この部分の意味わかってるか?
}
135129・130:04/01/15 17:23
え・・・と
例外が生成された理由に関するメッセージを指定しないでインスタンスを構築します。
ってことなので・・・

エラー時の原因を表示しない・・・ってことでしょうか?
136129・130:04/01/16 01:42
解決しました
板汚し申し訳ありませんでした
137119:04/01/16 11:47
できたわ。
>>137
やっぱ、演奏データの内部生成?
>>137
うpよろ
140127:04/01/17 05:05
>>119
それって>>120の内部生成方法でやったんだよね?
ソースみたいYO!
SMAFDataを内部で動的に作るんなら、結構がんばってるよな。オレも見てみたい。
StorageConnectionと組み合わせて読み込みと保存を追加すれば、結構いけるな。
142デフォルトの名無しさん:04/01/17 16:29
環境:j2me_wireless_toolkit_2.0_01
vodaphone拡張apiを使いたい。

c:\WTK20\apps\(アプリの名前)\lib\に
stubclasses.zipを置く

build

ERROR: native methods should not appear
Error preverifying class java.lang.Class
Build failed
なぜですか?ユーザーガイドは嘘つきですか?
>>142
Vodafoneの開発ガイドを読むべし。
144デフォルトの名無しさん:04/01/17 17:55
読んでみたけど・・・要するにwirelesstoolkitではできないのでコマンドラインからやってくれってこと?
getWidth();とかで画面サイズを別の関数、例えばint i;
などに代入することは可能でしょうか?
可能でしたら、方法を教えて頂けるとうれしいです
146デフォルトの名無しさん:04/01/17 22:43
ソケット通信ができる機種ってありますか?
147142:04/01/17 23:10
midpapi.zipに無理やりstubclasses.zipの中身を追加圧縮して自力解決。なんとも気持ち悪いが。

>>145
言ってる意味がよくわからんけど、int i = getWidth();ってこと?
148119:04/01/17 23:20
smdPlayerの引数にbyteでSMDデータを渡してあげたら音がでたよ。

>>141
渡したデータはSMAFDataじゃなくて、SMDData。
SMDエディタで適当にファイルを作って
バイナリエディタで開いてみて、データを解析してみた。

SMDだと音が悪いからSMAFDataにしたいんだけど、ちょっとできないかも。

誰か解析して!

149デフォルトの名無しさん:04/01/18 00:14
>>147
やってみた。圧縮は成功だけど、エミュレータではerrorになった。
java.lang.ClassNotFoundException
>>142
なぜ、MIDP2.0 の Wireless Toolkit を使ってるの?

>>146
海外のJava端末では対応してる機種はある。
日本のキャリアは実装してないので使えない。

>>147
そりゃ、そうだろ。
151150:04/01/18 01:02
間違えた。
147 じゃなくて、149
152142:04/01/18 01:08
>>150
MIDP1.0のも持ってますが、何となく。いかんのでしょうか?
そして解決したと思っていたが、buildしてエミュで動かすと
No such method getWidth.()I
などという謎のエラーで落ちる破目に・・ショボーン・・。
今いろいろ調べて追加圧縮が原因ででてるエラーみたい。八方ふさがりー。
153145:04/01/18 18:13
>> 147
コンパイルでエラーでちゃうんですよ。
getWidth()がintとサイズ違うんだかなんなんだかわかりませんけども・・・

画面サイズで表示サイズ指定したかったんですが、できないのかなぁ・・・
154150:04/01/18 22:47
>>152
バージョン違ったらダメだろ。普通。

エミュと言ってるのは、WirelessToolkitのエミュのことか?
であれば、ボダの拡張APIのクラスファイルがないから動かないのは当然。
ボダ用のエミュレータなら、MIDP2.0のAPI使ってないか、確認しろ。

>>153
せめて、コンパイルエラーの文言ぐらい書いてくれ。
昨日からこっそり開発を始めたMIDP初心者です。

Vアプリのエミュレーターを使って動作確認を
しているのですが、このP5型では無いエミュレーターでも
100k~256kのjarファイルを動作させることはできるのでしょうか?

おしえてエロイ人
156デフォルトの名無しさん:04/01/19 00:20
>>154
JSCL1.2.1のAPIを使っていなければ
サイズのみ100〜200kのjarは可能
256kでは無いので注意
残りはレコードストアね
>>156
即レスありがとうです!

動作確認は取れるということですね。
jarが200kまでとは・・。もう一回仕様書読んできます。

ほんとにありがとうでした(^。^
158142:04/01/19 00:37
>>150,156
apiは1.0の範囲で収まってると自信をもって言えます。
でも念のため今はWTK104でやってます。でも状況は変わってないです。
ちなみに圧縮方法変えてみたりしてみましたが。やはりNo such method getWidth.()I が。
あ、ちなみにエミュはvodafoneのj-sky application emulatorで、
WTK付属のエミュでやってみると
ALERT: Unable to load class com/jblend/media/MediaPlayerListener
です。ま、こっちは当然ですが。

vodafoneの拡張API使ったアプリを作っていらっしゃる皆々様はコンパイルのときいちいちコマンドプロンプト使ってるんですか?
まさか・・・ね。
159142:04/01/19 00:55
…ヤッタ!

midpapiのjavax/microeditionにstubclassesのjavax/microeditionを
上書きして圧縮したらできました。
結局プログラムとは試行錯誤なんだなぁ、と。(違)
>>150,>>156両氏、レス感謝です。
160デフォルトの名無しさん:04/01/19 13:24
>>157
コマンドプロンプトだけど何か?

つーか、普段使っているSolarisもコマンドプロンプトみたいなもんだから
違和感ないんだよね
Vで文字や絵を点滅させるにはどうすればいいんですか?
>>161
描く→消す→描く→消すを繰り返す。
163デフォルトの名無しさん:04/01/22 08:32
JBuilder パーソナルでEZアプリを作ろうとがんばっているのですが、エミュレータで以下のようなエラーが出てしまいます。プログラム内容は単にHelloWorldと表示するだけのものです。
Loading JAD:
cannot run: helloworld
java.lang.ClassNotFoundException
Exception.........: e5f0560 'java/lang/ClassNotFoundException'
Application EMERGENCY termination. (-1)
164163:04/01/22 15:27
環境はJ2MEWTK+JDK1.3.1_10 エミュはEZPLUS開発ツールのやつです。助けて神サマー
>>163
「ClassNotFoundException」でググれば即解決。
166163:04/01/22 17:30
>>165
ありがとうございます。早速調べましたが私初心者なものでいまいちよく分かりません(**)
差し支えなければどういう意味か教えてはいただけませんか?
>>166
「クラスが見つからない例外」
・・・これで意味がわからなければ、Javaを基礎から勉強してみた方がいいかも。
168デフォルトの名無しさん:04/01/23 01:21
Vアプリの待ち受けで、メールの着信通知の見分け方って
どうすればよい?
普通に待ち受けアプリを作ってみたら、着信通知でもメールが
来たことになってしまった
エミュレータにもそれらしいイベントないし。。。。

普通のSKYメールと着信通知は、何を見分ければよいか
教えてプリーズ!>JAVAのエロイ人
>>168
MailListener
>>163
>単にHelloWorldと表示する
の前に、HellowWorldとログ出力するだけのでも作ってみ。
それから、Canvasに文字や図を書くのをやってみよう。
レコードストアにJARを保存して、JARに含まれるファイルを個別に取り出すことってできるんですか?
そのあたりの仕様が載っているサイトや本があれば教えていただきたいのですが・・・
172デフォルトの名無しさん:04/01/23 08:44
>>168
VアプリのP5型のJavaDocを見たけど
MailListenerのトコには、それらしい記述が
無いのですが?
もうちっとヒントをお願いします
173163:04/01/23 09:47
>170
ありがとうございます。少しずつ調べながらがんばってみます!
>>171
JARに含まれるファイルをとりだすことは可能。
しかし、レコードストアをJARに保存するできない。
というか、JARは書き換えられないのでは?
>>172
>このインタフェースを実装したリスナを、DeviceControlのsetMailListener()メソッドを呼び出して
>登録してください。 メール着信に関するイベントは、MailListenerインタフェースのreceived()
>メソッドに通知されます。
と思いっきり書いてあるのだが。

>>171
Vアプリなら、Connector.open("jar://Filename/Resourcename");
とかでRecordStoreに保存したJARの中身にアクセスできるとドキュメントに書いてあった。
ezは知らない。

>>174
レコードストアをJARに保存するのではなくて、JARをレコードストアに保存したいのだと思われ。
176171:04/01/23 16:02
>>175
>Vアプリなら、Connector.open("jar://Filename/Resourcename");
>とかでRecordStoreに保存したJARの中身にアクセスできるとドキュメントに書いてあった。
ありがとうございます!!

ところで、そのドキュメントって具体的にはなんと言うファイルでしょうか?
VodafoneのPDF資料を見ていたんですが、それらしい部分を見つけられなくて・・・
詳しい制限等知りたいので、お手数ですが教えていただければ助かります。
177174:04/01/23 23:20
げ。日本語が読めてなかった。

>> 175
"jar://" スキームは、単にJAR内のファイルを読むだけでなかったけ?
Vアプリ開発ガイド概要編の4.6 JAR の項を読む限りではできそうに思えるんだけどなあ。
今月いっぱいは試そうにも試せないから、質問者の人に試してもらうって事で。
RecordStoreに保存したjar内のファイルへのアクセスはこんな感じで出来るかと

byte buf[] = new byte[65536];
InputConnection c = (InputConnection)Connector.open("jar://"+レコードストア名+"/"+ファイル名 , Connector.READ);
InputStream is = c.openInputStream();
is.read(buf);
is.close();
c.close();
180デフォルトの名無しさん:04/01/25 15:22
キーイベントでちょっとお聞きしたいのですが、
現在

/** キー押下イベントが発生した時に呼ばれるメソッド */
protected synchronized void keyPressed(int keyCode) {
if(gameState != GAME_PLAYING ||
(gameState == GAME_PLAYING && isPaused)) {
//ゲーム中ではない、又はゲーム中で一時停止中の場合はreturn
return;}
int gameCode = getGameAction(keyCode);
switch(gameCode) {
case LEFT://左キー押下時
for(int i = 0;i < 8;i++){
doLeft();
try{
Thread.sleep(50);
}catch(InterruptedException e){}
}
       以下上下右が入ります。
              }
}
/** キー押下状態の時に繰り返し呼ばれるメソッド */
protected void keyRepeated(int keyCode) {
keyPressed(keyCode);
}
という様に拾っているのですが(do〜は移動描画をしています)押しっぱなし状態だと
一歩動いてその後押してた方向に動きっぱなしになってしまいます。
スレッドの扱い方が悪いのでしょうか?

ご教授おねがいしまつ。

>>180
キー入力がキューイングされてるためだと思う。
keyPressed()で重い処理をすると、どうしてもキーに遅れが発生する。

keyPressed()と描画が、N:1 にできるように作れば、大丈夫とおもう。
○○キーは押されてるの?放されてるの?テーブル を作って
押されたり放されたりしたときにフラグを上げ下げするとか?
183デフォルトの名無しさん:04/01/25 21:02
>>174
resさんきゅ
しかし、MailListenerのJavaDocを読む限りは、
recieveのSMSの種類ってやつは
通常ステーション着信
緊急ステーション着信
グリーティング
スーパーメール
リレーメール
スカイメール
ウェブ着信
しか無いんだよ
実機で試してみると、skyMailの着信通知のときは
スカイメールが帰ってきてるみたい
なんか、そもそものアプローチが何か間違ってる?
>>183
そもそものアプローチというか、何がやりたいのかわからんのだけどなぁ。
一応整理しておくと、
・RingStateListener
→(ユーザーへの)着信通知(端末側での呼出音鳴動など)の開始、終了の際に呼び出される。
・MailListener
→端末にメールが着信した場合に呼び出される。
・TelephonyListener
→端末に音声着信した場合、電話が切れた場合に呼び出される。
185デフォルトの名無しさん:04/01/25 21:47
>>183
済まん、用語の使い方が間違っていたよ>おれ
知りたいのは、SkyMailを送信した後の「配信確認」というやつです。

配信確認の通知もreceived()に来るみたいなんですが、
その時のSMSの種類がスカイメールみたいなので
困ってます
という話でした(^^;
>>180
MIDPじゃ、Keyイベントはすぐに処理を終わらせないといけない。
50msecを8回も待つとかやっちゃダメ。

Vなら以下のメソッドを使うのがいい
DeviceControl#getDeviceState( KEY_STATE)

それか、 >>182 のいうようにKeyPressed/KeyReleasedイベントで方向フラグを立てる・下げるをやって、
別スレッドでそのフラグを参照しながら描画するか。


>>185
実機使って実際にイベント起こして、
int detailの値を調べてみるしかないのでは。
そもそもDocに載ってないから、返ってくる値の保証もないだろうけど。
(時間や日付によって違う・機種によって違う、など)
ボーダホン用のエミュレータってどこを探せばありますか?
189デフォルトの名無しさん:04/01/27 14:39
Vアプリでhttpconnectionを使うアプリを作成中です。
通信相手は自分で立てた外部アクセス可能なサーバで、
エミュレータからはうまくいったのですが実機からはダメでした。
これは、やはりサーバの設定に問題があるということなのでしょうか?
以下、仕様&ソースです。
190189:04/01/27 14:42
サーバ
・Tomcat+java servlet
実機
・SH-52
191189:04/01/27 14:43
//ソース
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import com.jblend.micro.io.*;
import java.io.*;

public class httpTest2 extends MIDlet implements CommandListener
{

private Form myForm;
private TextField tf;
private Command cm1,cm2;

private String formStr;

private final String URL = "http://smlsgrp.u-aizu.ac.jp:8080/test/servlet/saveDataServlet2";
private HttpConnection conn;
private InputStream in;

int ch;
StringBuffer result;
192189:04/01/27 14:45
public httpTest2() {
inithttpTest();
Display.getDisplay(this).setCurrent(myForm);
}

public void inithttpTest() {
formStr = "Input File Name";

myForm = new Form("HTTP TEST");
myForm.append(formStr);
tf = new TextField("File Name",null,10,TextField.ANY);
myForm.append(tf);
cm1 = new Command("送信開始", Command.SCREEN, 1);
myForm.addCommand(cm1);
cm2 = new Command("終了", Command.SCREEN, 2);
myForm.addCommand(cm2);
myForm.setCommandListener(this);
}
193189:04/01/27 14:46
public void commandAction(Command c, Displayable d){

int i;

if( c == cm1 ){

if(tf.getString()==null){
formStr = "Please Input File Name!!";
}else{
try{

i=5;
result = new StringBuffer();

conn = (HttpConnection)Connector.open(URL+"?name="+tf.getString()+"&data="+Integer.toString(i), Connector.READ, true);
conn.setRequestMethod(HttpConnection.GET);
in = conn.openInputStream();
while ((ch = in.read()) != -1) {
result.append((char)ch);
}

in.close();
conn.close();

}catch(Exception e){
}
}

}else if( c == cm2 ){
194189:04/01/27 14:47

destroyApp(false);
notifyDestroyed();

}
}

// エントリポイント
public void startApp() {
}

// アプリの一時停止
public void pauseApp() {
}

// アプリの廃棄
public void destroyApp(boolean unconditional) {
}

}
195189:04/01/27 15:52
//サーブレット
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException{

String fileName = req.getParameter("name");
int data = Integer.valueOf(req.getParameter("data")).intValue();

try{
res.setContentType("text/plain");
DataOutputStream dout = new DataOutputStream(new FileOutputStream(dir + fileName, true));

dout.writeInt(data);

OutputStreamWriter osw =
new OutputStreamWriter(res.getOutputStream());
PrintWriter pw = new PrintWriter(osw);
pw.print("true");
pw.flush();
pw.close();

dout.close();

}catch(Exception e){
}
196189:04/01/27 15:53
あ、URLもそのまま書き込んでしまった・・・・
Vってポートの指定(:8080とか)あるとエラーになった と思う。
198デフォルトの名無しさん:04/01/27 20:45
EZ端末での現象なのですが、アプリをダウンロードするページを開き、
アプリをダウンロード。※ダウンロードは成功。

その後に、ダウンロードしたぺージに戻りたいのですが、
なぜか、全然別のページに飛んでしまいます。
(EZWebのTopページだったり)

ダウンロードページは下記のような記述をしています。
<a href="device:data/dnld?url=http://www.aaa.com/appli/download.cgi&name=aaa.kjx&size=123&disposition=devkdj2&title=テスト">ダウンロード</a>

なにかわかるかたが、いらっしゃいましたらおしえてください。
そうそう。Port80しか繋がらないね。
これが意外と不便。
200189:04/01/28 21:14
>197,199
レスありがとうございました。
mod_jk2でApacheとTomcatを連携させることで解決しました。

ついでに質問なんですが、
「連続的なデータを携帯アプリからサーバに送ってそれをservletがファイルに書き込む。」
みたいな処理をさせたいのですが、この場合streamを使うとうまいこといきません。

携帯のほうで
for(){
conn = (HttpConnection)Connector.open(URL+"?file_name="+xxxxx+"&data=xxxxx", Connector.READ, true);
}
のようにしても、途中で途切れてしまいます。

何かよいお知恵はありませんでしょうか?
URLの制限があったような。
202デフォルトの名無しさん:04/01/30 14:09
QVGAで画面自動拡大されたアプリって、文字サイズはどうなんの?
Vはまだいいんだがauの方で文字がでかくなりすぎるんだが・・。
文字も画像もそのまま拡大されるはず。
どなたか神の人に、激しくお伺いしたい。

VodafoneのC4アプリを書いてて、大分大きくなってきたので、噂のjargで縮めようと思ったのですが、
適用後のjarの挙動が変わってしまうのです。

スプライトの扱いが面倒だったので、そこだけ本体とは別クラスにしたのですが、
その別クラスの中にあるfor(int i=0; i<10; i++)みたいなベタなループが無限ループ化してしまって…。

こんなことって、あるもんなんでしょうか。

javac -encoding SJIS -g:none -O -target 1.1 -bootclasspath C:\V-appli_SDK_101\lib\stubclasses.zip src\*.java -d class
preverify -classpath C:\V-appli_SDK_101\lib\stubclasses.zip;.\class AppName
preverify -classpath C:\V-appli_SDK_101\lib\stubclasses.zip;.\class Main
preverify -classpath C:\V-appli_SDK_101\lib\stubclasses.zip;.\class Sprite
jar cfm bin\AppName.jar bin\MANIFEST.MF -C output .
java -jar jarg.jar -j2me-prev preverify.exe -j2me-cp C:\V-appli_SDK_101\lib\stubclasses.zip bin\AppName.jar

みたいなバッチを書いてビルドしてるんですけど…。
AppNameがMIDlet継承、Mainが実際の本体クラス、Spriteがスプライトの取り扱いクラスです。
うまくいかないのは漏れが童貞なせいですか?


ついでに、pause〜resumeの流れの中で、たまにPhraseTrackerがレジュームをサボりやがって
音が復元しないで止まってしまうのも、漏れが童貞なせいですか?
auのはPhase3.0でも、データフォルダからの画像読みだしは公式CP
じゃないとムリですか?
表示できればいいのでImageオブジェクトで十分なのですけど、
Phase2.5ではそれすらできなくて鬱。
>>204
jargのバグかもよ
バイトコードの最適化を切ってみそ
207デフォルトの名無しさん:04/02/01 03:06
>>203
自分のアプリで使ってみたよ
上の行をそのままDOS窓から叩いてみた
70kが68kになった
画像が多かったから、あまりお徳では無かったよー
動作は特に支障なし
ちなみに、童貞は卒業済み
208デフォルトの名無しさん:04/02/01 03:08
追伸
スプライトは使っていない(実は使ったこと無い)
forループは満載
C出身なので、クラス分けも盛大にやってる
>>207
おれも使ってみよう
ちなみにまだ卒業してません(もうすぐ30歳)
>>209
魔法が使えるようになるまでもう少しだね。
211デフォルトの名無しさん:04/02/02 05:15
UDPパケットを送ることはできますか?
そもそもTCP/IPどころか、httpしか対応してないような。
>>204
retroguardじゃだめなの?
214デフォルトの名無しさん:04/02/02 22:01
アプリ動作中に携帯電話本体の終了ボタンを押すと、
ソフトキーのボタンが利かなくなってしまうのですが
どのように対応すればよいのでしょう?
215204:04/02/03 02:32
遅レスだけど魔法使えるようになりますた。
もとい、>>206氏の指摘どおり -noboc でバイトコード最適化切ったら動くようになりました。
他のオプションもひとしきりためしたけど、動作が変わったのは -noboc だけですた。
似たような構造のほかのプログラムにも jarg かけたけど、普通に動いちゃったし、レアケースなのかなあ。
とにかく、マゾでありがとうございます。

ついでに 7zip かけたら、トータル 30KB が 25KB くらいまでダイエットされました。
漏れの童貞もらってやってください。
やっぱjargのバイトコード最適化にはバグがあるって事か…
ProGuardとかに乗り換えた方がいいのかな?

それと、7zipを使う場合はアーカイブするファイル数に注意
昔使ったとき、N503(4かも?)でアーカイブするファイル数が多いと起動出来なかった記憶がある

DTはイラネ。適当にその辺に捨ててくれ
不法投棄になりそうなら、業者に引き取ってもらえ
MIDPやろうと開発環境の準備を始めました。Vodafoneです。
でもどうしてもSun ONE Studio4 Mobile Edition と
VodafoneエミュのIDE統合ができない。
http://zdn.zentek.co.jp
のサポートからダウンできる資料を参考にやってみたけど。
この通りやって実行すると「メインクラスがない」とか怒られて
うまくアプリが動作しない。何を勘違いしているのだろう。
だれか出来た人います? JBuilderではどうでしょう?
218217:04/02/05 01:46
補足。エミュを自分で立ち上げて実行すると上手く動く。当然か。。。
219デフォルトの名無しさん:04/02/05 09:19
>>216
メインクラスがないって言われるのは、
きちんと大抵はCLASSPATHが通ってないか、
そんな理由ではなかったか?
220217:04/02/05 14:11
>>219
どうやらそのようです。マニュアル通りにやるとDOSプロンプトから、
java -cp c:\J-PHONE-SDK\bin\jbmidp.jar;c:\J-PHONE-SDK\lib\stubclass.zip;c:\WTK104\lib\midpapi.zip com.zentek.jam.ControlPanel c:\test\test.jad
と呼ぶことに相当するようです。すると
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
と例外が多数発生。
どうやら、javaVMにクラスパスを渡すのに失敗してるようです。
javaVMのヘルプにはクラスパスは ; で区切れと書いてあるのですが。
最初は ; の前後にスペースを入れるのかと思ってましたが、
入れると不正な処理が発生(汗

結果としては
java -cp c:\J-PHONE-SDK\bin\jbmidp.jar com.zentek.jam.ControlPanel c:\test\test.jad
とやると通るようなので、そうなるようにIDEを設定したら上手くいきました。
うーむ謎だ。エミュが起動すればよいから、これで良いのですかね?
221217:04/02/05 14:20
そしてIDEの設定にある、起動クラスパスとクラスパスの違いがよく分からない。
これらはIDEから使わないのか?なんで2つあるんだろう。
222デフォルトの名無しさん:04/02/06 12:22
VodafoneのC4端末でPhraseデータを読み込もうと思っています。
どっかで、Phrase()のコンストラクタにbyte配列を渡すとうまくいく、とあったんだけど
できない・・

InputStream in = getClass().getResourceAsStream("/test.mmf") ;
int size = in.available();
byte[] b_data = new byte[size];
in.read( b_data, 0, b_data.length) ;
in.close() ;
Phrase p = new Phrase(b_data);

size は0が返ってきてしまう・・
それで、pはnullだと・・
どこに問題があるの?

P4端末だと「com.jblend.media.smaf.phrase」を使用して問題なく動作したんだけどな・・
InputStream#available()は常に0が返ってくるからだろ。
javadoc読めよ
224222:04/02/06 13:08
>>223
すまん間違ってた・・

byte[] b_data = new byte[1000];
in.read(b_data, 0, b_data.length);
in.close();

Phrase p = new Phrase(b_data); <<-- ここ

ここで、Phrase:checkfailedって言われて落ちる・・

十分な長さの配列宣言してるのに。


225デフォルトの名無しさん:04/02/06 14:14
>>224

in.readで指定したサイズ分が読めるとは限らないので
戻り値に-1が帰ってくるまで読み続けるのが良いかと。
こんな感じか?

boolean bQuit = false;
int offset = 0;
byte[] b_data = new byte[1000];
while(bQuit!=true)
{
  int readSize = in.read(b_data, offset, b_data.length);
  if(readSize == -1)
    bQuit = true;
  else
    offset += readSize;
}
in.close();
227244:04/02/06 14:55
>>226 resサンキューです。

どうも、byte配列には読み込めてるみたい。
Phraseのコンストラクタに渡しているところで、データのチェックが失敗しているみたい・・
なんでだろう?
>>227
読み込むファイルのサイズと、バイト配列のサイズが一緒じゃないとエラーになるぞ。
230227:04/02/06 18:57
>>229
そうかと思ってやってみたんだけど、エラーになるなー。

バイナリエディタで開いてみたら、208Byteだったんで、やってみたけどダメだった・・

mmfファイルってC4端末で読めるんだよね?
SMAF Phraseって、.spfじゃないのか?
>>230
.mmfはAudio Phraseだよ

Audio Pharse再生できるのはP型以降、よってC4型では再生不可かと
233230:04/02/06 23:00
231,232>>
え!?mmfってAudioPhraseなんだ!
スマン、入り口が間違ってた・・
みんなサソキュ。
MediaPlayerを介さずにVアプリで使える画像ってPNGの256色だけ
と理解していたのだけど違う?
フルカラーのjpgやPNGを動かしたりできるかな?
なぜか
Image img = Image.createImage("/test.jpg");
g.drawImage(img, 0, 0, Graphics.LEFT | Graphics.TOP);
とやると、P4型エミュだと画像が表示されるのだが。(WirelessToolkit だと無理
これって公式な動作?
235デフォルトの名無しさん:04/02/08 00:48
初心者ですが、お願いします。m(_ _)m
ezplus(Java)で、HttpConnection (cgiファイルに対してGETリクエスト)
を利用して日本語のテキストを取得したいんですが、文字化けしてしまいます。
(通信は上手く言ってるようなのですが)

どこをいじればよいか色々調べたのですが、分からないのでどなたか教えてください。
というか、なにを調べたらいいかもよく分かりません。

推測ですが、『文字コード』という文字を解釈する約束みたいなのがあって、
その約束を上手く守れてないからでしょうか?
だとしたら、Java、cgi、どちらのコードに問題があるのでしょうか。
それとも見当ハズレの推測でしょうか?

ちなみに、英数字では思い通りの結果が得られます。
宜しくお願いいたします。m(_ _)m
236235:04/02/08 01:19
それから、IEで取得した場合は正常に日本語が表示されています。

宜しくお願いします。
237235:04/02/08 04:49
なんどもすいません。
CGIはパールです。
>>235
shift-jisしか駄目なはず。
IEでエンコードがどれになってるかを調べて、shift-jisになって
なかったらCGIが原因でしょう。
jcodeなりで変換してから出力しましょう。
239235:04/02/08 12:07
>>283さん
どうもありがとうございます。

ところが
今IEで確認したのですが、
(表示)->(エンコード)
シフトJISになってました。
>>234
WTKはJPEG未サポートだったはず

>>235
その部分のソースコードさらしてみ?
241デフォルトの名無しさん:04/02/08 15:32
俺はネットから画像(jpeg)を↓のように(途中は省く)して取得してるが。

image = Image.createImage(b_image, 0, b_image.length);

あかんのか?
MIDP1.0では、PNG形式をサポートしなければならない、としか決まってないと思うた。
JPEGでも動くし、動くならそれでもいいような、、、
243デフォルトの名無しさん:04/02/08 15:40
出来る限り、バグの元は取っときたいので、上と掛け合ってみよう。
>>235
文字列化するときに、SJISを指定してる?
デフォルトがSJISなので無指定でもOKだった気がしないでもない
なので、変換をやってないと思われ
バイト列にSJISのデータを読み込んで、変換すればヨロシ
詳しくはCLDCのAPIマニュアルのStringクラスを参照の事
246235:04/02/09 02:09
>>244さん、>>245さんありがとうございます。m(_ _)m

ご意見を参考にして必死で考えたつもりなんですが、
次のようなコードを書くことしか出来ませんでした。

//受け取った最初の文字列
String oStr;
/* oStrを受け取る処理がありますが省略 */

//Shift_JIS の文字コードのバイト配列に変換(という意味なんでしょうか?)
byte[] b = oStr.getBytes("SJIS");

//bをShift_JISコードを指定して文字列に変換
String nStr = new String(b,"SJIS");

ここまでやってみたのですが、やはり文字はほとんどが"?"(バイトをそのまま出すと"63"になりました)でした。

全く見当違いなのか、惜しいところまで行ってるのかも分かりません。
出来ましたらぜひ更なるご教授をお願いいたします。
247235、246:04/02/09 02:21
ちなみに、
getByte(String)
String(byte[],String)
で、文字コードを指定する引数は以下のものを試しましたが、
”SJIS" 以外、全て UnsupportedEncodingException が返されます

"SJIS",
"Shift_JIS","EUC_JP","EUC_JP" (この3つは例外が返る)
あ、最後は
"EUC-JP"でした。。
249235:04/02/09 03:12
>>240さんの発言を読み落としてました。あつかましいですが、さらさせていただきますm(_ _)m

1.Perl-CGIのコード : ez_sample.cgi

#!/usr/local/bin/perl

$title = "ez_sample";

&printData(); #このサブルーチンの呼び出しのみ

#表示する文字列を取得して、その長さを求める
sub printData(){
 $text = &getText();  #表示する文字列の取得
 $len = length($text); #文字列の長さ(i-mode に必要)

 print "Content-type: text/html\n";
 print "Charset: Shift_JIS\n";
 print "Content-length: $len\n";
 print "\n";
 print "$text";   #本文の出力
}

sub getText(){
 $text = "<HTML>\n<HEAD>\n\t<TITLE>$title</TITLE></HEAD>\n<BODY>\n";
 $text = $text."日本語のサンプル<br>\n";
 $text = $text."A sample in English.\n";
 $text = $text."</BODY>\n</HTML>\n";
 return $text;
}
250235:04/02/09 03:22
続いて Java の該当メソッドです
test 1/4

 private boolean test(){
  System.out.println("データ受信");

  String url = "http://hpcgi2.nifty.com/zubora/ez_sample.cgi";
  HttpConnection hc = null;
  DataInputStream di = null;
  String res = null;
  byte[] bs = null;
  String newString = null;

251デフォルトの名無しさん:04/02/09 03:23
  try{
   hc = (HttpConnection) Connector.open(url);
   di = new DataInputStream(hc.openInputStream());
   int ch;
   while((ch = di.read()) != -1){
    res += (char)ch;
   }
  }catch(Exception e){ }
  finally{
   try{
    if(hc != null)
     hc.close();

    if(di != null)
     di.close();
   }catch(Exception e){ }
  }
  
  System.out.println("受信直後のデータ");
  System.out.println(res);
252235 test 3/4:04/02/09 03:24
  try{
   bs = res.getBytes("SJIS");
  }catch(UnsupportedEncodingException e){
   e.printStackTrace();
  }
  
  try{
   newString = new String(bs,"SJIS");
  }catch(UnsupportedEncodingException e){
   e.printStackTrace();
  }
  
  System.out.println("new String(getByte(res,\"SJIS\"),\"SJIS\")");
  System.out.println(newString);
  
  return true;
 }
253235 test 4/4:04/02/09 03:25
以上です。失礼しました。m(_ _)m
なんか難しく考えすぎな気が…

>while((ch = di.read()) != -1){

じゃなくて、バイト列に読み込んで、それを変換する

byte[] b = new byte[size];
for (int off = 0; off < size;) {
int r = di.read(b, off, b.length - off);
if (r == -1) break;
off += r;
}
String nStr = new String(b,"SJIS");
255七誌:04/02/09 22:09
C4仕様でPhraseクラスのpause(),resume()メソッド
を使いたいのですが、なぜか一時停止から再生
を始めると、最初から再生が始まってしまうのです。
どうしてでしょうか?
256235:04/02/09 23:42
(ToT) おぉーー出来ました。。。m(_ _)m
>>254さん、ありがとうございました。
今度コーヒーでも奢らせてください。(*´∀`)

そのほかの皆さんも本当にありがとうございました。
>255
resumeした時はフレーズデータの先頭から再生される仕様
Vアプリのエミュでフォントのサイズが小さくならんのですが。

class DrawCanvas extends Canvas {
private static Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);
protected void paint(Graphics g) {
g.setFont(font);
g.setColor(255,255,255);
g.drawString("てすと", 15, 135, Graphics.TOP | Graphics.LEFT);
}
}

こんな感じです。Font.SIZE_SMALLのところを変えても変化がありません。
Fontはpaintの外で作れとか書いてあったからそうしてます。
何か間違ってる?
259258:04/02/11 13:14
上の通りだと文字が白で見えないな。どうでも良いことですが。m(__)m
260デフォルトの名無しさん:04/02/12 00:38
単に、キャリア側で複数のサイズのフォントを
用意して無いからじゃない?
>>258
機種ごとにフォントサイズが決められてて、
一部機種はsmall/large/mediumともすべて同じサイズに規定されてたりする。
なんで実質いじれないと思った方がいいかも。
サイズ一覧はdp.j-phone.comサイトにあったハズ(今サイト落ちてるみたい)
262七誌:04/02/12 10:11
>>257さん、ありがとう(^o^)/
では、Vアプリで一時停止・一時停止からの再生
はどのようにすればよいのですか?
停止ポイントを覚えておいて次回はそこから再生?
MIDIだと途中で止めて状態保持したまま再開って面倒なんだけど
これはどうなんだろ
264七誌:04/02/12 11:32
あつかましいと思われるかもしれないですが、
具体的にどのようにすればよいのでしょうか?
>263
phraseでの途中からの再生は無理です、常に先頭からになりますね。

>264
C型ではあきらめましょう、P型だと一時停止した場所から再生可能な様ですが。

ここら辺は全てVアプリ開発ガイド 開発編に載っている情報です。
266七誌:04/02/12 16:36
読んでいなかった・・・。
すいません、ありがとうございました。
267七誌:04/02/12 17:30
Sun ONE Studio 4 update 1, Mobile Edition
を使って、Vアプリを開発したいのですが
コンパイルエラーを起こして、先に進めません(;_;)
どうすればよいでしょうか?
エミュレータ設定もちゃんとしたはずなのに・・・
268デフォルトの名無しさん:04/02/12 19:18
J-SH-010でPNG画像の透過が
ぜんぜんきかないのですが、
C4型端末ってこういうものなんでしょうか。

過去W型端末のアプリを作った場合にもPNGの透明色
が上手く抜けないことがありましたが。。。。

それともPNGファイル側で何か工夫すべきなのでしょうか?
知恵をお授け下さいー;;
>268
フルカラーPNGとかいう事はないよね?
256色じゃないと抜けないような
>>268
フルカラーのヤツだと、透過部がグニュグニュした青いのになるw(P型
早いとこサポートしてほしいよな。
C4はPNGの透過が使えない
機種依存だっかたも

http://news6.2ch.net/test/read.cgi/appli/1072876113/
>ゲームの類は、Vodafoneへの移植がいつもネックになります。
>特にC4アプリ。
>
>他のキャリアならdrawImage一発で済むところに
>透過PNGが使えない機種がありやがるばっかりに
>サイズに制限のあるスプライトをやりくりし倒すことになる。
>面倒くさいったらありゃしない。
>>268
C型はpng透過は使えません
スプライトにするしかない
当方ezです。
http通信に関する詳しいmidpサンプルはないでしょうか。

やろうと考えていることは画像のダウンロードです。

一応探しては見て以下のサンプルは見つけたのですが
はじめて見る物ばかりで何をしているのか分からず困っています。

ttp://cgi.sinsen.org/midp/#d5
ttp://www.geocities.jp/morioka/computer/java/ezplus/lecture02.html

複数の画像を得るのに最低限必要なことを教えていただけないでしょうか。
テキストか何かの形で一気にダウンロードしてレコードストアに記録しておけばいいことは分かるのですが。
274デフォルトの名無しさん:04/02/13 10:39
269-272

レスありがとうございます。
やはりパレットPNGでも機種依存ですか・・・。
とりあえず、それらの機種は無視するか、
スプライト使う方向で考えてみます。
275デフォルトの名無しさん:04/02/13 18:18
ezアプリなんですが、WEBブラウザからダウンロード済みのアプリを起動することはできるんでしょうか?
iアプリの <A ista="#aaa" href="">起動</a> と同じ事なんですが。
MIDP1.0で動くコンボボックスのクラスライブラリどこかにありませんか?
当方業務アプリつくってるんだけどコンボボックスないとかなり不便。
>>276が昼休みに作ってフリーで公開すれば
みんな幸せに!
>>276
ListをIMPLICITで動かせばComboBoxの選択画面のようなインターフェースを作れる。
でも、そんなListをFormのItemから呼び出してやるような方法は、なさそう。
GroupChoiceをIMPLICITでFormに追加してComboBoxのようにできれば、望みのようなことが出来るんだろうけど。

オレは、Stringを追加したIMPLICITなListから、
選択されたらさらにIMPLICITなListを表示して選ばせ、元のListに戻る、
てな感じで片づけちゃったけど。

DateFieldやTextFieldと混在させたいなら、がんがってItemからComboBoxを自作しる。
279デフォルトの名無しさん:04/02/14 05:53
canvasクラスのキー入力で使うフィールドで
「クリア」ボタンって、何を使えばいいでしょう?
ちなみにCanvas.KEY_CLEARは無かった。
今は実測値を使っていますが、格好悪いんで。
こんな感じ final int KEY_CLEAR= -2147483646;
Vアプリです。
>>279
仕様上、0〜9、*、#、ソフトキー1〜3以外のボタンは未定義。
実際に使えるかどうかは別として。
>>265
PhraseTracker、たま pause からの復帰に失敗することない?
P4、P5では正常に動作するのに、C4だけ一時停止の後、音が戻らないことがある。

何が原因で起こるかわからないんだけど、エミュレータ上でも起こるので
機種依存の動作じゃないみたいだし…。

startApp() だの pauseApp() だの中では何も特別なことはしてないし、
Vodafone側の主張によれば、自動で戻るはずなんだけど…。

仕方ないので、あらためて
startApp() 内でPhraseTracker#play()、
pauseApp()内でPhraseTracker#stop()を呼ぶようにして
無理やり回避できるのは確認したんだけど、これっておかしいよね?
これやっちゃうと、P4、P5でも最初から再生しなおしになっちゃうし。

不思議すぎる…。
282デフォルトの名無しさん:04/02/14 16:40
>>279
さんきゅ
やっぱりそうかぁ

Vアプリのエミュでは、メモとマナーボタンが無いので
カーソルキーの斜め下でそれぞれ代用してみた
皆はどうしてる?
それとも、Vアプリ固有実装は避けてる?
283276:04/02/17 00:25
>>278
ありがとう。

>オレは、Stringを追加したIMPLICITなListから、
>選択されたらさらにIMPLICITなListを表示して選ばせ、元のListに戻る、
>てな感じで片づけちゃったけど。

やっぱそれしかないよねー 
がんばって自作します。

Vアプリって勝手サイトでは配布できないんですか?
-2147483646 って 0x80000002 なのかね
>>279
EZアプリでは 0 だったから割とスッキリだったけど
じゃあ if ( keyCode < 1 ) みたいなのどう?
287デフォルトの名無しさん:04/02/17 08:34
>>284
うわっ気がつかなかったよー
ある意味 -2 じゃん
>>285
あってる
てか、負の2の補数は、絶対値のビットをすべて反転させてたものに1加えるって覚えとけ。
289デフォルトの名無しさん:04/02/18 01:13
AUって、png表示できる?

これが本題なのだが
J-phoneで動いてるアプリって、jblend.*とかj_phone.system.*を
全て排除すればAUでも動きますか?
でもって、ぶっちゃけ後は何すれば良い?
>>289
>>289
CLDC+MIDPの範囲内では、基本的に同じ。
仕様を見比べてみると解るが、双方とも似たような拡張APIがあったりするので、
ものによっては、1日もかからずに移植&テストが終わったりすることもある。
負の2の補数
( ´,_ゝ`)プッ
>>289
むしろpngが主戦力でつ
293289:04/02/18 08:51
>>291
えっと、透過も平気ですか?

いま開発キット回りを見てきたけど、意外とまんどくせ
拡張子が謎だし
まぁ、ちこっと頑張って移植すれば、ユーザが2倍になるから
やってみるかな
>>289
http://www.saturn.dti.ne.jp/~npaka/midp2/faq.html

クレームも2倍だから、ほどほどに頑張るべし
295デフォルトの名無しさん:04/02/19 10:56
Sun ONE Studio 4 update 1, Mobile Edition
でアプリ作っているんだけど、絵が読み込めないんだよね。
原因のわかる人いたら、教えてね。
296:04/02/19 11:55
256KB P5型のエミュレータが公開されました。
http://www.dp.j-phone.com/dp/
298289:04/02/20 18:05
>>296
やっと、されたね!!
誰か使った人いる?
でもって、P4型エミュと一緒のPCにインストールしても
競合しないで使えるもん!?
先日SUNのSCP-Jを取ったばかりの初心者なんですが
一度携帯のアプリを作ってみたいなと思って検索したりしたのですが、
ヒットしませんでした。
Vアプリを作るにあたって参考になるサイトがないのですが
どなたかご存知ないですか。
iアプリはある様なんですが。

なにぶん貧乏なのでネットで参考になるHPがあれば良いのですが・・・
よろしくお願いします。
>>299
http://www.itmedia.co.jp/mobile/0203/08/n_j1.html
正直、いちからちゃんと説明したいいサイトがない。
やっとP5エミュ公開か、おそすぎんだよまったく
フォントサイズが指定できるようになってたり。

それより、サンプルコードが嬉しい。
サンプルコード内にJad更新Ant Taskがあった。
304デフォルトの名無しさん:04/02/21 05:56
今から作ろうとは思うけど
SH53でPDA並に使えるPIMが欲しい
299です。
>>300さん
レス、サンクスです。
サイトは無いですか。
実はこの本どうかなって思ってるんですがどうでしょうか。
「JBuilder MobileSet―携帯Javaアプリケーション開発ガイド」
ご存知の方おられますか?
iアプリならサイトもちらほら見かけるのになぁ…
P5 キタ━━━━━━(゚∀゚)━━━━━━!!!!
出てる予感がしたからみたら本当にあった。。
>>301
まぁ遅いよな
P5型のエミュが出たので早速StorageConnection 使ってみたんですが、上手くいかんです。
StorageConnectionからInputStreamを取得しようとすると

at com.jblend.security.jscl.SecurityManagerImpl.checkPermission(+67)
at com.jblend.io.j2me.storage.Protocol.openInputStream(+11)
と怒られます。なぜ?
308307:04/02/22 23:28
jad内に
MIDlet-Application-Security: Y
が必要だったようです。どうもすみません。
309デフォルトの名無しさん:04/02/23 10:19
SpriteCanvasに文字描くときって文字もスプライトデータで用意しなきゃだめ?
ドキュメントを読めば解るが、仮想画面にはGraphicsクラスのメソッドで描画できる。
フレームバッファにはスプライト以外は描画できない。
Vアプリって、スプライトと3Dって同時に使えないの?
これは、C4だけじゃなくて、P4でもダメ?
>>311
だめです。
けち〜
314デフォルトの名無しさん:04/02/24 13:28
質問させてください
V従量版のウィザードリィの表示文字ってなんであんなに小さいんでしょう?
サイズSMALLでもあんなに小さくならないですよね?
>>314
スプライトデータに文字を用意してそれを表示してるから
316314:04/02/24 14:04
やっぱり・・面倒なことしてるなぁ
>>315
ありがとうございます
>>305

>実はこの本どうかなって思ってるんですがどうでしょうか。
>「JBuilder MobileSet―携帯Javaアプリケーション開発ガイド」
>ご存知の方おられますか?

その本はわかりませんが
「Java2ME MIDP ゲームクリエーターズガイド」
http://www.amazon.co.jp/exec/obidos/ASIN/4774114707/ref=sr_aps_b_/250-6819675-5916216
という本はなかなかよいですゾ。
「Javaの勢いは止められない」――Sun、モバイルJavaで一連の発表
http://www.itmedia.co.jp/news/articles/0402/24/news026.html
305です。
>>317さん
レスありがとう。
一回本屋で探してみますね。
とにかく凝ったものが作りたいとかではなくて、
プログラミングを少し覚えたので何か作ってみたいと
思って携帯のアプリでもどうかなと思いまして。
Vアプリを自分で作ろうと思ったのですが中々良いサイトや
本が見つからなくて困ってたんです。
>>319
Java自体も初心者?
SH08で120x120で256のPNGが表示できないんだけど、
色数減らせば出るんだけど、サイズ制限とかなんかあるのですか?
229です。
>>320さん
SCP-Jを取ったばかりの初心者です。
javaの勉強自体は携帯に限らず探せば結構参考になるサイトが見つかるかも。
324299:04/02/26 20:23
そうですね。
でも何となく携帯アプリに興味が沸いてきて
作ってみたくなったので…
>>322
SCP-J取れるくらいの予備知識があれば十分
326289:04/02/26 22:43
>>321
12kだか14kくらいが上限だと思う
あと、16色以下が出なかったような気がする
>>326
なるほど、たしかに表示できるサイズはそれより小さかったです。
しかし、J-SH07のヒープの少なさはなんなんだろうか、
これじゃ、なんにも出来ないよ。
>>324
そういう意味でなくて携帯用のmidpも基本は一緒だから勉強は普通のjavaでやってアプリ作れるよと。
329デフォルトの名無しさん:04/02/28 13:39
前スレの824さんが言ってた
Canvas上での長文の改行の仕方なんですが、ビルドがうまくいくのに、実行できません。
長い文を表示するときに、フォントの幅から表示できる一列の文字数を割り出して、
それをsubstring()を使って表示していくんですよね。
なんでうまくいかないの??
330329:04/02/28 22:09
解決しました
331デフォルトの名無しさん:04/02/29 01:53
>>330
こーゆー時は、解決法も書くべし
332デフォルトの名無しさん:04/02/29 15:32
ezアプリのソフトキーのラベルの変更ってどうすればいいんでしょうか?
if(mode == 1){
talkingCommand = new Command("決定", Command.SCREEN, 1);
menuCommand = new Command("MENU", Command.SCREEN, 2);
}else if(mode == 2){
talkingCommand = new Command("確認", Command.SCREEN, 1);
menuCommand = new Command("中止", Command.SCREEN, 2);
}
this.addCommand(menuCommand);
this.addCommand(execCommand);
とするとラベルがどんどん増えてしまうし、最初に
this.removeCommand(menuCommand);
this.removeCommand(execCommand);
とするとそこでとまってしまうのですが…
333デフォルトの名無しさん:04/02/29 15:32
ezアプリのソフトキーのラベルの変更ってどうすればいいんでしょうか?
if(mode == 1){
talkingCommand = new Command("決定", Command.SCREEN, 1);
menuCommand = new Command("MENU", Command.SCREEN, 2);
}else if(mode == 2){
talkingCommand = new Command("確認", Command.SCREEN, 1);
menuCommand = new Command("中止", Command.SCREEN, 2);
}
this.addCommand(menuCommand);
this.addCommand(execCommand);
とするとラベルがどんどん増えてしまうし、最初に
this.removeCommand(menuCommand);
this.removeCommand(execCommand);
とするとそこでとまってしまうのですが…
334332:04/02/29 15:43
連投な上にコマンド名違うし。。。
talkingCommandはexecCommandに脳内変換お願いします。
>>332
毎回インスタンス生成するのは間違い。

CommandをMIDletやDisplayableのコンストラクタで生成して、インスタンスフィールドに保持しておく。
あとは、ソフトキーのラベルを変更したいときに、add/removeすれば良い。
336332:04/02/29 18:14
>>335
毎回インスタンスを作るなっていうのはわかるんですが、
Command.getLabelはあるけどsetLabelはないですよね?

↓考え方としてはこんな感じかな、と思うんですが…
if(mode == 1){
execCommand.setLabel("決定");
menuCommand.setLabel("MENU");
}else if(mode == 2){
execCommand.setLabel("確認");
menuCommand.setLabel("中止");
}
this.removeCommand(menuCommand);
this.removeCommand(execCommand);
this.addCommand(menuCommand);
this.addCommand(execCommand);
>>333
execCommand1 = new Command("決定", Command.SCREEN, 1);
menuCommand1 = new Command("MENU", Command.SCREEN, 2);
execCommand2 = new Command("確認", Command.SCREEN, 1);
menuCommand2 = new Command("中止", Command.SCREEN, 2);

 :

this.removeCommand(execCommand1);
this.removeCommand(menuCommand1);
this.removeCommand(execCommand2);
this.removeCommand(menuCommand2);
if(mode == 1){
 this.addCommand(execCommand1);
 this.addCommand(menuCommand1);
}else if(mode == 2){
 this.addCommand(execCommand2);
 this.addCommand(menuCommand2);
}

こんな感じか
配列にしたり、上手いこと管理しないと破綻しそうだが
参照とか使えないのかな?(←良くわかってない)
338332:04/02/29 20:17
なるほど、って思ってやってみたけど
this.removeCommand(execCommand);
がそもそも通らない罠_| ̄|○
エミだけど例外がでません…

今のソースはこんな感じ。
長くなるんでmenuCommandは消しますた。
execCommand1 = new Command("決定", Command.SCREEN, 1);
execCommand2 = new Command("確認", Command.SCREEN, 1);
execCommand = execCommand1;

 :
try{
 System.out.println("--changeLabel");
 this.removeCommand(execCommand);
 System.out.println("remove command");
 if(mode == 1){
  execCommand = execCommand1;
 }else if(mode == 2){
  execCommand = execCommand2;
 }
 this.addCommand(execCommand);
 System.out.println("add command");
}catche(Exception e){
 System.out.println("ERR" + e);
}
339332:04/02/29 20:19
訂正:エミ→エミュ

で、実行すると--changeLabelが出力されたところでとまります。
例外はキャッチできません。
340332:04/02/29 21:51
どうやら毎回起こってるわけではなくて、
ソフトキーを押した瞬間に問題が起こってるみたいです。

で、だめもとで実機でテストしてみたらうまくいきました。

が、イマイチすっきりしないので、もう少し追ってみます。
その処理は、commandAction()メソッドの中でやってるの?
それから、synchronized を使ってたりする?

たぶんだけど、デットロックが起きてるようにみえる。
342332:04/02/29 22:09
commandActionの外です。
自前のpaint関数で、modeに変化があったときに
上記の処理をしてました。

で、その自前のpaint関数はsynchronized使ってます。
それって、関数にsynchronizedを付けてるか、Canvas(?)に対してsynchronizedを使ってません?
たぶん、synchronizedを外してみれば、ちゃんと動くと思う。
344332:04/02/29 22:47
自作描画関数についてたsynchronizedをはずして
public synchronized void myPaint(Graphics g)
から
public void myPaint(Graphics g)
にしてみましたが、症状変わらずです。

synchronizedの記述がここ1箇所だけなので、
canvasに対しては使ってないと思います。

というかsynchronizedがどういうものか把握していませんで…
不勉強ですみません。
345343:04/02/29 23:02
synchronizedは、複数のスレッド間で、同時に動いてはマズいコードを排他するものです。

ほかに synchronizedを使ってないとなると、止まってしまう原因が分からない。
ちなみに、その自前の描画関数は、Canvas#paint()から呼んでるんだよね?
346332:04/02/29 23:23
>ちなみに、その自前の描画関数は、Canvas#paint()から呼んでるんだよね?
そうです。

こちらでも追っているのですが、手詰まり気味で…
今手元にあるのがW11Hだけなので、
明日にでも他の端末でも試してみることにします。
そもそも本当にデッドロックが問題なのか?ていう問題もあるし。
漏れとかはペイント側は完全に変数の解釈->描画だけに集中していて
ペイント側が実アプリ側には影響しないはずのドキュメントビュー構造を
徹底したにもかかわらず、どうも描画のリクエストが変なタイミングで
飛んできて絵が(たまに)壊れる等の理由で、結局
本体、描画コールバック双方を完全にSynchronizedした
同期型のプログラムで決着つけた。

機種依存の性か、音の出方に若干影響がでちゃったんだけど、
それはまあさておき。

基本的にペイント側は、元から出来上がってる情報を噛み砕いて
絵にする作業に徹してる限り(例えばペイント側が本体ルーチンに
参照される変数やオブジェの加工をするとかでない限り)、
デッドロックって起きようがないはずなんですよ。

こと、双方からsynchronized外して(挙動こそ変われど)デッドロック
状態を脱しないなら、スレッドが悪さしてる可能性を一度捨てて
コード全体を再検証したほうがいい。

時間が許すなら、各コンポネントの依存関係図とかも、ちゃんと書いた方がいいすよ。
ロックが起きる状況=アトミック(不可分な処理)の中でさらに他のコンポネントにチョッカイかけてるとか
アトミックと定義されてるオブジェクトの生成結果ではなく、途中の生成物に期待してる
オブジェがいるとか、その類なんだから。
Canvas#paint() はそもそもsynchronizedだったと思う。
349343:04/03/03 10:32
>>347
多分デットドックかなと。>>338 で removeCommand() の前にある printlnが表示されて、
後にあるprintlnが表示されてないらしいので、removeCommandで動かなくなってる。

>>348
synchronizedしてる対象が問題で、synchronized自体が問題なのではない。


MIDPの仕様的には許されるはずだけど、
(いまは忙しいので後日)VMの動作を確認しておきます。
VodafoneのV601SHの利用可能なオーディオデコーダ(オーディオトラック)
の数っていくつでしょうか?
まだエミュだけで開発してるもので。すみませんが。
初期値の入った配列を作りたいのですが char[] table = {・・・}; とすると1文字ずつ
初期化するコードが出るため、Stringで代用することを考えました。
しかし、String table = "\u0001\u0002・・・・";といった感じで初期値を与えたいのですが、
一部の値(\u000aや\u0022等制御コード?)があると、コンパイルできません。
こういった値を含んだ場合、文字列として初期化するにはどうしたらいいでしょうか?
>>350
MA3入ってる携帯は全部同じじゃないのかな?
40和音を信じるなら、10トラック持てる勘定だけど…。

漏れはC4でしか開発したことないので、よくわからんぽ。
実機持ってる神はいねーっすか。
>>350
オーディオフレーズのこと?
だったらトラックは1つ。メロディフレーズは4つ使える。

で、質問。BGMを12和音(3トラック分)で再生したいのだが、
メロディフレーズを重ねて再生するとズレませんか?
>>351
ググりなさい

\\, \n, \r, \", \t
(\u005c, \u000a, \u000d, \u0022, \u0009)
>>353
AudioPhraseTrackはだめぽみたいだけど、
PhraseTrack使えば、4音ごとの同期再生はできるよ。
例えばこんな。


PhrasePlayer p = PhrasePlayer.getPlayer();
PhraseTrack pt = new PhraseTrack[p.getTrackCount()];

for(int i=0; pt.length>i; i++)
{
pt[i] = p.getTrack();

pt[i].setPhrase(4音区切りのPhrase);
pt[i].setVolume(PhraseTrack.DEFAULT_VOLUME);//お好みで。
}

//先頭のトラックに他のトラックを同期させる
for(int i=1; pt.length>i; i++)
pt[i].setSubjectTo(pt[0]);

//先頭を再生させると、先にsetSubjectTo()しといたトラックも同時に鳴り出す
pt[0].play();


pt[i]に設定するPhraseは、YAMAHAのSMAFツールでもって、4音刻みでspfを用意すれ。
356350:04/03/05 16:37
>>352 353
サンクス。オーディオは1個ですか。ちょっと残念。
質問です。Vodafoneでアプリを作っていたところ、とある実機でエラーが起きました。
サーバーからbyte列を持ってきて、String型に収めて表示するものなのですが、
テスター曰く文字列が長過ぎるのでは?とのこと。

Vodafone実機の中で、String型の長さの限界がある機種ってありますでしょうか?
>>357
あったんじゃないかなあ。
ちなみに、持ってきてるbyte数は?

HTTPConnection con = (HTTPConnection)Conncter.open("URL");
DataInputStream in = (DataInputStream)con.openInputStream();

byte b[] = new byte[(int)con.length()];
in.read(b);
String str = new String(b);

みたいなノリだとしたら、どこの何が例外だしてるかで
随分状況が変わってくるよ。
例外捕まえて表示するダイアログみたいなもの用意すれば
実機でも充分検証できるっすよ。

それと、T06、N04の端末固有バグについては調べた?
どっちも送信側の問題だけど、その結果受信がおかしくなるってのも
ありそうな話だしさ。
V601SHなんですが、SDカードに保存した40KB以上の画像を
StorageConnectionで扱えますか?
どうもルートが「データフォルダ」という位置になっており、
それ以下は40KB以下のファイルしか使えないように制限がかかっているようですが。
何か回避方法ありませんか?
Vodafoneで、PNG画像はIndex形式なら8bitも4bitも使用可能でしょうか?
大丈夫だと思うよ。
ただ、PNGの展開には機種固有のバグが多いから、より詳しくはTips.pdfを
Vodafoneの開発ドキュメントサイトから落としてきて、よく読んどいた方がいい。
362357:04/03/09 09:53
>>358
アドバイスどうも。
原因はただのヒープオーバーでした。
文字列でオーバーするほど逼迫してたようです。
>>362
ありがち(w
治ってよかったね。
364デフォルトの名無しさん:04/03/10 22:30
>>362
ヒープオーバーって、どーやって検出したの?
mallocみたいなのあるん?
>>364
実際に問題になれば例外飛ぶし、
Runtime#freeMemory()から残りのヒープ量も取得できるよ。
366デフォルトの名無しさん:04/03/11 13:09
Vアプリで、実機にダウンロードしたアプリの名前を
日本語にする方法を教えてください。

jadファイルのMIDlet-NameをUTF-8にしたり、
ファイルをUTF-8にしたりしてみたのですが、うまくいきません。
>>366
UTF-8にするので正解。
具体的にはMIDlet-NameがUTF-8になっていれば、
ちゃんとアプリ名でも2バイト文字は表示される。
ただ、16バイト=8文字が限界。
エミュレータが指摘してくれた気もするが、超えてしまってても
中途半端に通ってしまったような記憶もある。
いずれにせよ、規約は守らないと動作が保証されない。

何かの拍子で、化けた状態のファイルをさらに別のエンコードで
保存したとかでもって、文字列自体がぶっ壊れ状態になってるとかも、よくある話。
「最初からファイルをUTF-8で開いて」文字化けしてないか確認してみよう。

詳しくはVアプリ開発ガイドの概要編に載ってるJADファイルの項を読むべし。


それでも駄目なら、MIDlet-1 とかの左端の名前も日本語にすれ。
MIDletの構成が1個だけのアプリでも、こっちを見に行く端末が
ある様な気がして仕方ない。
368デフォルトの名無しさん:04/03/11 15:04
>>367
ありがとうございます。
漢字とカタカナはうまくいったのですが、ひらがなだけが駄目なようです。
369デフォルトの名無しさん:04/03/11 16:50
ひらがなも解決しました。
沖**司って何者?タダのアフォ?
沖田総司とMIDPって、何か相関があるのでしょうか。
掃除してたら誰かが起きたんだろ
373332:04/03/17 04:24
遅まきながら、ラベルの件確認してきました。
5301Tでやっても同じように動作しました。
んで、自作のpaint関数の外にだしたらエミュでも正常動作。

removeCommandとaddCommandを実行するとrepaintが呼ばれるので、
デッドロックが発生してた、って認識でいいんですかね

で、そこまではいいとして。
removeCommandしてaddCommandすると、
どうしてもラベルが一回点滅します。
多分repaintが走ってしまうせいだと思うので、
paintを空実装にしたいんですが、
iAppliでいうgetGraphicsみたいなことは
ezではできないんでしょうか?
Vアプリの圧縮ツール知っている人がいたら教えてください。
Java Blenderみたいなの。
>>373
removeCommandとaddCommandと実行したからといってpaintするとは限らないみたいですよ。(5303と5403ではしないと確認)
ラベルが点滅するのはGraphicsとは別だと思う。addなどが呼ばれるとコマンドの並び替えみたいなの起こるので、
addとremoveの順番変えると並び替え少なくすむ場合もあるけど全く点滅しないのは無理だと思う。

MIDPのCanvasにgetGraphicsは無いけど、
一回paintの引数のGraphicsを適当な変数つけて扱ったら?・・と思ったけど
Graphics exg;
〜paint(Graphics g){
 exg=g;
 略
}
exg.draw〜
これではexgに変更があった時毎回必ず実際の画面も変わるという訳じゃなさそうなので使えないかも。
376デフォルトの名無しさん:04/03/17 15:11
vアプリで、
iモードのオブジェクトタグを使ってのHTMLからのアプリ起動のようなことはできますか?
>>374
Vアプリ専用なのは知らないが、このスレに出てきた汎用のツールは
jarg
retroguard
ProGuard

http://imodoki.sourceforge.jp/manual/shrinker.html
によると、ProGuardとjargを組み合わせて使うといいらしい

jargにはバグがあるので注意>>215
>MIDPのCanvasにgetGraphicsは無いけど、
>一回paintの引数のGraphicsを適当な変数つけて扱ったら?・・と思ったけど
>Graphics exg;
>〜paint(Graphics g){
> exg=g;
> 略
>}
>exg.draw〜
>これではexgに変更があった時毎回必ず実際の画面も変わるという訳じゃなさそうなので使えないかも。

公開されてるアプリでに、同じことやってる例は結構あるっぽい…
試した限り、エミュでも何でもこれで動作がおかしくなった事は一度もないけど、
本来これが動くかどうかって、実装依存だよな。

ごく小さなアプリ内で、プログラムが描画部と本体の2つに分かれてしまうのは面倒なんだけど、
潔くあきらめた方がスッキリするよ…。

その際、paint() をカラ実装にするよりは、paint()の中身の書き直しを考える必要があるかも。
ことVアプリに言えることなんだけど、suspend 時に仮想画面の中身が失われてしまうので
仮想画面含めた全画面の再描画の必要があるか、部分書き換えで済むかを
本体側で管理してやる必要が(主に速度面から)出てくるはず。
再描画の必要なし(描画コンテキストに更新が無いのにpaint()が呼ばれた)なら、
何もせずに抜ける、とか仕込んでやろう。

それでも出てくるラベルの点滅を抑えるには、ラベルのaddとremove自体を呼ばない様にするのが一番の薬。
ラベルのチラツキはどうしようもないでしょ。MIDPの仕様が腐ってるせいだから

getGraphicsに関しては、こんな感じじゃ駄目か?
Canvasのチラツキ防止やレジューム時の再描画で手を抜く為に、オフスクリーンイメージを使ったような記憶が…

offscr_img = Image.createImage(120,120);
g = offscr_img.getGraphics();
  :
paint(Graphics onscr_g){
 onscr_g.drawImage(offscr_img,0,0,?);
}
>>378
paint部のGraphicsを保存すれば、paint外でも描画可能。
これは全ての機種で動作確認済み。
paint外で保存しておいたGraphicsで描画を行い、paintを呼び出す。そうするとpaintが呼ばれた瞬間描画が反映される。

ただしi-modeのようにメインスレッドを無限ループさせていると、電源キーによる終了反応がにぶくなる罠。
まぁ鈍くなるだけなんで、はっきりいってスピーディーにアプリつくるならこれはよい方法。

>>ラベルのちらつき
どうしようもない。こればかりはあきらめれ。
381378:04/03/18 01:09
>>380
いや、俺もつい手軽さに負けて、そうしたくなる…つーか、そうさせてくれ!と叫びたくなるし、
実際にエミュでも実機でも、普通に動いちゃうんだけどさ。

こうなんていうの?仕様的?に、これって許されるのかしら、と。
そういうレベルの話です。廃。
MIDPドキュメントより。
Canvasのpaintの引数のGraphicsは、paint内部以外では不定な扱いらしい。
Operations on this graphics object after the paint() call returns are undefined.
Thus, the application must not cache this Graphics object for later use or use by another thread.
It must only be used within the scope of this method.

てか、すべての実機で問題ないんなら、オレも使おうかな・・・


ところで、このスレで質問に正確に答えているような人たちみな、実機確認云々の話がすぐに出てくるけど、
それって手元に実機すべてあるってこと?ってことはメーカ・公式サイト系の人も多いんかな。
わたしゃヘタレ日曜プログラマです。
Vアプリ終了時にRecordStoreへの保存を行いたいのですが、「Vアプリ開発ガイド」によると、
C4型端末では「destroyApp()内の処理は実行しない」と書かれています。
電源キー押下による強制終了への対処など、どのように実装すれば良いでしょうか?
>>383
あれ、困るんだよねえ。

強制終了については、あきらめる…が一番かな。
レコードストアへの保存処理は、アプリケーションの終了後に
フラッシュが行われるせいか比較的高速なので、アプリ内の
要所要所でマメに保存処理をすることで、無理やり対処しちゃたよ、漏れは。
385デフォルトの初心者:04/03/18 10:59
携帯のマイクからの入力音声を拾って処理するってできないの?
VodafoneのP5端末なら、音声認識ってできるみたいなんだけど、
認識じゃなくって、音拾うだけって。
そんなのできない?
386332:04/03/19 06:39
>>375-382
えーと
・ラベルのちらつきはどうしようもない
・getGraphicsはpaintのGraphicsを使うことで代用可能(仕様上は保障されてない)
・addCommandやRemoveCommandではrepaintは呼ばれない(呼ばれるとは限らない?)
ってことですね。
でも3番目のやつだとエミュでデッドロックっぽい動作が発生した説明がつかない…
エミュだとadd/removeでrepaintが呼ばれるのかな?
その辺は暇になったら検証してみます
ともかくありがとうございました。

>>382
一応他キャリアでは公式もやってます。
>>384
強制終了されても問題ないように作るしかないですか。
とりあえず、対象データが更新されるタイミングで毎回保存処理を行うようにしました。

#そもそも、RecoredStoreって起動時に変数に読み込んで操作するのと、
#直接操作するのとではパフォーマンス的にどれ程の違いがあるんだろ…。
#変数名=レコード名でIDは常に1としているので、構造上は問題ないし。
Phase3.0用ezアプリで使えるpngに
色数(256色以下)問題以外の制限ってあるのでしょうか?

ダウンロードしたpngを
 imageBase = Image.createImage( dData, 0, size );
って感じで、.Imageにしているのだけど、
画像によって、
 Illegal.ArgumentException:srcData:[B@1a4cfaa
と言われます。

直前でdDataを書き出してみたら正常なpngデータだったので
ダウンロードはできている感じなのですが、
例外報告のsrcDataとは異なった値でした。

createImageに入れたときに何か起きている
みたいなのですが・・・。

createImageが通る画像のときはsrcData=dDataになっています。
おはこんばんちわ〜。初めまして。

今J2MEでこんなプログラム作っているんです。
1、ネットで碁を打ってSGFファイルをテキストデータとして保存。
2、メール本文にその内容をコピペして相手にメール転送。
(この時、相手のj-phone携帯にそのV-appli(ソフト)が入っている。)
3、受信した相手側がメールの本文をクリップボード(?)にコピー。
4、受信した相手側がV-appli(コレのこと)を起動。
5、V-appliがクリップボード(?)を読み込んで、表示。
要は携帯版SGFビューワです。

クリップボード(?)を読み込む
クラスやメソッドのことがいくらググっても出てこないんです。
どなたかJ2MEで携帯のクリップボード(というのでしょうか?)
を読み込むjavaソースを教えてください。よろしくお願いします。
Vアプリを作ってみたいんですが
参考図書とかありますか?
>389
JSCL1.2.0(P5型端末)限定なら、メールデータを直接扱えるようですが。

>390
Vアプリの基本。
ttp://www.dp.j-phone.com/dp/tool_dl/java/tech.php

MIDPでできることをきっちり学習したいならこの本。
アスキー出版局「J2ME ワイヤレスJavaプログラミング」
ttp://www.ascii.co.jp/pb/ant/j2me/

とりあえず何か動く物を作りながら…ならこの本。
技術評論社「Java2ME MIDP ゲームクリエーターズガイド」
ttp://www.gihyo.co.jp/books/syoseki.php/4-7741-1470-7
>>389
クリップボード機能は経由Javaでは使えない。
>388
制限はないハズ。
それはエミュレータのピープサイズが足りてないんだと思う。
変更してみ。俺もそれで一時間ぐらいはまってたから。
>>393
制限無しなのですね、ありがとうございます。
スッキリした。

エミュレータは
JAVA_HEAP: 2048000
に設定してあります。
240*240*8の画像を数枚生成するぐらいなので、
多分足りていると思うのですが……

A5403CAでも試したのですが、
画像一枚分だけ多くImageが作れて同じエラーが出る_| ̄|○
>>393
ガベージコレクタ、してるよね?
System.gc()
ってやつ。一枚生成するごとにしたほうがいいと思うよ。
あと画像はロードすると思った以上にメモリを食うから要注意だよ。
途中まで作れるってトコをみるとピープだと思うんだけどなぁ。
396かぜたそ:04/03/20 22:42
>>391
ありがとうございます
本は早速注文してみました

公式からエミュを落としてインストールしてみたんですが
起動しようとすると一瞬DOS窓が出てすぐ消えるだけでぜんぜん起動できませんorz

便乗ですが
vodafoneの独自機能(バーコード読み取り等)を扱う場合は
コンパイラはどうなるんですか?エミュの中に組み込まれてるんですか?
>>396
Vアプリ独自のAPIは「j-phone-sdk\lib\stubclasses.zip」に全部入ってる。
コンパイル時のクラスパスに指定すればちゃんとコンパイルできるよ。
もっとも、MIDP-1.0基準で作ればJ2MEWTKでビルドもパックもチェックできるし、
ezの方にも簡単に移植できるけどね。

ttp://homepage1.nifty.com/cotton100/jphonejava.htm
↑ちと日付が古いが、(1)〜(5)までが参考になると思う。
開発環境集めたら「midp 入門」あたりでググってみるとよさげ。
>>395
生成するごとガベージコレクトしてみたのですが、
やはりダメでした。

で、データを少し減らし、
リソースに収まるようにして画像生成を試したところ、
IOException例外でInsufficient memory メッセージが出ました。
395のいうとおり、メモリ問題だったようで。

Imageを一気に作り貯めせずに
必要なときに生成していく方法に切り替えます。
ありがとうございました。
399ディフォルトの名無しさん:04/03/21 12:48
338 :261 :04/03/21 00:07 ID:N1qHKmT4
よろしくお願いします。yournet規制まだぁー?(チンチンAA略
---------------------------------------------------------------------------
【板名*】 プログラム技術
【スレ名*】 CLDC+MIDP+携帯電話用Javaスレッド part 2
【スレのURL*】 http://pc2.2ch.net/test/read.cgi/tech/1070858996/
【名前】389
【メール欄】sage
【本文*】↓
>>391さん
情報ありがとうございます。

詳しくググッてググッてググりまくったところ、
寝太郎 the Webさんの所で解決しました
なんて素晴らしいページなんだと感激
携帯アプリ作ってる人は行って見ると良いと思います。
400デフォルトの名無しさん:04/03/22 20:29
Phase3.0の広い画面(240x268)を使うアプリを
うまくエミュレートする方法ってありますか?
401400:04/03/22 20:31
EZアプリの話です。
VアプリやEZアプリやでImageを生成するときに、
大量にメモリを食うって聞いたのですが、
生成し終わったImageのサイズは、
DIB換算した画像データサイズと同等ぐらいになりますか?
>>400
いっそエミュあきらめる、ってのはだめ?ケーブル使えばパケ料要らないし。
単にサイズだけの問題なら、フォントサイズさえ取得すればだいたい予想できると思います?
120×134でエミュのフォントサイズも実機の半分になるようにしたら、文字くらいしか使わないアプリなら・・。

>>402
Imageがどうメモリ使うかは機種によるみたいです。
フルカラーのファイルでもインデックス(256)くらいに落とされたりする可能性もあると思います。
5403ならヒープ1.6Mで画面の10倍くらい使えたからピクセルあたり2バイトかな?
>>400
au専用の命令を使ってなければ
ボーダのエミュでいけるかと。
質問です
合計、約6.5KBのPNG画像を10枚ほどresフォルダに入れてビルドしたところ
画像を入れる前のjarが約27KB、
入れた後のjarが約35KBになりました
計6.5KBの画像を入れて8KB増えたのですが・・

どうしてなのでしょう・・・
zipアーカイブすると何でもサイズが小さくなるハズなのか。
便利な世の中になったものだ。
もともとZIP圧縮してあるPNGを無駄に再圧縮する上、
ヘッダーやらなにやらつけまくるのだから重くなって当たり前。
408405:04/03/23 11:21
なるほど・・
>>406さん,407さん
わざわざありがとうございました
勉強します
409400:04/03/23 16:15
>>403
>>404
レス遅れてごめんなさい。
とりあえずボーダフォンのエミュでトライしてみます。
ありがとうございました。
410402:04/03/23 19:49
>>403
どうもです。うちの実機も5403だったので調べたところ、
やはり、おおよそ1ピクセルあたり2バイトでした。

これがエミュだと4バイト弱食っているようでした。
実機テストは大事だと実感。
411かぜたそ:04/03/23 20:44
>>397
アドバイスありd

相変わらずエミュが起動しませんOTL
なぜ。。。。
ヴォーダフォンから落としてインスコするだけなのになんで起動しないんだろう。。。。。
起動しない…というのとは少し違ったが、うちも起動の度に必ずサウンドレイヤが死んでたぞ。
ある日突然治っちまって驚いた。
なんか作って面白い、または便利なアプリってないかなぁ・・
>>413
Webブラウザ作れ。
需要はあると思う。
>>413
RSSリーダ。需要は大きいかと。
四択か五択ぐらいのクイズのソースってどっかにあります?
>411
 うちもEZアプリエミュ、Vアプリエミュ共に動かなかったけど、
原因はJAVAがうまく動いてないような感じだった。
起動せずにアイコンを右クリック・プロパティ、
リンク先の部分の
-jar前を変えると、うまく動いた。自分でインストールしたj2se(だっけ?)のアドレスに変える。
↓こんな感じ。
「c:\jdk1.3.1\bin\javaw.exe(←ここまでを変える) -jar jdmidp.jar」
的はずれなこと言ってたらごめん。
418かぜたそ:04/03/24 20:42
>>417
ありがとうございます
試しにjavaw.exe経由でjdmidp.jarをファイルを開いたら英語表示で無事開けました

ファイルの関連付け関係がおかしいみたいですね。。。。
419デフォルトの名無しさん:04/03/30 14:19
J2ME Wireless ToolKitで、ボーダフォンのC4型アプリをコンパイルしようとしているんですが通りません・・・。
C4用のstubclasses.zipを読めてないからだと思うのですが、どうすればよろしいのでしょうか?
>>419
>>419
俺は諦めたw
設定ファイルで何とかなりそうなんだが、面倒くさいし、アレの出来がよくないので、
Antとかmakeとか使う方が早いと思われ。
>>419
stubclasses.zipでググって自分で調べてみよ。
他のツール使わない解決方法はあるぞ。
>>419-420
このへん
http://www2s.biglobe.ne.jp/~yuuki_ki/java_basic2.htm

オレは、面倒なんでclasspath環境変数に設定してる。
 画面より大きい画像を読み込むのって、特に問題ないですか?
メモリ不足になる場合をのぞいて。
424419:04/03/31 08:30
>>420-422
ありがとうございます!
結局、WTKは使わず、コンパイル→事前検証→jarのバッチ処理を自分で書いて解決しました。
WTKを使えないのは面倒ですが、しょうがないですね・・・。
425デフォルトの名無しさん:04/04/01 00:33
FixedPointでsinの使い方を教えてくれーー!!

cで言うところの、y=sin(x*rad)みたいなのって、どう書くもんなの?
y=FixedPoint.sin(xr);と書くとsinがstaticぢゃないぞーとか言われたし。。。
>>425
いちいちあげないと質問も出来ないのかお前は?
まず>>1を読め。
話は、それからだ。
>>423
よみこむのはだいじょうぶ。

ただし画面に表示できるかは、また別問題。
>>425
その調子だと、FixedPoint以外の使い方にも問題が出てませんか?
まずはJAVADOC嫁って感じだが、FixedPoint.sin()は、staticじゃないってのは、そのまんま。
少なくとも

y = y.sin(xr);

なら通るだろうに。
…なんでsin()がstaticじゃないのかは理解に苦しむが、単にオーバーヘッド考えてのことなんだろうな。
つーか初めてVodafoneのFixedPoint周辺のドキュメント読んだが、これ…酷いな…。
>>427
 機種によっては表示できないのもあるのかなーって思ったんですが、
やっぱりあるんですかね。A5401だと、QVGAが出ませんでした。
A5404Sでは出ました。機種によって扱える大きさが決まってるんでしょうかね。
一つにまとめた方が容量少なくなるから、よくやるんですが、まずいのかな・・。
VアプリのC4用Canvas3DのsetClipRectの幅と高さの指定っておかしくない?
xとyが0じゃないと指定したサイズでクリッピングされないのだが。
俺だけ?
431デフォルトの名無しさん:04/04/03 10:40
>>428
レスサンキュー
Javadocを読んでも漏れには意味不明でさっぱりだったので
質問させて貰いました
staticじゃない時点で、ウワーンでした
で、y=y.sin(xr)でコンパイルは通ったけど、結果が変かも
そもそも漏れのsinの使い方が変なのかもしれんので
ちと算数の勉強してきまつ
ありがちなミスとしては、FixedPointのコンストラクタに渡すのは、
整数の65536倍の数であるということとか。
VアプリのC4型で
データフォルダから画像ファイルを呼び出して編集、保存等はできますか?
>>433
仕様上無理です。
高レベルAPI(Form)で通信の開始時に、StringItem.setText()で
テキスト表示したいのですが、再描画されずに通信が開始されてしまいます。
高レベルAPIにおける再描画の条件について、どなたかご存知ありませんか?
あるいは、参考資料はないでしょうか?
>>435
If the Form is visible on the display when changes to its contents are requested by the application,
the changes take place immediately.
That is, applications need not take any special action to refresh a Form's display after its contents have been modified.
とか書いてあるから、特に何もしなくても良い気がする。

もしダメなら、ItemStateListener使うとか。
>>435
commandAction()とかで通信なんかしてないよね?
スレッドを立てて、そっちで通信してるんだよね?
438435:04/04/08 10:33
commandAction()で「通信開始」と表示した後、サーバとHTTP通信を行い、
Exception発生または受信したデータが不正であれば「失敗」と表示し、
そうでなければ「成功」と表示しているのですが、まずいでしょうか…。
439437:04/04/08 10:48
>>438
commandAction()の中で、StringItemの変更とHTTP通信の両方をおこなったらダメよ。

commandAction()中のForm操作は、commandAction()を抜けないと反映されない。
なので、スレッドを別に作って、そっちにやらせないと期待通りに動作しない。
というか、commandActionとかのリスナーで時間のかかる処理全般をしない方がよい。
441435:04/04/08 11:21
>>439
ありがとうございます、そういうことでしたか。
iアプリの方ではsoftKeyReleased()内で同様の処理を行い、期待通りの
動きをしていたのですが、仕様が違うのでしょうかね。
通信は別スレッドにして、結果の表示もそちらから行うようにしてみます。
442かぜたそ:04/04/12 22:46
1テキストボックスから
getText()で値を取り出した場合返り値はstring形なんですよね?
たとえば
a=TB1.getText();
b=TB2.getText();
c=a*b;

と言う感じではできないんですよね
この場合c=(int)a*(int)b;
って感じで良いんですかね?

初歩的な質問でスマソ
>>442
それだとコンパイルすら通らんだろう。
ここではInteger#parseInt(String s) にてintに変換するのが正道。
上の場合は

a=TB1.getText();
b=TB2.getText();
c=Integer.parseInt(a)*Integer.parseInt(b);

aおよびbに数字や - 以外が入ってると
NumberFormatExceptionが投げられるから注意がいるっすよ。

つーわけで、詳しくはjavadoc嫁。
TextField.NUMERICいれときゃ大丈夫。たぶん。
445デフォルトの名無しさん:04/04/14 10:58
VodafoneのC4端末でサーバからテキストを取得させたいんですが
エミュ上ではうまくいくものの実機だとIOExceptionが出てしますうんですが
cgiの方は↓のような感じで

print "Content-type: text/vnd.sun.j2me.app-descriptor\n\n";
print "APDATATEST";

アプリの方では↓のように受信させてます。
HttpConnection connection = (HttpConnection)Connector.open(url, Connector.READ, true);
connection.setRequestMethod(HttpConnection.GET);
InputStream in = connection.openDataInputStream();
// 読み捨てる
byte[] headbytes = new byte[6];
int size = in.read(headbytes);

ByteArrayOutputStream bout = new ByteArrayOutputStream(1000);
byte[] bytes = new byte[1000];
while((size = in.read(bytes)) > 0)
  bout.write(bytes, 0, size);
in.close();
connection.close();

String Text = bout.toString();

エミュ上では問題ないんですが、どこかマズイ点などありますでしょうか?
ゲートウェイではじかれてるんじゃない?
コンテントタイプを変えてみたら?
MIDPの読みは「みっどぴー」でよろしいか?
ださっ…
MID-Profileだからなあ。
MIDPをまいどぷーと呼ぶスレ

ってスレ立ててもいい?
エム愛ディーピーと普通に読む
みどぅぷ
と読んでました。
453デフォルトの名無しさん:04/04/19 16:40
VホンのP型端末ってスプライトの数に制限ありますか?
454デフォルトの名無しさん:04/04/19 17:44
>>453
256個
しかし、ウィザードリィ#1の文字がスプライトだとすると、
他の画像はどうやって格納してるんだ?
ひらがなカタカナアルファベットでゆうに150くらい行くのだが・・・
全部スプライトにする必要はないし、スプライトのデータを変更すればいいだけのような。
むしろスプライト使わないし。
457デフォルトの名無しさん:04/04/20 01:08
>>456
例えば、縦シューとかで背景スクロールさせるとき、スプライトのマップチップを
並べてスクロールさせてるけど、他に良い方法あるかな?
458デフォルトの名無しさん:04/04/20 02:16
キーの押しっぱなしを判定するには
keyPressed
keyReleased
を使うしかないのでしょうか。
keyRepeatedはあまりにも遅いんですが・・・
>>458
拡張API使うとか。
460デフォルトの名無しさん:04/04/20 04:19
P型のスプライトって特に256個って指定ないんじゃ・・・
少なくとも開発ガイドには上限の表記がない。
みなさん開発環境は何を使用しているのですか?

ずぼらな私は、Eclipseを使用しようと苦戦中です。
どこかのサイトからVodafoneプラグインをインストールしたのはいいのですが、
コンソールにはコンパイルsuccessfullとでるにもかかわらず、
エミュレータで実行しようとすると、
エミュ自体は立ち上がるのですが、
何も表示されないまま、
すぐにウインドウを閉じてしまいます。

XML,Antの知識が殆どないことが
原因でくだらんミスな感じがする。

それともjargが良くないのか?

やっぱりコマンドプロンプトにもどれってことだよな・・・
やっぱり秀丸+コマプロだなぁ。
デバッグはボーダ公式エミュ。
>>460
javadocには書いてるぞ。
SpriteCanvasのコンストラクタ
>>461
EclipseのVアプリ用プラグインでコーディングして、ビルドはWTK使ってる。
拡張API使う場合はEzのツールでビルド。
465デフォルトの名無しさん:04/04/20 16:35
>>461
わしゃPeggyProのマクロじゃ。
でも、エミュレータ起動はVアプリエミュを手動で。
Vアプリだけど、スプライトのデータって、どうやって持たせてる?
ベタデータで持たせてると、圧縮されること考えてもやたらファイルサイズが
でかくなりそうなんだけど・・・
1画素あたり1バイト。
スプライト一つあたり8x8=64なので、64バイト。
最大値の256個あるとして、16384バイト=16Kバイト
>>466
余計なこと考えずにベタでもってる。
どうせZIPの餌食だし、ちゃんと束ねとけば呆れるほど縮まるよ。
469デフォルトの名無しさん:04/04/20 22:03
>>458
Vなら、DeviceControlerから情報を取得して
別に作ったキーバッファに状態を保存しておけば?
ついでに押されてる時間も保存しとくと便利。
>>466
オレも、生のファイルでそのまま保持。
zipで1/3くらいになってるから、まぁこれで十分かなっと。
画素数がしれてるし、工夫したところでそこまで小さくなるとも思えん。
http://www.saturn.dti.ne.jp/~npaka/kvm/javapress/coolskiers/genkou.html
のSpriteConvertを使ってる。


コマンドラインから、jadファイル指定してVアプリエミュを起動とかできないの?
UEI仕様とかワカラン
調べてみた。
emulator.exe -Xdescriptor:****.jad
で起動出来るみたいだなぁ。
472デフォルトの名無しさん:04/04/21 16:35
超初心者でつ。教えてください。
データベースを検索し結果を表示する機能について調べていました。
通常携帯からURLを打ち込んで、例えばホテルの予約案内を検索する場合は
Javaアプリをダウンロードして実行しているわけではないですよね?
あれはJavaで作成したものではないんでしょうか?
データベース検索はサーブレット+JDBCがイイみたいな解説を
見たものですから・・・
よろしくおねがいします。
>>472
それは、サーバー上で動いているので、携帯電話と直接関係はない。
所詮フロントエンドくらいの機能しか持たせられないよ。
474472:04/04/21 16:50
>>473
ありがとうです。
そのフロントエンドをJavaで作成しVアプリにするメリットって
あるんでしょうか?
ふつうにURL打ち込んで接続するのと違いがあれば教えてください。
>>474
モノによるけどなあ。。。
グラフィカルな表示ができる(ように作れる)とか、Webのフォームで扱いづらいような検索フォームができる(ように作れる)とか、
476472:04/04/21 17:19
>>475
ありがとうでつ。
477470:04/04/23 01:25
>>471
thx、見事に起動しますた、しかもエミュコントロールパネルなしのエミュ窓のみで。
こりゃ便利、Makefileオンリーでいけそう。
*.jadに関連づけもしときますた。
エロい人、ホントにありがと
端末ごとの画面解像度の違い、どうやって吸収してる?
479デフォルトの名無しさん:04/04/26 11:22
>>478
解像度ごとに違うアプリ作る。
480デフォルトの名無しさん:04/04/26 16:27
どっかで、アプリのコンテストやってないかな?
481デフォルトの名無しさん:04/04/27 17:16
EZアプリ Phase3ではフォルダーへの書き込みアクセスも可能になったそうですが、
SDとかメモリーカードへも読み書きできるのでしょうか?

たとえば、
String url = "datafolder://filename";
DataFolderConnection conn = (DataFolderConenction)Connector.open(url, Connector.READ);

で、メモリーカード用のurlがあるとかなのでしょうか?
482デフォルトの名無しさん:04/04/29 20:53
今、本とか見ながら独学でJAVAを勉強しています。
画像ファイルを読み込んで、表示するという単純なプログラムなのですが、
WTKのエミュでは実行できるのですが、Vodaエミュ(P5)ではIOエラーがでます。
どこが間違っているのでしょうか?ファイルが読みこめてなさそうなんですが。
[TEST0004.java] import省略
public class TEST0004 extends MIDlet {
public TEST0004() {
Display.getDisplay(this).setCurrent(new DrawCanvas()); }
protected void startApp() throws MIDletStateChangeException {}
protected void pauseApp() {}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
}

[DrawCanvas.java] import省略
class DrawCanvas extends Canvas {
private Image img;
DrawCanvas() {
try {
img= Image.createImage("/7.png");
} catch (IOException e) {
e.printStackTrace(); }}
protected void paint(Graphics g) {
g.setColor(0x00FFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
g.drawImage(img,0,0,Graphics.TOP|Graphics.LEFT); }

}
>>482
WTKで実行できて、Vodaのエミュで実行できないのは、コンパイルのミスが大半。
484デフォルトの名無しさん:04/04/29 21:25
>>483
ありがとうございます。
コンパイルミスですか。
試行錯誤してみます。
485482:04/04/29 22:01
色々見てるうちに、
読み込むファイルの拡張子が、
JAVAファイルではpng
ファイル名ではPNG
だからでした。
報告まで
Voda(P5)で初開発やってるんだが、
コンボBOXのサンプルないですか?

全くわからなく困ってます。
>>799
256kアプリver.2って・・・
某BBSとマルチで失礼します。

現在ezplus(Phase3対応)のアプリを開発しているのですが、
データストレージ、またはダウンロードどちらかの利用に際してバグが発生してしまいます。

データストレージに読み込んだ画像が、エミュレータでは表示できるのに対して、
実機では表示できないという症状です。
というのも、画像が正確に読み込めていないようなのです。

・KJXに予め含まれたリソースは、エミュレータ・実機とも問題無く表示できます。
・ストリームの入出力処理はDataInputStream、DataOutputStreamクラスを使用しています。
・ファイルをダウンロードする際、数十個ある画像ファイルを20KBごとのdatファイルに分け、
6回に分けてダウンロードしています(data0.dat〜data5.dat)。
・ストレージには最初の0〜9バイトに必要な情報を格納し、
10バイト目から画像データのバイトが格納されます。
・画像ファイルの総容量は現時点で約120KBです。
最終的には180KBくらいまで膨れ上がる予定です。
・画像の読み込みはImage.createImage(byte[] b, int off, int size)を用いています。
エミュレータでは表示されるので、offの位置などが間違っていることはないと思います。

上には全く関係のない見当違いのことも書いているかもしれませんが、
何卒ご教授よろしくお願いします。
489デフォルトの名無しさん:04/05/17 14:52
Phase3のSH-Mobile搭載機種でMP3デコードコード書いて
MP3再生とか出来ないかな?
490488:04/05/17 15:36
>>489レスありがとうございます。
MP3ですか、、、やってみます。
いろいろやってみたのですが、どうも別の場所で改めてストレージを呼び出した際、
10バイトのヘッダー情報のあとが、実機とエミュレータで1バイトずれているようです。

------------------------------------------------------
// 別ツールで作成したdatファイル(画像が入っている)を読み取り、画像の先頭アドレスを取得する
int[] imgw_GetAddressList(){
DataInputStream in;
int n;
int List[];

try {
in = Connector.openDataInputStream("storage:");

// ヘッダー情報取得(実際には何もしない。入力位置を参照するため)
byteb[]= new byte[10];
in.read(b, 0, 10);

// ここで、b[]の情報を表示したが、実機・エミュレータともに正常だった。

n = in.readShort();// 上記10バイト後にファイル数が格納されているので、それを取得
// ここでnの中身をチェックすると、実機とエミュで値が違う。

List = new int [n];// 戻り値の配列を作成

// ここで更に10バイト読み込み、それを表示させると、1バイトずれていた。
・・・
------------------------------------------------------
といった状態です。
491489:04/05/17 16:07
>>490
うぉーーまじでやってくれるんですか?
A5403CAあたりがCPU的に最強だと思います。
閉じた状態でもアプリは動き続けるようですね。
ただし、その場合はサブディスプレイが点灯しっぱなしになるので
すぐに電池がなくなります。

ヘッドフォン付けてステレオでminiSD内のMP3が聞けたりしたら
いいと思います。協力できることがありましたらどうぞ。
>>488-491
面白いことになってるな。早く気づくといいね。
493489:04/05/17 17:27
自分はJAVAのコーディング知識0です。
UNIX系の知識、ちょっと高度なWindowsの知識しかないです。
果たして役に立てるのか。。

とりあえず488氏に期待age
ライブラリ仕様を隅から隅まで見てみよう。
>>488=490
「n = in.readShort();」のところ、エンディアンの問題で引っかかってるのでは。
同じCPU上でwrite/readする分には特に意識しないが、
異なるCPU上でwrite/readするときはそれぞれのCPUがビッグ・エンディアンか
リトル・エンディアンか意識する必要がある。

readShort()は連続する2バイトを符号付きshort型整数として読み込むものだが、
01 02 03 04 … とデータが並んでいる場合、
n = 0x0102 = 258 と解釈されるか、n = 0x0201 = 513 と解釈されるかの違い。


489=493氏へ
>>488…画像の質問
>>489…488とは無関係にmp3の質問
>>490…489を488へのレスだと勘違い
>>491…490を489へのレスだと勘違い
が真相じゃないか?
でも
MP3ですか、、、やってみます。
ってかいてるじゃん。
本気でMP3考えてたけど、
も し か し て
どうあがいてもminiSD内のMP3データ読めない?
>495
Javaでは常に 0x0102 = 258 と解釈されるべき。
もしそうでないなら、バグ。
499デフォルトの名無しさん:04/05/18 03:13
質問です。
VアプリP5型エミュv1.0でFileUtilityを使おうとしてます。
FileUtility fu = FileUtility.getInstance();
fu.play("/ms/icon.png");
すると以下のようなショボーンなWinダイアログが出て、コレを閉じるとIOException(not supported)が出ます。

ネイティブ再生     ×
パス名        OK
/ms/icon.png

txtでもhtmlでもmmfでも同じのが出ます。そもそもエミュとしての機能がそんなもんなんでしょうか?
>>499
jadファイルの設定
【MD】 MP3プレイヤー 作成スレッド 【イラネ】
http://hobby6.2ch.net/test/read.cgi/appli/1084877675/
502499:04/05/19 01:58
>>500
MIDlet-Application-Security: ですか?
入れてみましたが変わりなし、そもそもFileUtilityはセキュリティ対象クラス・メソッドに指定されてませんし・・・
mmfならgetMediaPlayerから再生できるようなんですけど・・・

で、いろいろドキュメント読んでみたんですけど、
ひょっとしてFileUtility#playは動画再生のみサポートだったりします?
(開発編にあやむやに書かれてたり、Zentekサンプルがそもそも動画のみのものだったりで)
ezplusで定期的に自動でメール送信を行うアプリを作成中です。
IMAP4MailConnectionを使用して送信しているのですが、送信する時に
確認画面が出て停止してしまいます。
この画面を出さずに送信する方法があれば教えて頂けませんか?
504デフォルトの名無しさん:04/05/19 22:39
>>503

迷惑メール送信業者の悪徳協力者ですか?
死んで下さい。
迷惑メールより、MP3再生が壁にぶつかっています。
たすけてください。

問題1 5MB級のファイルをロードできるのか。
問題2 どうやってスピーカーに吐き出すか。
506503:04/05/20 00:04
>>504
おっしゃる通り、確認なしにメール送信を許せば迷惑メールに悪用できてしまいますね。
ただ、GPSの位置情報を定期送信したかっただけなんだけど、IMAP4MailConnectionは諦めます。
HttpConnectionでサーバー経由させるか・・・。

>>505
昔、Windowsでデコーダ作った事がありますが、仮に5MBのMP3ファイルを読み込めても
PCM取り出してそれを吐き出すデバイスを直接いじれる手段がないのでは?

ただ、Phase3から
・SMAF Humanoid Voiceデータ再生 他
って書いてあるからADPCMなら直接吐き出す方法があるんだと思います。
Voda用のニセ着うた変換ソフトを作りましたけど、正直、8KHzで4Bit程度じゃ
使う気もしないと思いますがw



>>506
レスどうもです。
ここは、焦点をPhase3に絞ったとしてもPCMを直接出力する手段が問題ですね。
スピーカーは糞としてもステレオヘッドフォンならそれなりの音質が得られると
思うので、何とかならないかとドキュメントあさり中です。

SMAF Humanoid Voiceってのは本体のROMに人間の声が事前に入っていて
それを再生するだけじゃなかったでしょうか?(よく覚えてないです
>>507
PCMアウトは無いよ。HVはデータをあらかじめ用意しとくか、スクリプトを使うかのどっちか。
まとめると、いくらがんばっても実現不可能ってことか?
510508:04/05/22 13:47
デコードして波形を音階に変換してHVスクリプトにすれば不可能じゃないけど、現実的じゃない。
511508:04/05/22 13:49
デコード→SMAFでもOK。
とりあえず、外部メモリからのロードは解決したみたいだが
>>511さんが言う方法って音質悪くならないかな?
ezplus JDK1.3.1推奨ってなってますが、JDK1.4つかっても問題ないですか?
文字列の正規マッチングとか、JDK1.4にいろいろ使いたい機能があるので、出来たらJDK1.4
使いたいので。
>>513
ここで聞くことじゃない。auの技術支援サイトで質問しる。
推奨でないバージョン使うんなら何か不具合が起きても
誰もサポートできないってことくらいは当たり前に受け止めとけー。
>>513
CLDC+MIDPで正規表現なんて使えないと思うが・・・
自分でライブラリなり取ってきてkjxに入れれば使えるだろうけど。
しかし、ドキュメントでJDK1.3.1推奨といいつつも、KJXツールのデフォルトパスは
JDK1.4 のものだったりする。
>>512
だからPCMアウトはねーつってんだろが。
音だしたきゃ>>510>>511の方法しかねーんだよ。
ちなみに、データフォルダやSDからファイルを読む方法もねーんだよ。
>>517
ファイル読み込めるし書き込めるよ
>>518
やり方教えて。
miniSDも読み書きできる。
V-Appliの開発したいんだけどeclipseでどうやって設定したらいいのか全然わかりません・・・
質問です。
iアプリとVアプリでの違いというのかな。
そういうのをまとめてるサイトとかってありますか?
移植等は簡単に出来るんですか?
質問します。サーバー・クライアント型でサーバーから情報をもらうアプリ(内から)の通信速度について質問ですが、
この場合は、アプリのプログラムをどう工夫しようが端末の通常の通信速度よりも遥かに遅い速度が上限として決まっている
と聞いたのですが、この認識であってますか?
また、その速度は概略どの程度でしょうか?
>>521
オレはよくわからんが、JSCL関連何か載ってる
http://www.eclipsewiki.net/eclipse/index.php?cmd=read&page=J2ME

>>523
スループットなんて何も期待しない方がいいと思う。
地下入るだけで通信切れちゃったりするし。
あるクラスからCanvasクラスにrepaintさせたい時はどのようにすればよいでしょうか?
ちょっとハッキリさせときたいんですけど、
データフォルダやSDのデータ読める(書ける)のはVアプリですよね?
EZは公式のみかと思ってたんですけど・・。一般でも可能なら教えてほすぃ。
自分なりに考えた方法ではストリーム開くときセキュリティ例外。問題はJAD?
>>526
http://www.jblend.com/release/2003/PR031222.html
sumikara sumimade yome!
ima nihongoga tukaene-yo.
>>525
repaintよびゃいいやん。
ホントにすぐにやって欲しい場合はserviceRepaints
>>526
EZじゃ無理。KDDIのPhase3用公式資料にかいてある
53038:04/05/27 08:22
>>525
Canvas#repaint()
を呼べばいい。
531525:04/05/27 18:56
解決しました。
レスありがとうございました。
> Phase1環境からサポートされるデータフォルダ連携機能(DataFolderConnectionクラス)が
> 拡張され、データの書き込みや削除が可能になるとともに、連携可能なデータ種も追加されています。

それはともかく、Phase3用エミュレータ マダー?
>>532
もうとっくにでてるよ。
>>533
出てないねえ
>>532
一時期出てたけど、今は出てないことになっとる。
だから持ってる人は持っている。取り損ねた人は・・残念でした。
536デフォルトの名無しさん:04/05/28 18:46
すみませんがちょっとお尋ねいたします。

J2MEWTK2.1を使用してRMS関連を操作するアプリを作成しているのですが、
RecordStoreのdeleteRecordメソッドを使用するに当たり困っています。

このメソッドは、RecordStore内の最終レコードしか削除できないのでしょうか?

RMS内に保存したデータを削除する際、記録した最終RecordIdを指定すると
何も問題なくデータが削除できるのですが、1とか2とかの途中のRecordを
削除しようとするとInvalidRecordIDExceptionが発生して該当Record内の
データが消えてしまいます。

それが仕様であるなら諦めも付きますが、お力をお貸し下さい。
宜しくお願いいたします。
537536:04/05/28 21:05
すみません、自己解決できました。
問題は別の部分にあり、削除自体は出来てました。

削除したRecordIDのデータを再度読み込もうとしていて
例のエラーが発生していただけでした。

どうもお騒がせいたしました。精進します。
538536:04/05/28 21:08
すみません、自己解決できました。
問題は別の部分にあり、削除自体は出来てました。

削除したRecordIDのデータを再度読み込もうとしていて
例のエラーが発生していただけでした。

どうもお騒がせいたしました。精進します。
byte[4]をintに変換するにはどうすればいいですか?
>>539
その、intが格納されているであろうbyte[4]がどうやって作られたかによる。
writeIntで書いたんならreadIntで読めばいい。
intを1バイトごとシフトしながらバラしたんなら1バイトごと逆にシフトさせながら組み立てればいい。
ただしこの場合は符号に注意。webで検索すればいくつかサンプルソースが見つかる。
541539:04/05/30 16:02
>>540
シフトする方法でやってますがどうも数字があいません・・・
もう少し調べてみます。
エンディアンが逆なんじゃないかな?
整数のバイト化を(""+INT).getBytes()でやって
逆をInteger.parseInt(new String(BYTE))でやってるけど、どうだろう。

ストリング介してだけど、楽なんで、、、
>>543
基本的に間違ってる。
LittleEndianなら、
int i;
byte b[] = new byte[4];
i = 1234; //任意の値
b[0] = i >> 24;
b[1] = i >> 16;
b[2] = i >> 8;
b[3] = i;

でバイトに変換

int j = 0;
j |= (b[0] & 0xFF) << 24;
j |= (b[1] & 0xFF) << 16;
j |= (b[2] & 0xFF) << 8;
j |= (b[3] & 0xFF);

でintにもどす。
Little Endianの必要が無いなら、>540のとおりにすればいい。
545543:04/05/31 22:03
>>544
すみません、JAVAもMIDPも初心者で見当違いなことを書いたようで。
シフトしながら読み込む事はどっかで読んだんですが、楽だから、
>>543の方法でやってたんですが、不具合がでるんでしょうか。

それとも、あまりに常識はずれな書き方ってこと?
546544:04/05/31 22:13
>>545
通常、数字を文字で表現するよりそのままバイナリで扱ったほうが
データ量も少ないし処理が高速。

この辺はJAVAとかMIDP以前の問題で、初心者用のプログラミング
の解説書とか読んだ方がいいかも。

こういうのは高級言語の弊害なんだろうなぁ・・・。
>>545
インスタンスの生成(new)と、それに伴って引き起こされるガーベージコレクションのコストは、
実行のコストが高いので気をつけるべし。
特に携帯だとCPUがへっぽこだから、気をすり減らすぐらい気をつけた方が良さげ。
548543:04/05/31 22:38
>>546-547
回答ありがとうございます。

これに限ったことじゃないんですが、明らかに汚い処理なのは
分かっていても、きれいな書き方を分かってないのでついつい、
自己流の変な方法で、誤魔化しています。

MIDPの資料って、本もネットでもなかなか見つけられくて、、、、
携帯JAVAで綺麗なソースを書くために、なにか具体的な
お勧め(サンプルソースとか、本とか)って教えてもらえませんか?

過去に読んだのは、Java言語プログラミングレッスン(結城浩)上・下
→JBuilder MobileSet携帯Javaアプリケーション 布留川 英一
→JAVA2ME ゲームエータズガイド 米川英樹(読んでいる途中)
ですが、具体的な書き方をもっと知りたいなあと思ってるんですが。
549547:04/05/31 23:27
>>548
J2ME Wireless Toolkit 2.1のサンプル
JavaOneで公開されたPDF文書

NokiaのMIDP向けドキュメント
http://www.forum.nokia.com/main/1,6566,1_0_10,00.html

Technical Articles and Tips
http://developers.sun.com/techtopics/mobility/midp/reference/techart/index.html

このあたりかな。
全部英語で、漏れにはコードだけしか読めない罠w

漏れは英語は読めないんだが
最後の一行は無視汁。
551540:04/05/31 23:47
>>539はもう自力で解決してるかもしれないけど一応書いてみる。

int→byte[]のとき
算術シフト(>>)ではなく論理シフト(>>>)を使う。

byte[]→intのとき
各byte型の値で最上位のビットが'1'の場合(負数)はそのまま左シフトしても
期待通りの値にはならない。この辺は2進数の扱いとbyteがintにキャスト
されてから演算される仕組みを調べてもらえば分かると思う。
(「unsigned byte型」がないのでコトがややこしくなっている)

自分は符号対策込みのシフトする方法でint→byte[]、byte[]→intをやってる。
552543:04/06/01 00:17
>>549
がんばって読もうとしてみましたが、英語+JAVAの2重苦で、、、、

やっぱり、携帯JAVAの前に、もっと普通のJAVAを勉強した方が
いいのかなあ。
漏れも別に急ぐプログラムじゃなければ543の方法使うけどな。
intは4バイトだから1,2桁程度なら文字の方がデータ少なくて済むと思うし、
544で5行書くところを1行なので、考えようによってはこっちのがきれいだと・・

と言っているのは初プログラミングがMIDPのへたれですが・・
554539:04/06/01 00:59
544の方法でやったらうまくいきました。
レスしてくれた方々どもです。
555544:04/06/01 06:35
>>552
>>553
携帯JAVA以前の問題なんだって。
プログラムがどうして動くか知っていればそんなこと絶対やらないような間違え。

君たちの場合は、まず、なぜプログラムが動くのか理解した方がいい。
仕事で携帯javaやってるけど、ポインタ使えないのはなんかもう
痒いところに手が届かないって言うか、
誰だこんな言語仕様考えたやつは!!

あと、携帯にメモリ管理が細かに出来ない言語を採用したやつでてこい!!
>>556
そんな貴方に、BREW!
なんでもありの諸刃の剣C++でスリリングで難解なプログラミングが楽しめますYO!
あ、auは仕事ではやってないんだ(笑
Javaはポインタあるじゃん。
>>556
慣れればjavaの良さがわかってくるさ
>>560
遅い。ただそれだけでもうだめ。
どこからも参照されていないオブジェクトを開放してくれる便利システムも、System.gcの遅さで相殺。
>>559
ポインタを使ったjavaのコード書いてみ
>>562
Canvas c = null;
あと、構造体もないしな
java に構造体がないという意見は始めて聞いた気がする。
さすが 2ch。いろいろな人がいるなぁ。
Classはあるが、Jarサイズがでかくなる。
構造体ならコンパイル時に分解されることでJarサイズが変わらずに扱えるのではないか!

と好意的に解釈してみる。
>>563
それをポインタだと思ってるお前はJAVAを勉強しなおせ。
>>567
563ではないが、ポインタ以外のなんだとういうんだ?
むしろ567。お前が説明してみ。

NullPointerException

Null 「Pointer」 Exeption

Objectは全てポインタで扱うものだろうが。
簡易的なデータベースを作りたいんですが、困っています。
RandomAccessFile、seekが使えないようで。
ちなみにreadLineも使えないのかな。

外部ファイルの任意の1行を読み取るのはどうやったらいいんでしょうか。
行のサイズは可変長、固定どちらでも用意できますが、できれば可変長でやりたいです。
>>568

Java言語環境 第2版(7/10/96)
ttp://www.sun.co.jp/products/wp/JavaPS/index.html
P.28

2.3 C/C++から削除された機能
ポインタ
調査の結果によると、プログラマがコード中でバグを起
こす主な原因がポインタの使用にあることが分かってい
ます。ポインタ構造を排除し、代わりに配列と文字列を
オブジェクトとして用意すれば、これらの構文に対する
ポインタの必要はなくなります。したがってJava言語に
はポインタはありません。C言語での配列、構造体、ポイ
ンタの操作は、Java言語ではオブジェクトとオブジェク
ト配列を定義することにより、より簡単にしかも信頼性
をもって実行することができます。
571567:04/06/02 16:23
>>568
The Java Language Specification
4.3 Reference Types and Values
ttp://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9317

参照って考えるのが妥当じゃねーの?
Exceptionの名前だけでそう判断するのはいかがかと。
572556=558=564:04/06/02 16:39
>>566
うん、その通り。
classにするのは容量的に無理
ちなみに、Javaだからというわけでなく
携帯で使う場合ということでね。

かれこれ10年C/C++やってきたもんでね。

(JavaにClass以外の構造体があったらごめん。Javaはじめたばっかなもんで)

ちなみに、ポインタがないってのは、ポインタ演算が出来ないっていう意味でつ

>>570-571
何を勝ち誇っているのかしらんが、用語を変えただけで、実質はポインタ。
配列も配列オブジェクトへのポインタ。
文字列もStringオブジェクトへのポインタ。

操作できないポインタをポインタと呼ぶのはいかがなものかということで、
呼び方を変えただけ。

本質を理解せずにうわべだけしか見ない奴はプログラマとしてすぐ行き詰まるぞ。
あおりではなく親切心からの警告。
むきになるな。
オブジェクトポインタと変数ポインタの区別もつかん馬鹿が多いだけだ。
>>573
ガベージコレクタがコピーイングを用いるものだと、コピーイングの度に格納メモリの位置が変わるため、
藻前さんが言う単純なポインタではJavaのインスタンスを表現できない。
この場合は、ダブルポインタでないとJava のインスタンスを表現できないことはおわかり?

Java,C#等の言語ではポインタのように明示的に格納メモリの位置を表さない参照という、
新しい考え方を導入することで、このような内部の複雑な事情を隠すことができるのだ。
操作できない明示的な格納メモリの位置を表現する"ポインタ"を考えたところでこれらの問題は解決しない。
どこが本質を理解しているのやら。うわべだけの知ったか君ハズカシイ。
>>573
実質がどうとかじゃねえだろ。お前は定義を無視するのかと。
今までの概念ではポインタだろうけど、JAVAにはポインタはねーんだよ。
JVMが参照をポインタで表現することはあっても、JAVAにポインタは無い。
参照はメモリアドレスを保持しているだけで、ポインタではない。
もちろん、ポインタに近いものではある。
どうでもいいが、話をMIDPに戻さないか?
ポインタの話とかよそでやれYO!

>>569
ファイル入出力はストリーム使うしかないんじゃないかな?
ファイル丸ごと読んできて、バイト列からString生成した後、
改行文字で分割してString配列作って、各要素にアクセスとか。
言語仕様としてのポインタの有無と、ポインタの概念であるところの「アドレスを
指し示すもの」の有無がごっちゃになって議論されているから、混乱してるように
見えるのだが。
580569:04/06/02 23:33
>>578
ファイルが大きいわりに必要な部分が少ないので全部読むのは嫌だなあと思ってたんです。
CLDC1.0のdocをがんばって読んだら、こんなのを発見しました。

public ByteArrayInputStream(byte[] buf,int offset,int length)
public int read(byte[] b,int off,int len)
(off - データの開始オフセット
len - 読み込まれる最大バイト数)

開始バイト数と、lengthをなんとか計算することで、いけそうです。
Vdodaですけど、CLDC1.0のクラスってすべて使えますよね?(あまりよくわかってない。)
>>580
ok
ちなみに、行ごとに読み込むメソッドはなかったと思う。
>>580
列を扱える便利なのはないですか、、、残念。
>>578さんを参考にしながらbyteでなんとかやってみます。

どうもありがとうございました
>>571
> 4.3.1 Objects
> An object is a class instance or an array.
> The reference values (often just references) are pointers to these objects,
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~
参照値はオブジェクトへのポインタである、とはっきり書いてますがな。

てーか、「Javaにポインタはない」はC/C++プログラマのJavaの理解を妨げる罠。
俺も何年も昔になるけど、Javaの Hoge hoge = new Hoge(); が
C++の Hoge* hoge = new Hoge(); と同じようなものだと気がついたときの
騙された感は最悪だった。
>>583
MIDPスレでやるな。うざい。
騙される方がおかしい。
>C/C++プログラマのJavaの理解を妨げる罠。
大したことない頭だから理解できないだけ。
>>584-585
必死だな。
間違えたなら間違えたと認められないと、プログラマーとして進歩できないよ。
別に間違えたからどうってことはないんだし。
>>583
ま、仕様書に書いてあるならしかたないが

> Javaの Hoge hoge = new Hoge(); が
> C++の Hoge* hoge = new Hoge(); と同じようなものだと気がついたときの

っていうのは、単純に笑えた。煽るためのネタだよね?
つーか今MIDPはネタ切れなんだよ‥

CLDC1.1とかMIDP2.0とか日本で出ないかね
あと今度出るvodaのT4Gネタとか
T4Gはどうですか?>プロの皆様
MIDP2.0出るよ。さすがにどこかは言えないけど
だいぶ前から話だけ動いてる感があるけど。。。
591569,580:04/06/03 23:38
大きなデータファイルの途中のデータのみを読み取る方法を聞いた者
ですが、行き詰ってしまいました。

>>580の方法がうまく行きませんでした。

●ByteArrayInputStream(byte[] buf,int offset,int length)
ファイルをすべてbyte[]に変換してから使う方法しか分かりませんでした。
直接データファイルの一部のみを読み込む方法が分かりませんでした。

●read(byte[] b,int off,int len)
このoffの値は、読み込む先のbyte[]の位置の指定でした。
読み込み元のファイルの位置だと勘違いしていました。
>>591
InputStream.skip(long n) を使えばイイ
正直
>>587
が何を言っているのか分からない。
誰か解説してくれ。
>>593
簡単にいえば
オマエハバカ
>>588
T4G? それは...
MIDP2.0? それは...
まだ書けないな。もうちょい待ってな。

でも、今から勉強しておいても良いと思うよ。
SunのWTKは公開されてるんだから。
なんだか「JAVAにはポインタ無いったら無いんだよウワァァァンヽ(`Д´)ノ」って奴が一人いるな。
匿名掲示板で間違えたこと言ったからって、恥じはかきすてろ。
素直に認めて学習したほうがお前のためだ。
なんだか「JAVAにもポインタがあるったらあるんだよウワァァァンヽ(`Д´)ノ」って奴が一人いるな。
匿名掲示板で間違えたこと言ったからって、恥じはかきすてろ。
素直に認めて学習したほうがお前のためだ。
結局、ポインタはあるの?無いの?
なんだか、「参照型はオブジェクトを指し示すものです」程度の意味に使われている「pointer」を、ここで話題にしてるC言語のポインタのことだと思って鬼のクビとったかのようなやつがいるな。
参照型の値がメモリ上のアドレスであることを定めた文章ではないのにね。
>>598
参照値を構成する要素の中のどこかにはある。
言語規定上は、ない。
実装上は、どうにかしてメモリの位置にたどりつける必要があるから、どこかにアドレスはある。
オブジェクトを配列で管理するVMなら、それも必要ないな。
>>598
Javaの参照はポインタである。ただし、Javaの参照はC言語のポインタとは異なり、
ポインタに対する演算と、基本データ型へのポインタの取得はできない。

こんなところでどうよ。

というか、ポインタという言葉を、Cのポインタやメモリのアドレスとイコールで結び付けてる人って
ちょっと了見が狭いよなあとか思ってみるテスト
Javaの参照がポインタではない実装もいくつかある。
結局、言語仕様と実装はわけて考えろということだな。
別にMagic Valueでも構わんわけだが。
ということで、だいたい結論もでたようなので
↓何事もなかったように携帯の話、どぞ。
けーたい
じつは、ねたなんてなかった
iアプリスレがあるから、ここは過疎。
>>591
そのおっきなデータって、ヒープに入りきらんの?

>>592
> InputStream の skip メソッドはバイト配列を作成し、n バイトが読み込まれるか、
> ストリームの終わりに達するまで繰り返しその中に読み込みます。
とJavaDocにかいてあるので、結局はスキップするところまで読み込んでることになるみたい。
>>610
そうなのか...
だとすると、 DataInput.html.skipBytes(int)も使えなさそうだな。
InputStreamでの実装がそうであるというだけで、
ほとんどのサブクラスではもっと効率のいい実装がされていると思うぞ。
613569,580,591:04/06/05 08:51
どうもありがとうございました。
無事、>>592の方法で、指定位置のデータを読み取れました。
現在、1行固定バイトのデータに作り変えているところです。


>>610-612
InputStream の skipメソッドなら、skipするデータが大きくなると
遅くなっちゃうということなのかな。もしも、これ以外にできる方法が
あったら教えてください。
今回は、データサイズ的にはすべて読んでもいけそうですが、
なるべく効率的な書き方をしたいので。
>>612
そうでもない。ストリームなので先頭から順番にしか読めない。
>614は相当アホだな
 某作者様の日記に "MA3/Phrase用のツール" について書かれていたんですが、
これって、MA3の音が使えるってことですか?
YAMAHAにはもうないようですが、何か問題でもあったんでしょうか・・。
かなり使いたいのですが。
なぜ"某作者様"に質問しないの?
掲示板は雑談中心で質問しづらいし、メールで聞くのは大げさかなと思ったので・・。
>>616
公式とかなら分からんが、少なくとも一般(無料)アプリの作者は結構
質問とかされるの嫌いじゃないと思うよ。あまりに厨でなければ。
匿名である以外はここで書くのと、そうリスクに差は無いはず。
つか、当然のようにその作者様のほうが詳しいわけで、漏れらに聞かれても・・
620616:04/06/07 20:01
 すいません、仰るとおり、作者様に訊いてみます。
失礼しました。
621デフォルトの名無しさん:04/06/09 13:23
Vアプリで、レコードストア内に保存したjarファイルにアクセスするコードを以下の様に、

RecordStore rs = RecordStore.openRecordStore("RecordStoreName",true);

byte buf[] = new byte[65536];
InputConnection c = (InputConnection)Connector.open("jar://RecordStoreName/FileName", Connector.READ);
InputStream is = c.openInputStream();
is.read(buf);

is.close();
c.close();
rs.closeRecordStore();

としたのですが、なぜかエミュレータでしか正常に動作しません。
実機では、InputStreamを開く際に、 IOException:Not File Found: /FileName が吐き出されてしまいます。
どなたか原因をご存知でしたら、ご教授お願いします。
>>621
ageてしまった・・・
逝って来ます
>>621
このスレのどこかで見たような気がする。

RecordStoreをopenするのをやめてみたら?
>>621
RecordStoreをオープンする必要ないよ
>>623 >>624
とりあえず、RecordStore周りを外して実行してみました。

ただ結果は、変わらずInputStreamを開く際に同じExceptionで止まってしまいます。
エミュでは動いているのでプログラムではなく、jarファイルや他の設定の方に問題があるのかもしれません。
原因がわかるまで、しばらくいじってみます。ありがとうございました。
626デフォルトの名無しさん:04/06/09 17:49
すいません質問させてください。
iαppli Development Kit
をインストールして、iアプリを作成しようと思ってます。
ソースを作って、resフォルダにコピーして、ビルドしても
ビルドできません。 どうしてでしょうか?
iαppliTool(DoJa2.0 Emulator),ver.1.03
Java2 SDK 1.5.0.beta2
パスも通ってます。
なんでβ使うかなぁ・・・とは思うけど、それ以上に、なんでresにコピーするかなぁと思う。
628デフォルトの名無しさん:04/06/09 17:55
>>627
あっ! 私はアホです。
ご指摘ありがとうございました。
srcですね。 ビルドできました。
すいません。
そんなんでも役に立てて、おいさんはうれしいよ。
でもスレ違いw
一応誘導
iモード携帯電話用Java(iアプリ) Part 5
ttp://pc5.2ch.net/test/read.cgi/tech/1084246226/
632デフォルトの名無しさん:04/06/10 00:36
phase3エミュを入手したラッキーメンがいたら
うpきぼん
633デフォルトの名無しさん:04/06/10 06:54
ドコモの携帯のムービーって転送する方法って
どんなのがある?iモーションメール以外で
プログラムに関係あるか?ないだろ。
漏れもほしい
スレ違いだってことに気付け
637デフォルトの名無しさん:04/06/10 17:46
iアプリのプログラム上でサーバーに接続して
動画を送ることってできるんじゃないかな。
あんまり大きなサイズになるとどうかわからないけど。。
スレ違いだってことに気付け
639ぼーけーふぉー:04/06/12 11:54
ここで質もんをば・・

VisualJ#で開発ってできます?
JavaとJ#って似て非なる言語じゃないの?
いんやぁ、SunOneStudioが使いにくかったから、JAVA開発環境として使えたらいいなぁと思って
JAVAをはじめて日が浅いのですが、困ってます。
Canvasで書いた画面で決定キーを押したら、Form画面に
行きたいんですが、どう書けば良いのでしょう。

↓のような感じで書いたんですが、行き詰ってしまいました。
(必要と思われる部分だけ抜き出してみました。)


public class Hoge extends MIDlet {
  public Hoge() {
    Display.getDisplay(this).setCurrent(new HogeCancas());
  }
}


public class HogeCanvas extends Canvas implements CommandListener{
  public void keyPressed(int keyCode){
    int gameCode=getGameAction(keyCode);
    if(gameCode==FIRE){
    ●●
    }
  }
  public void paint(Graphics g) {
    g.drawString("Hello World",120,60,g.TOP|g.HCENTER);
  }
}
Formを作って、setCurrent()すれば良い。
>>643

ありがとうございます。
Display.getDisplay(Hoge.current).setCurrent(new HogeForm());でうまくいきました。
MIDPのAPIのオンラインリファレンス(日本語)ってない?
>>645
どっかに抄訳があった。
ほぼ完全なのは俺のHDDの中。
MIDP1.0なら、さかきけいさんの所にあるよ。
CLDC1.0はSunのサイトのどこかにあったはず。
>>645
「Japanese documentation for the J2ME CLDC V1.0」
http://java.sun.com/products/cldc/docs/CLDC1.0_ja_docs.zip
さんくすこ
>641
IDE使ううまみはそんなにないと思うけどなぁ。どうせエミュはIDEの外だし。
ant最強と言ってみる。
>>650
Eclipse+ant最強
デバッグしたいときは、エミュをデバッグサーバーとして動かして
eclipseからリモートデバッグでいいのかな。
ezアプリから端末情報(電界強度,電池残量や機種判別)を取得する
し,取得したデータをテキストファイルとしてPCなどの媒体に保存したい
のですが,これって可能なんでしょうか?

ttp://www.itmedia.co.jp/mobile/0104/12/kjava.html
>>652 基本的にはそれでいいと思うけど、R2.x系だとIBM/OTIの連中が
SunのKVMの実装依存の部分に引っかかってbugがとれずリモートデバッグが
安定しない。antもR2.xだとメモリリークでかいしR3.0にしとくのが無難。
655654:04/06/14 03:30
そいや、VアプリだったらエミュレータがUEI対応みたいなので、Eclipseよりも
WSDD(Eclipseベースの商用環境)使うと連携がきれいにいくんじゃないかなあ。
9万円くらいしちゃうけどね。
656デフォルトの名無しさん:04/06/14 07:05
今マスコットカプセルでゲーム作ろうとしてんだけど、なんかワールド座標系が
無いみたいで出鼻挫かれちゃったんすけど、皆さんどやって解決してます?
あんな平行投影で3Dを名乗る屑システムは使わない。
以上。
マスコットカプセルのバージョンは?
659デフォルトの名無しさん:04/06/14 11:08
>>657
そすか・・・、で、他に選択肢ってあるの?

>>658
ん〜、どなんでしょ?
V-appli Emurator for JSCL 1.2.1にインプリメントされてるやつなんですけど。
>>659

ボーダフォン(Vアプリ) ドコモ(iアプリ) au(EZアプリ)
マスコットカプセル ver.1 50Kアプリ
マスコットカプセル ver.2 100Kアプリ DoJa2.0
マスコットカプセル ver.3 256Kアプリ DoJa3.0 EZアプリ(Java) Phase3
マスコットカプセル ver.4 256Kアプリ Ver.2 ??? ???
661660:04/06/14 17:10
ずれすまそ
                  Vアプリ  iアプリ      EZアプリ
マスコットカプセル ver.1   50K
マスコットカプセル ver.2   100K    DoJa2.0
マスコットカプセル ver.3   256K    DoJa3.0     EZ Phase3
マスコットカプセル ver.4   256K v2
マスコットカプセル ver.3なら、一応透視投影まではできるでそ?

ともって、参考にしてた、ん・ぱかの人のところ見にいったら
なんかまとまってた。
>>526
にもあるけど、EZアプリではデータフォルダやSDのデータを読み書きできない
というのがファイナルアンサー?
526に対するレスはできるという人とできないという人がいるけど
できるなら、どのメソッドでできるんでしょうか
>>663
漏れも知りたい。あとSD読める場合は何MBの
ファイルまで読めるのかとか。
データフォルダに関しては
・フォルダにある画像、音楽ファイルなどのリストを取得。
・リスト内のデータに関する著作権とかの情報。
・著作権無し音楽(着うた不可)の再生。
はできるみたいです。(sterdustのコピペ・・
だ・か・ら・さー どうして公式のドキュメント読まないのさ?
ttp://www.au.kddi.com/ezfactory/tec/spec/ezplus.html
「EZアプリ(Java[TM])プログラミングガイド」をダウンロードしてこい!
668667:04/06/15 03:25
いやスマンかった。
>>667からゲットできる資料はMS-Word形式なんで誰もが読めるわけじゃないな。
しかしMS-Word形式で一般公開してるってauはアフォですか・・・
http://www.microsoft.com/downloads/details.aspx?FamilyID=9BBB9E60-E4F3-436D-A5A7-DA0E5431E5C1&displaylang=EN

Viewerはあるけどな。誰もがWindowsを使っているわけではないが。
open officeを使えばとりあえず読める
671デフォルトの名無しさん:04/06/15 17:49
SmafPlayerで音再生時にストレージ読むと
音がポーズかかるけど、どゆこと?>>W11K
知ってる神たのむ。
>>667
Phase3ではデータを書きこめるみたいな事が書いてあるな。
おれはPhase3の実機もエミュももってないので試せないが。
Phase3で追加された「データフォルダへのファイル書き込み」「データフォルダ内のファイル削除」と
「データファイルからのファイル読み込み」の機能はau指定のサーバに登録されたアプリでのみ使用可能。

いわゆる勝手アプリではデータフォルダからのファイルの読み書き削除はできない。
オフィシャルのコンテンツプロバイダがau指定サーバに登録したアプリでのみ利用可能な機能ってこと。
× 「データファイルからのファイル読み込み」
○ 「データフォルダからのファイル読み込み」
675526:04/06/15 20:59
>>671
音鳴らすのもストレージ読むのも結構CPU使うって事じゃね?
個人的な経験では音鳴らし中は再描画が遅くなったョ。
音鳴らし中に、記録>終了、ってしようとすると記録しないことあるらしいから注意

>>673
やっぱり・・。スッキリしました。dクス。
676663:04/06/15 22:19
>>673
ありがd

>>667
(゚д゚)ハァ?
677652:04/06/18 00:07
結局のところ、eclipseとか統合環境でブレークポイント貼ってデバッグってのは
V-appliの開発では無理なのかな・・・誰か出来てる人いる?
MIDPで使える軽いXMLパーサってなんかない?
679デフォルトの名無しさん:04/06/18 12:49
質問。
Vodafoneのアプリ作ってます。
2回キーが押された場合、その間隔をミリ秒で取得したいんだけど、どうすればいい?
>>677 俺はVアプリやったことないけど、エミュレータが
UEI対応なわけだからUEIサポートのIDEでリモートデバッグが
できない理由を思いつかない。試したほうが早いんじゃないか?
>>679
Dateの差分
基本だけど、マイナスになっても大丈夫なようにね。
682677:04/06/19 01:40
VアプリのSDKに含まれるemulator.exeが-XDebugオプションないから
デバッグサーバーになれないように思うんだけど・・・
683677:04/06/19 02:19
混乱気味。もちっと調べよう。なんとかなりそうな感じだ。
ttp://www.nttdocomo.co.jp/p_s/imode/make/java/index.html

Felica 関連API使用出てきたよ
ほう。
比較的自由に使えるのかね。
Voda P5でTV出力許可ってどうやったらいいんでしょうか。
VodaとEZで同じファイルを使って動かしたいのですが
キャリア判別する方法無いでしょうか?
>>687
どうせ配布ファイルは異なるのだから、それぞれに作った方が楽だと思うけどね。
で、同じファイルで動くのなら、判別する必要なんて無いんじゃない?
多分、タイトルにforEZとかforJアプリとか入れる、そんな感じにしたいんだと思うぞ。
>>686
jadかmanifestに何か書くと思うんだけど、、、
>>686

 vodafoneの資料を読んでみよう。載ってるよ。
どっかで見た。たぶんpdf。
692687:04/06/22 20:52
>>689みたいな感じでやりたいのですが
方法はありませんでしょうか?
海外版の携帯アプリを配信してくれるサイト知りませんか?アプリゲットのような
MIDP互換で作ったので海外の人にやってもらいたいのですが
質問です。
約12時間ぐらい上げっぱなしのアプリって無謀?
通話なし、送受信が約40回〜50回レコード操作もありで
10時間で電池切れ。造りが甘いかもしれないとは思っているけど、
もっときちんと作れば、連続20時間使用できるというなら、作るが、無理なら餅が上がらん。
そんなアプリ作ったことある兄貴教えてください。
695694:04/06/25 12:40
あ、Ez(JAVA)アプリです。
無理無理無理無理。
せめて待ち受けにしなさい
vodafone(P5)用のアプリをeclipse使って開発しているけど、
デバッガが見つからない。

誰か使いやすいデバッガがあったら教えてください。
>>694
イベントドリブンで作ればそんぐらい持つ、かもね。
本当に持つかどうかは自分で実験してくれ。
imonaみたいに通信時の受信済みのデータサイズを表示させたいのですが
そのやり方分かる方いますか?

ちなみにVoda用です。
>>699
てきとーにHTTP通信で送受信したデータ量を元に2割り増しくらいで表示しているだけ。
やりとりしたパケット数がわかるわけではない。
701デフォルトの名無しさん:04/06/26 03:26
vodaでのリソース読み込みがiアプリに比べてかなり遅いけど、
速くする方法知ってる人いない?
勝手な推測だけど、iの場合、InputStream#read()とかで全データ一気に読めるのに対して
vodaは1byteずつ読まないとダメ(実機でエラーになる場合がある)っていう違いが原因だとは
思うんだけど…
702デフォルトの名無しさん:04/06/27 00:58
Vodaアプリ作ってます。

Threadをスリープさせて、同じタイミングでpaintを呼び出してるんだけど、300ms以下のスリープだと、タイミングが次第にずれてきます(エミュで)・・
(完全にではなくとも)同じタイミングでイベント起こすのってムリ?

解答くださる兄貴募集です。



>>702
何と何のタイミングを同じにしたいのか、よくわからんのだが。
repaintを呼んでも非同期でしかpaintは呼ばれんぞ。
704702:04/06/27 01:40
>>703
Runnableをインプリメントしたクラスで

/* run */
public void run(){
while (true) {
try {
Thread.sleep(××);//××ms後にrepaint
} catch (Exception e){}
repaint();
}
}


/* paint */
protected void paint(Graphics g){
//描画処理
}

こんな感じに、指定した時間スリープさせた後にpaintを繰り返し呼び出したし。
(一定の間隔で、paintしたい)

何か勘違いしてる?
初心者でスマソ
>>702

repaint()の直後にserviceRepaints()を呼ぼう
sleep()の精度が悪いのも一つの原因かもしれず。
Sleepじゃダメだろ。
(他部分の処理時間+Sleepミリ秒)が一回のループになってしまって、だんだんずれていくぞ。
708デフォルトの名無しさん:04/06/27 14:08
ezアプリにcompassクラスってあるけど、詳細がないのは何故???
以下、理屈の上ではフレーム安定。

long t = 0;

while(true){
  t = System.currentTimeMillis()+××;

  //あれこれ処理

  while(0<t-System.currentTimeMillis())  ;
  repaint(); //※理屈の上ではxxms後に再描画≒フレーム安定
}
※は場合whileループ内に置くのが普通かな。

ただし以下の場合はダメ。

タイマーの精度がへっぽこ、もしくはxxとマッチしない
System.currentTimeMillis()の実装がへっぽこ
System.currentTimeMillis()自体が高負荷
repaint内容が高負荷
あれこれ処理が高負荷
もうとにかくへっぽこ

これらの環境の場合はsleepで妥協しる。
710709:04/06/27 14:33
というかよくみたら>>704
catchでrepaint呼んでるが、
これはどのようなことなのか。わたしにゃわかりませんです。
>>710
俺も一瞬そう思ったが、

} catch (Exception e){} ←閉じてる
repaint();
}

なので無問題
712709:04/06/27 16:48
>>711
ん、あ、そか。なる
713デフォルトの名無しさん:04/06/29 06:57
>>678
nanoxml liteってのがあるよ。6KB弱。
SAXだけなら4KB弱
http://nanoxml.cyberelf.be/
昨今の携帯ならこのくらい無問題でしょう

URLが変わってて見つけるの苦労したワ
714デフォルトの名無しさん:04/06/29 14:05
Vアプリ開発をしようと思ってます。
P5型のエミュレータってJDK1.4+J2MEWTK2.0でも問題無いですか?

あと、Windows2000上でのJDK1.4とJDK1.3の共存ってどうやってますか?
もしJDK1.3を使う必要があるなら、
その都度JAVA_HOME変数をJDK1.3のパスに書き換えて使おうと思うのですが、これだけでいいのでしょうか?
みなさんはどうやってますか?もっと賢い方法があったら教えてくださいm(_ _)m
715713:04/06/29 17:49
J2MEWTKは今最新が2.1だけど、これはJDK1.4以上の対応ですよね
JDK1.3では動かないかと

1.3と1.4の共存だと、どっちかインストールして、
フォルダごと別のところにコピーして、もうかたっぽインストールしたら
あとはパスしだいで両方つかえますよ
ウチは通常1.4使って、必要なときにパス書き換えて1.3使ってますが
716デフォルトの名無しさん:04/06/29 20:13
>>715
WTK2.0はJDK1.4以上対応なんですか。ありがとうございます。
とりあえずJDK1.3とWTK1.0をインストールして使ってみます。

Win2kは環境変数を書き換えた後再起動しなくていいのが楽なんですが、
たまーに再起動しないとパスが通らない事あるんですよね。そこがウザイ。
717678:04/06/30 05:02
一時的にpath変更するために環境変数書き換えるのもメンドクサ
set JAVA_HOME=C:\hogeとか書いたbatファイル用意して、cmd.exe立ち上げた後に適用するだけの方が楽よ

>>713
thx, ちとライブラリじっくり見ることにします。
>>717
あーなるほど。参考になります。
719677:04/06/30 09:07
いろいろやったがだめぽ。V-appliでデバッグできない。
Vodaのサイトにあるマニュアルにsun one studio4との連携について
書かれているがコンパイル、実行までしか書いてないのはそういうことだろう。
JADファイルのMIDlet-Jar-Sizeの値を実行時に自動更新してくれるのは、
UEI対応してるからのようだが・・・
そもそもV-appliのエミュにリモートデバッグするためのオプションがないっぽい。
eclipseのプラグインも落としてきたが使い方よくわからんしあきらめた。
>>677
対応してないよ。
まとめよう。

・mp3ファイルを読むことができない。
・mp3をデコードするにはCPUパワーが足りない。
・音声を出力することができない。

これにて終了。
↑誤爆スマソ
>>722
(・∀・)GO BACK!!
724デフォルトの名無しさん:04/07/01 03:07
V601SHを新規購入してみました。早速Vアプリ作成ー、と思ったら・・・
Vアプリを実機に落とすのってコンテンツアグリゲータに登録・うpしてからDLという形になるんですね。

ってことはV400,V300では自作のVアプリは遊べないってことですか?
友達がV401SHを使っているので、自作Vアプリを試してもらいたいんですが・・・。

iアプリはUSBコネクタなどで直接実機に落とせたのになぁ。
VアプリでなんとかUSBケーブルでデータのやり取りできませんかね?

あぁ最悪・・・orz
釣りか?
多分1円で買ったんだと思うけど…

あと数日でアプリ鬼性能のV602SHが出る
vodaは今日から解約祭り
一般人がアプリをケーブル転送出来るのはauだけ
>>725
携帯買うのにお金掛けたくなかったんで。それにV602SHにさほど魅力を感じなかったので。

iアプリってケーブル転送できませんでしたっけ?
前に出来たんだけどな・・・ドコモカップの特別仕様だったのかな?

auいいなぁ。BREWが出て来てなんじゃこりゃ、と思ってVにしたんだけど・・・失敗したみたい・゚・(ノД`)・゚・
まあ、DOCOMOはダウンロード自体は勝手にできるからねぇ
voda自作アプリをテストできないのか・・・
最悪だな
だから衰退してるんです。
アプリゲットとかいちいちメンドイし、作るアプリに制限かかるし、だめぽ
>>728
テストに(ダウンロードする)金がかかるというだけの話だが。
サードパーティの充実こそが繁栄の絶対条件なのにな
732デフォルトの名無しさん:04/07/01 13:12
Vアプリって登録してからDLするまでに時間かかるんでしょ?
もうアホかと。
VアプリっていちいちDLしなきゃテストできないのか。
256kbのアプリをつくったら
1kb=1024b=8パケット

256×8=2048パケット×0.3円=614.4円

実機でテストをするごとに614円払うの?
Vodaは元々海外市場の携帯電話だし、あっちじゃアプリなんて全然関心もたれてない。
だから、TVに映せるよ、音楽が聴けるよ、ってラインナップのうちの一つとして
ゲーム向けの機種もあるよ、ってだけにすぎない。
アプリを意識してDoCoMoやauに追いつくつもりなら256kbアプリ対応機種(というかP5型)をもっと出すはず。
それをしてこないならやっぱVodaはアプリが動く携帯電話で勝負する気はないってことなんだろう。
735デフォルトの名無しさん:04/07/01 14:52
ちょっとぐらい高くてもiモードにすりゃあ良かった・・・orz
Vは性能もよろしくないしな…。
さすが3巨頭の中でのワースト。
週間雑誌界のチャンピオンみたいな存在だ。
おもちゃとしてV602SHが欲しかったんだけど
おもちゃとしてもこのままDoCoMoのほうがいいのかな・・・
>>737
金が余ってるなら買ってもいいんじゃないの?
V602SHのアプリ性能はかなりの物だよ
ただキャリアが糞なのが問題
社員の大規模なリストラ、ユーザー解約祭りでこの先どうなるやら‥

voda解約祭り、全国のvoda店にて実施中!7千台目
http://hobby6.2ch.net/test/read.cgi/phs/1088578456/

auはauでJavaを捨ててBrewに移行する気みたいだし、日本のMIDP機はどうなるんだろ
なんでこんなにVodaが非難されるのか理解できたよ。まったくもってのクソキャリアだな。

>>737
おもちゃとしてならDoCoMoのほうがいいよ。
V601SH持ってるけど対して遊べるものがない。
搭載Vアプリでまともなのはぷよぷよ体験版だけど、90秒しか遊べない。
そのかわりメール関連は使いやすいと思う。

V602SHは601SHの基本性能がアップしただけっていうし、
メガピクセルカメラにこだわっていないのなら他の携帯にした方がいいと思う。
>>738
BREWってCだよね?あれが出てこなきゃauにしてたよ。

やっぱドコモ最強だな。個人向けの割引サービスがもっと充実すればいいんだけどなぁ。
auとvodaはユビキタス時代の到来を見据えていないのか?と思ってしまうわけだが。
>741
 Vodaは知らんけど、au(BREWアプリ)とユビキタスは関係はないだろうと考えてみる。
 ユビキタスは、どんな物からでも通信インフラやコンピュータの恩恵を受けられると
いう仕組みの発想だから、アプリを作って入れ替えが出来るという時点でVodaもauも基
準はクリアしている。

 Vアプリの配信の手間やezアプリ(BREW)の問題は、iアプリでも生きていたフリー
ソフトウェアの文化から言えば逆行する仕組みだから、文句が出るんじゃないかね?
 一発ネタアプリをBREWで作れるかと言ったら、間違いなくNOなわけだし
(それ以前に審査請求なぞ、ネタアプリで出す気力もないだろうし)。

 …携帯系Javaスレで語る内容ではなかったな。
 申し訳ない。

>738
 auの公式ページでは、VCで開発と書いてあった気がするよ。
 まあ、BREW上でのJavaVMもHPで開発することが決定しているらしいから、いつかは
BREW経由でJavaアプリも動かせるんじゃないかと、淡い期待を抱いてみたり。
>742
BREW上のJavaVMは、BREWの開発元のQ社が既に提供してる。
誰に提供してるのかしらんが、表に出てこないって事は
実用にはほど遠いって事か?
>>744 キャリアが望めば出せるくらいにはあるんじゃないかな。
http://www.umtschips.com/solutions/products/qvm.jsp
あとIBMのもすでに出荷状態。
http://www-306.ibm.com/software/wireless/wme/sysreqs.html
>742
MicroChai on BREWについては既にHP的には黒歴史なんじゃないか?
HPのサイトで検索掛けてみたが、大昔のニュースリリースしか出てこんかった。
続きはこちらで

BREW(Binary Runtime Environment for Wireless) 2
http://pc5.2ch.net/test/read.cgi/tech/1076511398/
au は java機能は進化しつづけてるから BREWなんて使わなくてもいいんじゃない?
auのJAVAなくなっちゃいますから!残念!!

まぁ、またいつか復活するだろうけど。
漏れもBREWオンリーになるって聞いた
auはそうしたいんだと
携帯電話のメーカーがどう考えてるかはしらんが
ぶりゅでじゃばをうごかすというのはしょうらいてきにするんでないの?

できたときにはじゃばあぷりうほっ!てなてるかはしらんがね
BREWだとSH-Mobile搭載無理らしいね
BREWで動くJVMを作れば…
BREWでJVM動かすにしろ、実機で動かすには登録がいるだろ
言語はjavaでもC++でもLispでも何でもいいけど、勝手に作れないのが問題
今度携帯電話を買い替えようと思うのですが
自分でゲーム作って遊べる奴で、お勧め(or 地雷)の機種があれば教えて下さい。

一応、AUにしようと思ってます。
>>755
Java P3対応のA540xCAにしとけ。間違ってもBREW機など買うなよ。
後はW11H、W11Kぐらいだな。
>>756-757
参考にします。ありがとうございました。
CA機はメモリー解放まわりにバグがある('A`)
きちんと開放しる…。
あうのjava開発ツールを落としてみたのだが
単独で使えないのかよこれ

JavaTM2Platform Standard Edition Version 1.3ってのがHPのどこにあるのかわからない…orz
愚痴をいちいち書かなくていいよ。
ネタも提供しなくていいよ。
ttp://java.sun.com/j2se/1.3/ja/download.html
ぐぐればよいが、たしかにsunのHPはどこに何があるかわかりづらく糞。
763初心者:04/07/07 14:27
初めまして。
現在ezアプリを作っているのですが,com.jblend.graphics.m2dパッケージの
スプライト機能の使い方が解りません。
どなたかわかる方がいらっしゃいましたら
すみませんが教えていただけないでしょうか。
何がわからないのかわからないと、教えようがないんだ。
まずはその手の初心者サイトいって、描画くらいまではやってからおいで。
765763:04/07/07 15:03
具体的にはファイルの読み込みです。

//resフォルダの中にあるpngファイルを指定
SpriteImage si = new SpriteImage("/res/*.png");
//ここでエラーが出ます。
java.io.IOException: cannot load /res/*.png

これをどうにかしたいのですが。
>>763
MascotCapsule Tool Kit for KDDI
ttps://www.mascotcapsule.com/toolkit/kddi/tool.html
2Dスプライト プログラミングガイド 2Dスプライトプログラマーズガイド(Java版)

上記ドキュメントをダウンロードして読んで。
これ以上ないほど詳細な解説と使用例が載ってる。

読めば>>765の間違いにも気付くと思う。
767763:04/07/07 18:01
>>766
とりあえず解決しました。
本当にありがとうございます。
768デフォルトの名無しさん:04/07/14 11:18
はじめまして。
質問です。
現在、複数機種で待受けアプリを開発しているのですが、
EZやVodaに通常起動と待受け起動を判別する機能はないのでしょうか?
調べてみたところ、DocomoにはgetLaunchType()というメソッドあるようですが、
EZ・Voda(MIDP)にはそれに当たるようなものが見つかりません。
Vodaの場合、
System.getProperty("jscl.system.wakeupmode")

通常起動 : "1"
待受起動 : "2"
タイマー起動 : "3"

ということだそうだ。JSCLのバージョンは未確認。
770768:04/07/14 13:14
>>769
Vodaではできるんですね。
レスありがとうございました。
>>769
補足しておくとこの機能が使えるのはJSCL-1.2.x(つまりP5型)のみ。
>768
KDDIのAPIドキュメント(Javadocとか書いてあるリンクの先)は落として読んだ?
Phase2.5からcom.kddi.matiukeパッケージが追加になってるから
そこいらへんを参考に。
773772:04/07/15 00:54
スマソ。読み返してみたら「状態を取得する」ストレートな方法はないね。
失礼しますた。
774768:04/07/15 09:55
皆さんレスありがとうございます。

レスを元にして調べてみたところ
Vodaの「System.getProperty("jscl.system.wakeupmode")」に対し、
EZにも「System.getProperty("kddi.system.wakeupMode")」というものがあるらしいのですが、
これには待受け状態の取得はないみたいですね。
0=通常起動、1=Cメール起動要求を受けて起動、2=アラーム起動
とのことで。

まとめると・・・

Docomo:Doja2.0以降で可
AU:不可
Voda:P5型のみ可

といったところでしょうか。
詳細は割愛するが
System.getProperty("kddi.system.wakeupMode")で取得できる値は"0"〜"10"で
"8"が「ユーザの待ち受け設定による自動起動」
776768:04/07/15 14:33
>>775
"3"以上の値もあったんですね。
調べが足りなかったようで申し訳ありません。

訂正ありがとうございます。

Docomo:Doja2.0以降で可
AU:可(Phase2.5以降?)
Voda:P5型のみ可
VodaのP5のFileUtilityでmp3のパスぶん投げたら
mp3再生してくれるのかな?

>ファイルをネイティブアプリケーションで再生します。
と、あるけど。
正規表現を使いたいんですが何か良い手ありますか?
正規表現を解析処理するCGIの類を鯖に置いて
そいつを叩く。とか。
Vodaアプリで通信を別スレッド?で実行したいのですが
どうやってやればいいんでしょうか?
>>780
こうしなきゃいけない、ってやり方はないから好きにやればいいよ。
ちょっと質問が漠然としてる気もするが、具体的な方針を説明すればよい?

メインのオブジェクトとは別に通信用のオブジェクトを用意して、
そこでスレッドを走らせればいい。
例えばメイン処理にMain.java、通信用にCom.javaを用意して、
comオブジェクト内のrun(){ 通信処理 } をmainオブジェクト側から起動させる。

結果の受け取り方も好きにすればいい。
通信結果を格納するpublicな変数をcomオブジェクト内に用意して
mainオブジェクト側でその変数を常時監視して、値に変化があったら取得するとか。
または、mainオブジェクト側にpublicな変数を用意して、comオブジェクトで
処理が済んだタイミングでその変数を書き換えるとか。


…もしも。
スレッド起動のやり方や通信のやり方が分からないということであったら
携帯アプリの作り方を説明した基本的な参考書でも読んでおくれ。
V60x機種は、どのくらいのヒープメモリがあると期待していいんでしょうか。
ドキュメントにはV601SHは1229KByteって書いてあるけど、
601Tとかできれば2000KByteくらいあって欲しいなぁ・・・

>777
試してみた感じでは、ネイティブ実行してくれるのは動画だけのような感じだったんですが、どうでしょ?
エミュではMMFもPNGもTXTも「not supported」とかエラー吐きました。
ボーダの256k ver2は256k ver1とAPIは同じで、
違うのは機種の性能ってことでいい?
784デフォルトの名無しさん:04/07/20 21:58
常駐してもいいですか o(゚∀゚o) (o゚∀゚o) (o゚∀゚)o
完璧に過疎ですか
無理やり盛り上げてもいいですか
おまいらキー入力まわりどうやって処理してますか
素直にイベントハンドラ内でやっちまいますか
キーリピートはどうしてますか
オブジェクト指向とかで書くようになりましたか
お話しようYO
漏れはキー入力周りの処理は独自クラスを作成していて、InputDevice#getKeyState()な感じになってる。
あと趣味で作成しているのでスピードをあまり気にせずに激しくOOPしている。
イベントハンドラ中で書くと描画中にステートが変わる可能性があるのでやめた方がよさげ。
>>785
キー入力はやっぱりそうか
つぅか自然とそうなってイクよな
OOPはプロの場合はどうなんだろう
OOPな感じじゃないとデバッグマンドクサイんじゃないかと
常々おもったりおもわなかったししているんだYO
仕事でやってるヤシも教えてくれYO
OOP。
そんなものは忘れないとお仕事のMIDPアプリは書けません。
クラスは二つ。MIDletのサブクラスとCanvasのサブクラス。それが全て。


ああ、OOPを完全に忘れちゃうとイベント取れなくなっちゃうからその辺はてきとーに。
(´-`).。oO(なんでJavaで書いてるのに、フィールドの名前の衝突気にしなきゃならないんだろう)
通信用のスレッドは?
>>787
いまだにそうなのか・・ターゲットが256kアプリでも?
>>783
V2はJSCL-1.2.2仕様になっている為、カラオケ関連など使えるAPIが増えている。
791787:04/07/21 00:24
漏れの相手はPhase2.0のあうなのですよ。
Phase3.0用には(ほぼイコールQVGA機種ということもあり)
画像他差し替えて別バイナリ作るけど、
だからって流石に書き下ろしてられんしorz

ちなみにPhase2.0ではHTTP通信は同期だったり(……のはずだが)
だから独立スレッドは要らないのです(……と思うんだけど)
ふむふむなるほど・・小が大をかねるわけだな・・
同期だとスレッド イラヾ('A`)ナイ の?そうなの?
非同期のときは必要なの?
通信てアタイよくわかんない。
暇な人いたら説明キボン。

で、256k専用アプリ扱ってるヤシの登場キボンヌ!
先週から携帯Javaをはじめました。
AUのKJX作成ツールで、java.lang.Mathを使用するには
どこにクラスパスを通せばいいのでしょうか?

>C:\EZAppli_SDK\bin\project\None\src\foo.java:140: シンボルを解釈処理できません。
>シンボル: メソッド cos (double)
>位置 : java.lang.Math の クラス
>
>double foo = Math.cos(arg);
>>790
なるほど サンクス
>>793
J2MEでは浮動小数点やsin、cosはつかえんよ。固定小数点なら使えるのでがんばってや。
>>791==787
HTTP通信は同期メソッドだけど、別スレッドでやった方が良いと思う。
通信中と分かる動きのある表示を出した方がユーザビリティがある。
#面倒いのでやりたくないってのは分かりますけど...。
うん、やりたくない。
趣味プログラママンセー。
// というかHTTP通信まだ書いたことない
>>795
そうなんすか!サンクス。
799デフォルトの名無しさん:04/07/21 17:00
i-Appli のメールからのアプリ起動
--B:A
TEXT="アプリ起動"
ADF="http://demo.co.jp/test.jam"
"Param1"="1234"
"Param2"="abcd"

みたいなのって、
Vアプリ と Brew でできるんですかねぇ??
知ってる人教えてください。
できません。BREWはスレ違い。
801デフォルトの名無しさん:04/07/21 17:06
>800
外部からのアプリ起動で、何か言い方法は無いんですかねぇ...
サー、無理やり盛り上がってまいりますた(・∀・)

で、256k専用アプリ書いてるヤシいないのかYO
256KB専用アプリったって、単に100KBより大きいアプリなら256KB専用アプリだし、
P5型でのみ使える機能を使えば容量小さくても結果的に256KB専用アプリと言えるし。
>>802は何をもって256KB専用アプリと言っていて、それで何を聞きたいのよ?
>>803
OOPは利用されているかどうかを知りたいんだYO
(o゚∀゚o)
250KBって大きいようで小さいよな… orz
8bitCPU全盛の頃は、32kとか64kでも広大に感じた訳だが・・・
807780:04/07/22 21:10
>>781
スレッド起動のやり方や通信のやり方は分かるのだが
通信開始の方法とかがわからんのです

簡単に説明すると
mainで接続命令
    ↓
comでtxtファイル読み込み
そこに書いてある情報を頼りに
jpgファイル読み込み
    ↓
mainに受け渡し&表示

という処理なのですが
接続命令をどうやればいいのかと・・・
接続命令って、なんのこといってるんだろう。
俺、携帯アプリのプログラマになりたいから興味あったんらけど
256k専用書いてるヤシはイナイと・・(・A・)
プロはOOP禁止と・・
OOPってなんですか
オブジェクト指向か
>>810
Oopsの略
V601Tなんですが、

destroyAppでRecordStoreへの書き込み処理を書きました。
P5型のエミュではちゃんと動くんですが、
実機V601Tだとどうも保存内容がおかしくなる、もしくは保存されていない、そんなようです。

destroyApp以外で全く同じ保存処理をやらせても問題ない。
終了時にdestroyAppが呼ばれないのはC4型のみ。
destroyAppに処理5秒も絶対かかっていないと言い切れる。


なんか心当たりないでしょうか。
その5秒が何の根拠か分からないけど
処理が多いときdestroyAppで記録できないとかってのは
EZでもあるし、MIDlet全体でありうるんじゃない?
destroyAppで書いたこと全部やらないと終わんない、
っていう仕様っだったとしたらそれは問題だと思う。
815813:04/07/23 22:38
>>814
> 5秒
開発ガイドTips編v1.0.4の1.1.3節に、
P型の場合destroyAppは呼ばれてから5秒後に強制終了される、
と書いてあるんで、この5秒に引っかかっていないってことをいいたかったんです。
やりたい処理自体は実機でも体感できないほど早いんですがねぇ。

結論としては、destroyAppにはあまり期待しない方がいいってことですかね?
保存されないならまだしも、変な値で保存されるっぽかったりと、もう大変で・・・

ユーザからのキー入力があるたびにRecordStore開いて保存しまくりなアプリの方が逆に安心できそうです・・・
RecordStoreへの書き込み自体は重くないから、適宜書き込んでるほうがいいと思う。

電源断とかいう可能性もあるわけだし、データが壊れててもなんとかできるようにつくるのが
いいかもしれないが。
817813:04/07/24 00:19
>>816
キー入力ごとに保存しまくりにすることにします。
どうせ、RecordStore内容はバッファリングされて、
不揮発メモリへの書き込みはアプリ終了後になるようですし、
あんまパフォーマンス気にしなくてもよさそうなので。
>>813
P5ならApplicationManager#flushRMS()で随時書き込み。
実装が機種依存かどうかまでは知らないが。

destroyApp()はハード側の都合による終了処理の真っ最中なわけだから
ソフト側としてはここに処理は書きたくないな、というのが正直なところ。

余計なお世話かもしれないが。
例えばソフトキーに終了機能を割り当てて、ユーザーのキー押下で
アプリ終了処理をし、notifyDestroyed()を呼び出すというやり方もある。
これなら終了処理にかかる時間を気にしなくて済むし、確実に終了処理を
させられるし、destroyApp()には何も書かなくて済む。
Vodaエミュで通信するとエラーになるのに
端末ではきちんと動くのは
どーゆーことですか?
820781:04/07/24 01:24
>>807=780
「通信のやり方は分かるのだが通信開始の方法とかがわからん」
というのがどういうことなのか分かりませんが(^^;

通信処理はまずURLを指定してサーバへ接続することから始めます。
Connector.open()を使います。
その後、ストリームをオープンして、データを読み書きして、
最後にストリームと接続を閉じます。
使用するAPIはCLDCのAPIリファレンスで確認してください。
具体的なソースはネットで検索したりvodafoneのドキュメントを参考にしてください。
VもEzもエミュはつかえん。
AスレッドからBスレッドの再描画できないの?
それはスレッド間通信のことか?
Graphicsを使いまわしているってことなら、結果は完全に実装依存だな。
できなかないが、何が起こるかはわからん。
c =(HttpConnection)Connector.open(url);
in=c.openInputStream();
data=new byte[(int)c.getLength()];
for (i=0;i<data.length;i++) data[i]=(byte)in.read();
in.close();
c.close();

で通信してるのですが、
収得済みデータサイズを出したいのですが出せるのでしょうか?
100バイト中50バイト受信しました な感じの・・。
imonaにあるようなやつです。
あああああああああ
容量制限が、UZeeeeeeeeeeeeee!!!

容量ダイエットのために、ソースの可読性を落とさなければならないなんて……ぐすん。

ソースの可読性をそのままに、コンパイルしてくれるプログラム、あったらいいのに。
例えば、ソースに含まれる public static final な定数を、
すべて生の数字に変えてからコンパイルを実行する、とかね。
それぐらいだったら、実現できそうだよね。難しそうだけど。
>825
おーい。J2SE1.3.1over使ってるか?
最適化デフォルトならそれくらいはやってくれてるぞ。
jadかなんかでディスコンパイルすりゃ分かる。
あとProGuard使ってみるとか。
>>824
コンテンツサイズと受信ずみサイズをインスタンスフィールドにする
受信するごとに repaint()する
paint()でプログレスを自前で描画する
定数置換するだけならいろいろあるっしょ。
>>825
@IT iアプリを10Kbytesに収めるテクニック
http://www.atmarkit.co.jp/fmobile/rensai/doja07/doja07.html
とか参考に。

ProGuard http://proguard.sourceforge.net/ は有名だね。
830824:04/07/24 23:49
>>827
受信済みサイズってdata.length?

無知でスマソ・・・
831824:04/07/25 00:44
スマソ
解決しました
>>825
気持ちはわかるが、それは基本的には最後の手段だぞ。
単に容量落とすだけなら、いろいろ手段はある。

ProGuard類の使用でオビュファスケーション&最適化して削る、
C用のプリプロセッサ等を併用してマクロ&インライン関数の恩恵にあずかる、
7zip等の強力なアーカイバを使ってJARのサイズを削る、とか。

一定以上攻め込んだアプリ書こうとすれば、どうしてもクラスを削除したり
汚いソースを書かざるを得なくもなるが、それ以前にできる努力も馬鹿にならない。
がんばれ。



ところで、言いがかりだと思うんだけど、RetroGuardって、
クラスが(つーかJAVAファイルが)複数あると、機嫌損ねない?
時々実機はおろかエミュでも動かんJARが作られてしまう気がする。
ProGuardは大丈夫なのかな、その辺。
2004/07/25 14:42:55 java.util.jar.Attributes read
警告: Duplicate name in Manifest: MIDlet-Name
2004/07/25 14:42:55 java.util.jar.Attributes read
警告: Duplicate name in Manifest: MIDlet-Vendor
2004/07/25 14:42:55 java.util.jar.Attributes read
警告: Duplicate name in Manifest: MIDlet-Version
2004/07/25 14:42:56 java.util.jar.Attributes read
警告: Duplicate name in Manifest: MicroEdition-Configuration
2004/07/25 14:42:56 java.util.jar.Attributes read
警告: Duplicate name in Manifest: MicroEdition-Profile
2004/07/25 14:42:56 java.util.jar.Attributes read
警告: Duplicate name in Manifest: MIDlet-Data-Size
2004/07/25 14:42:56 java.util.jar.Attributes read
警告: Duplicate name in Manifest: MIDlet-1

コンパイルのときにこのエラーが出るのだが・・・
どーゆー意味?
Vodaでテキストフィールドを表示させるにはどうすればいいのでしょうか?
>>834
ttp://web.sfc.keio.ac.jp/~s01030na/personal/html/prog/MIDP/TextField_sample.html

com.jblend.micro.lcdui.LocalizedTextFieldも参照するとよいアル
>832
前の開発で使ってた限りではだいじょぶだったYo > ProGuard
恐らく数十回はビルドを繰り返したが一度もその手のトラブルに
引っかかったことはなかった。
最初使ったときはうっかりベリファイ済みのclassファイルに適用して
「なんでじゃー!!」と頭を抱えたことがあるがw

>833
……読んで字のごとく、MANIFEST.MFに
同じMIDlet-Nameを複数書いてるんでないの?
見直ししる。
837834:04/07/25 21:15
>>835
レスサンクス
でも、Graphics gで書かれている内容と切り替えるには
どうやれば・・・・

分かりにくくてスマソ
>>837
Graphics? Displayableを理解してないのか?
paintの引数のGraphicsはCanvas描画用のグラフィックで、えっとえっと・・・何からいえばいいんだろ。
ArithmeticExceptionエラーが出るのだが、
見当たるところがない・・・。

考えられるのは
sh.info=1;
というのしかないのだが、
これで発生する可能性あるの?
ってか、もしこれだったら解決法よろ・・。
>840
で、そのshって何よ?
842840:04/07/26 23:24
shというスレッド
それだけでわかったら超能力者だな。
844834:04/07/27 01:00
>>839
サンクス
出来ました!

がその逆はどうすれば・・・。
Display.getDisplay(this).setCurrent(new HogeCancas());
だとエラーになるし。。。
Cancasだから・・?
どんなエラーなのかだそうよ。
ホゲカンカス いい名だ
847840:04/07/28 00:33
private Image readImage(String url) {
try {
NETWORKinfo=1;
c =(HttpConnection)Connector.open(url);
in=c.openInputStream();

NETWORKinfo=2;
data=new byte[(int)c.getLength()];
for (i=0;i<data.length;i++) {
data[i]=(byte)in.read();
repaint();
}

NETWORKinfo=3;
in.close();
c.close();
main.NETWORKinfo=0;
return Image.createImage(data,0,data.length);
} catch (Exception e) {
//例外
NETWORKinfo=0;
}
}
で通信、
848840:04/07/28 00:38
if(net.NETWORKinfo==1){
g.drawString("接続中...",0,259,g.LEFT|g.BOTTOM);
}else if(net.NETWORKinfo==2){
g.drawString(""+DataALLSize+"/"+DataGetSize,0,259,g.LEFT|g.BOTTOM);
}else if(net.NETWORKinfo==3){
g.drawString("処理中...",0,259,g.LEFT|g.BOTTOM);
}
で表示してるのだが、
最初の通信の開始の時だけArithmeticExceptionが出る。
エラーメッセージは
java.lang.ArithmeticException occurred in main.paint(Graphics), ignored.
です。
849840:04/07/28 01:01

スミマセン・・
自己解決しました
>>834
もしかして、
Display.getDisplay(this).setCurrent(new HogeCancas());
とか書くことが切替えだと本気で思ってんの?
setCurrentのカッコの中を対象のインスタンスを指す変数書けばいいのよ。
MIDletで
 Form form = new Form(〜);
 〜Canvas canvas = new 〜Canvas();
と書いたら(〜は自分の使う内容に合わせて)、切替えたいときMIDlet内で
 Display.getDisplay(this).setCurrent( form );
とか
 Display.getDisplay(this).setCurrent( canvas );
とかすりゃあいいのよ。
851834:04/07/28 12:02
>>850
javax.microedition.lcdui.Display の getDisplay(javax.microedition.midlet.MIDlet) は (main) に適用できません。
Display.getDisplay(this).setCurrent( from );
と言われるのですが。。

スレッドの中で処理してるのがいけない?
>>851
Javaの基礎がわかってないような気がする。

getDisplayの引数には、MIDlet(及びその派生クラス)を指定するんだよ。
853かけだしJavarer:04/07/28 15:38
Vアプリ作ってるんですけど、
コンパイルは通るんですが、エミュレーターで実行しようと思うと、
NoClassDefFoundError: comp/./testapp
at javax.microedition.midlet.MIDlet.main(+38)
destroy Old Emulator....
って出て実行できないんです。
調べてみたらコンパイルの時点で、pathがどうこうって、書いてあるんですが、
よくわからなくて困ってます。
どうゆう事なんですかねぇ...(汗)
>>853
同じ質問をあちこちでするな。

PATHがつながってないんだよ。
ちゃんとエラーに書いてあるだろ?
855かけだしJavarer:04/07/29 11:11
それがわかんねぇから聞いてんだよ。
人に聞く前に自分で調べろ阿呆。
エラーメッセージすら読めないんだったらそもそもプログラマは務まらん。
そんなこと言わずに教えてやれよ
858854:04/07/29 12:15
>>857
じゃあ、あとは頼んだよ。
859デフォルトの名無しさん:04/07/29 15:39
>>856
わかんねぇんだろ?他のスレでわからないやつはだいたい
こんなメッセージ書きやがる。
>>859
うまくいかない原因を探して、対策を考えて、それを実行する。
その当たり前の手順が当たり前にできない馬鹿は、結局問題の本質を把握
できてないから、その場を乗り切ったとしてもまた同じような問題で引っかかる。

だから、自分で手と頭を使って調べたり考えたりすることが当たり前にできない
奴がプログラムを書こうとするのがまず間違い。周りに迷惑をかけるだけかけた
挙句、結局何も身につかずに終わるのがオチ。

なんでム板でこんなレベルの話をしなければならんのだ。
861かけだしJavarer:04/07/29 19:23
>>859
いや、そんなに熱くならなくてもいいんですけど...(汗)
ただ、色々調べてもなかなか解決しないんで...
at javax.microedition.midlet.MIDlet.main(+38)
destroy Old Emulator....
ってやっぱり出るんですよねぇ...
>>861
ド素人がどんなソース書いてんかなんて想像つかんのよ。
コンパイラ(機械)がエラー内容教えてくれてんのを無視するようなやつに
生身の人間が親切に教えてくれると思うか?ちょっと考えてみ。

NoClassDefFoundErrorなんてのはJavaでは(初心者が)よくやる間違い。
どんな環境でアプリ作ってんのか知らんけど
最初に実行するクラスがちゃんと指定されてない(JADのMIDlet-1)んだろ。
J2MEのWTKなら初っ端にプロジェクト名とクラス名あったと思うけど。
>>861
ソースコードとjad、manifestをまとめてどっかのアップローダに
上げてみたら、良いアドバイスがくるかも。
ここも夏ですか。_| ̄|○
865854:04/07/30 03:27
親切な奴も結構居るんだな。

>> 861
まずは、何を使ってビルドと実行をしているのかを言わないと対処方法は分からん。
WTKか?バージョンは?

それとコンパイル時に出てるメッセージがないと何が起きてるかワカンラン。
そもそもアプリはビルドできてるんか?

質問する時には、必要な情報を出すのが基本だぞ。
まったく、MIDP2.0端末の開発に忙しい時に...。
口調は荒くても、親切な奴ばかりだなw
とにかく質問するときは、状況をこれでもかと詳しく書くこと。

特にエラーメッセージ書かずに「エラーがでてできません」なんて言われても困る
俺は別に困らんけどな。
よーしパパ >867 を困らせちゃうぞー

JAVAをインストロールできません
サンのページからダウンロードしてきたファイルをダブルクリックしたんですが、エラーが出ます。
いろいろやってみたんですがわかりません、困りました。
サンのサイトが壊れてるんでしょうか?
OSはWINDOUSでCPUはセレロンです。
ドコモのNのパカパカで動くFFみたいなRPGを作りたいです。
>867 さんよろしくお願いします。。。。。
869868:04/07/30 13:44
しまった、こっちはMIDPスレだったorz
「スレ違い」の一言で済むな。
>>868-869
867は「俺は質問するだけで、こたえねーから困らん」と言ってるんだが。
871868:04/07/30 16:06
つまらんネタ振りしてスマソ

アプリゲットで動作確認用端末貸し出しサービスやるらしい。
http://ac-admin.appget.com/service.htm
872867:04/07/30 16:23
いや、ちゃんと説明されてない質問には答えないので、困らないといいたかったんだが。
UDP使いたいにゃー
874デフォルトの名無しさん:04/07/30 23:28
初心者なんですがP5型の開発環境(バーコードリーダーとか)作るには
JDK1.4、WTK2.1、P5型用のVodafoneエミュレーターで作れるんかな?
で、CLDC-1.0、MIDP-1.0、JSCL-1.2.1でいいんですかね?
Vodafoneのドキュメントにそこまで書いていないような・・・
あとはPathの設定とかでっかね?
WTKは1.0.xのほうがいいような。
JDK1.3の方が良い予感。
877デフォルトの名無しさん:04/07/31 12:53
JADとマニフェストファイルを生成する
メタプログラムをJavaで書いてみましたです。
おまいらはXMLとか使ってるですか。
antにおまかせ。
879デフォルトの名無しさん:04/07/31 13:54
ふむ。
ヴぉだのサンプルもantでビルドな雰囲気だよな。
使ってみるかな。
質問します。

ボーダフォン用アプリの自作環境を作成中の者です。
ボーダフォン提供の「SpriteCanvasクラス」を使ったプログラムから、
コマンドラインにてJAR・JADファイルを作り、携帯の実機で実行するところまではできました。
ですが、プログラム変更のたびにJADファイル内の「JARファイルのサイズ」を
書き換えなくてはなりません。
それがめんどうなので「J2ME,Wireless Toolkit」を使って、ビルドのたびに
JADファイルを作ってもらおうと考えました。

ボーダフォン提供の「SpriteCanvasクラス」を使っていますので、
「J2ME,Wireless Toolkit」には(コンパイル・事前検証の際に)、
ボーダフォン提供のライブラリ「stubclasses」を見てもらはなければなりません。

「J2ME,Wireless Toolkit」のlibディレクトリに「stubclasses」をコピーしたり、
いろいろやってみましたが、ビルドに失敗します。

他の方々は、この「J2ME,Wireless Toolkitを使って、ボーダフォン提供のクラスを使った
アプリを作る」ということを、どうやって実現させているのでしょうか?
http://homepage1.nifty.com/marukun/java/vapp.html
コマンドプロンプト用 jadファイル サイズアップデートツール(jadupd)
>>880
auのKJX作成ツール使うってのもいいんじゃない?
つか漏れはEZメインだから、KJXツールしか使ったことねぇ。
>>880
Wireless Toolkitのlibディレクトリにmidpapi.zipってファイルがあるはずだ。
この中にstubclassesの中身を一緒に圧縮しなおせばOKなはず。
884880:04/07/31 21:04
みなさんサンクスです!

>881
さっそく試して使ってみたところ、JARファイル内「JADファイルサイズ」を更新してくれて
いましたので、自作用バッチファイルに組み込みました。心配していた環境作りは、
881さんのおかげで解決いたしました。ありがとうございました!


>882
au用のアプリは作ったことがないのですが、auの独自拡張APIである「KDDI Profile」を使うプログラムを、
Wireless Toolkitでビルドしてらっしゃるのでしょうか?
もしそうでしたら、Wireless Toolkit(のコンパイル・事前検証の際) に「KDDI Profile」を見てもらうのに
どうやってらっしゃるのですか?
その方法が、ボーダフォン提供のライブラリ「stubclasses」を見てもらうことの参考になればいいのですが。


>883
>397さんのレスからたどって、「+lacha」というツールを使ってみたのですが、
このツールを起動する際の「SHIFT+ダブルクリック」で出てくるウインドウが、
レスからたどった説明と違ってたので、行き詰まっておりました。

また、自分で考えた方法として、「stubclasses」 のファイル名を「midpapi」に書き換えて、
Wireless Toolkitのlibディレクトリ上のものと置き換えると、
ボーダフォン提供のクラスを使わないプログラムはビルドできたのですが、
使うプログラムは以下のように表示されてビルドできませんでした。

「ERROR: native methods should not appearError preverifying class com.jblend.io.
ConnectorImplcom.sun.kvem.ktools.ExecutionException: Preverifier returned 1
ビルドに失敗しました」

再圧縮の方法は、もう少しいろいろ試してみます。ありがとうございました!
885882:04/07/31 23:28
>>884
WTKを使うわけではないです(のでWTKを使って、ではなく、以下参考までに)。
詳細は397の綿100号さんのサイト見てもらえば書いているんですけど、
KJXツールではWTKでビルドするのとほぼ同様の手順を
midpapi.zipに加えauの拡張API(kddip3.jar)を使ってやってくれます。
ここで使うAPIファイルは変更・追加できるので、
kddip3.jarの代わりにstubclasses.zipを使うように指定するだけでOK。
886デフォルトの名無しさん:04/08/01 10:27
vodaエミュ(P5)のキーリピート制御
DiviceControl#setKeyRepeatState(int key, boolean state)て
バグってるぽ?
まったく制御できずリピートイベントが発生するのは
方向のみっぽいのですけんど。
情報求ム〜
887880:04/08/01 11:37
>885
ご丁寧な説明、ありがとうございます!
そのツールは、代わりに指定できるということで、使えそうですね。
今度やってみます。そうなると、「まさか、au用のツールを使うことになるとは・・・」という
ことになるんですね。
とても参考になりました!
>>886
Vアプリ開発ガイドTips編

JSCL - DeviceControl
 注意:
 ・DeviceControl#setKeyRepeatState()の振る舞いは端末の実装に依存する。
>>888
んーんー・・
そか。ありがd。
システムだよりのリピートは事実上使えないってとこかね〜
890デフォルトの名無しさん:04/08/01 18:18
Vアプリ初めて、かつ初心者です。サンプル(HelloWorld)プログラムを
コンパイル、preverify、jarファイル作成、エミュレーターで動作確認後
アップして携帯実機で動かそうと思ったらダウンロードはできるんですが
実行(起動)するとエラーとなって起動できません。
どんな原因が考えられるでしょうか?
お助けを。
jadファイルやマニフェストファイルには間違いないと思うのですが・・・
>>890
画面サイズかな。
>>890
まずはTIPS参照だYO
それでもダメなら端末の種類とソース類アップだYO
ガンガレ ノシ
だね。
特にMANIFEST.MFの解釈とエラーメッセージの内容には
機種毎の差がアホほどあるから、まずは>>892から丁寧に逝ってみよう。
ぶっちゃけ、ある程度実機でのテストに慣れるまでは当たり前の様に
見舞われる現象で、かつ、一度目星さえ付いちまえば、十分自分で対処できるようになる
ネタでもあるので、餅突いてがんばれ。
894デフォルトの名無しさん:04/08/02 01:34
すいません。似たような質問が並んでしまうかもしれませんが
JDK1.4、WTK2.1の環境でP5型対応のアプリを作ろうとしています。
が、WTKでビルドする際にstubclasses.zipをそのプロジェクトのlib
に入れてjarファイル作成するとstubclasses.zipまるごとjarファイルに
入ってしまいます。(ファイルサイズがデカクなります)
それをVodafoneのエミュで動かそうとしてもエラーが出る。
コマンドでjarファイルを作成するとjarファイルのサイズは問題なく
できるのですがVodafoneのエミュではやはり動かない。
エミュではat javax.microedition.midlet.MIDlet.main(+38)って
エラーが出ているんですけどね。
なんか説明もヘタですいません。
なんかヒントがありましたらお願いします。
自分でがんばろうとは思いますが・・・
easyなミスでしょうか??
>>894
なんでそう、中途半端なエラーメッセージしか書かないんだろうなぁ・・・

少なくとも、前者のjarに追加クラスがまとめて入ってしまうのはダメ。
896デフォルトの名無しさん:04/08/02 02:09
>>895
レスありがとうございます。
エラーは・・・エミュのメッセージ表示画面には
それしか出てきません。。。
コマンドからjarファイル作成してもやはりエミュでは動きません。
今もずっとやってるんですけど。。。
897895:04/08/02 02:48
>>896
んじゃ、適当にサンプルを実行してみてテストするとか。
http://www.saturn.dti.ne.jp/~npaka/kvm/midp/index.html

サンプルで動くなら→自作のやつのどっかが悪い
動かないなら→エミュのインスコとかpath設定がまずい。

>>896
jarの拡張子zipにして展開したら
そもそもクラスが入ってなかったとか
マニフェストファイルで存在しないクラスを指定しているというような
実行不能な場合に
エミュは
javax.microedition.midlet.MIDlet.main(+38)
を吐く。
easyミスの可能性99%です。
ガンガレ ノシ
@javacでコンパイル
-bootclasspathを指定していますか。
必要なクラスが生成されていますか。
Apreverifyでクラスを検証
-bootclasspathを指定していますか。
確実に検証できていますか。
検証を忘れていると
エミュはat javax.microedition.midlet.MIDlet.main(+38)
を吐いて実行できません。
見た目上(ファイルサイズなどで)検証済みであるかどうか
わかるとは限りません。
BMANIFEST.MFと検証済みclassと必要なリソースでJARファイルを作成
忘れ物があっても誰も教えてくれません。
不安があったら拡張子をzipにして展開してみましょう。
足りないものがあったら実行時にエミュが
at javax.microedition.midlet.MIDlet.main(+38)
を吐きます。
Cその他の注意
MANIFESTファイルとJADファイルの以下の部分が共通ですか。
MIDlet-Name: HelloWold / MIDlet-Version: 1.0 / MIDlet-Vendor: orz

MANIFESTファイルの MIDlet-1: HelloWorld,,Test
は正しく指定されていますか。後ろの方はエントリのクラス名です。
不要な拡張子はつけていませんか。
その他不必要な項目はありませんか。

このあたりのことがカッタルイのは経験者ならよく知っている。
乗り越えて見た実機で動く高精細のHelloWorldは美しかったYO
ガンガレ ノシ
アプリゲットにVアプリをアップしようとしてるんだけど
サイズが50k超える辺りで拒否られる。
なんでか教えてプリーズ
MIDlet-OCL: JSCL-1.1.0
MIDlet-OCL: JSCL-1.2.0


>>900
jadファイルにJSCLのバージョンかいてみたら?
>>901
サンクス!
それで通った、ということは
アプリゲットは俺に断りもなく審査の仕様変更したわけだな
そうかそうか・・俺は放置ですか・・
過去に通したやつまで通らないから
おかしいと思っていたんですがね・・o..rz
>>902
一応いっておくが、MIDlet-OCLの記述は必須だから、
今まで問題なく動いていたのがたまたまの偶然ということになる。
・・・まぁオレも人のこといえんのだが・・・
以前は任意の属性です。
たまたまの偶然などといい加減なことをいわないでください。
com.nttdocomo.ui.FontのgetLineBreakにかわるAPIはMIDPにもありますでしょうか?
それともsubstringWidthとかを使って自分でチェックするしかないのでしょうか?
906903:04/08/03 04:02
>>903
そだったっけ?
少なくともC4型仕様が一般に公開された時点では、ドキュメントに必須って書いてあったと記憶してたんだが、
P4型のみの時は必須じゃなかったのか。

>>905
たぶんsubstringWidth使わないとダメ。
今んとこ等角フォントばっかりだと思うから、等角フォント前提にすれば位置探す処理を簡易化できる。
「ありますでしょうか?」ってドコの国の言葉なの?
ようこそドコモの国へ
「在りますでしょうか」ってことだろ
日本語を読めない人もいるんだな
ございますか
911デフォルトの名無しさん:04/08/03 17:06
ござる
日本語に、敬語を二重に使う用例は無いということだよ。
「ないのでしょうか?」とその後に聞いてるのだから、
「あるのでしょうか?」と聞けばよかったわけだな。
SH53の在庫ありますでしょうか?
てな感じで現実的には使われてますけどね、
文章にすると違和感ありますでしょう。
間違えだってことを知らないか、知っていてもつい使ってしまうんだろう。
ら抜き言葉と同じでもう世間に広まっちゃって修正できないことかもな。
文章で書くなら、「ございますでしょうか」の方が自然だよね。
>>916
それも日本語としてはおかしいぞ
日本語の乱れなんちゅうて流通したもん勝ちですよ。
清少納言が現代の日本語聞いたら
なんと言の葉の乱れたことよ、よよよ。
とさぞかし嘆くことでしょう。
食べられますか?なんて言ったら
国語の先生に「ら」が多いと怒られる日も
来るかもしれなくってよ?
ここは何のスレなんディスカ?
ここは何のスレだ
>>918-920
そう思うならスルーしる!!
2ちゃんのあらゆるスレは正しい日本語講座スレにすり替わる可能性を秘めてます
愛国心はまだ衰えてません
922デフォルトの名無しさん:04/08/04 12:55
ご質問です。
Vアプリ P5型でHTTP通信を行うためには、

・ポートは80番のみ
・サーバのMIMEタイプ設定ファイルに
 application/java か application/java-archive の設定を追加する。
・実際の通信時にはCGIプログラムのHTTPヘッダに
 application/java か application/java-archive を設定する
・アプリ側でも通信時にはHTTPヘッダに
 application/java か application/java-archive を設定する

つなみに、VアプリP5型では、
iアプリのような"text/plain"形式のテキストを送受信する場合でも、
application/java か application/java-archive を設定する
のでしょうか?

どうかご教授いただけますとありがたいです。
923922:04/08/04 12:57
922です。

上記の設定で間違いや足りない点等ございましたら、
ご指摘頂けますとありがたいです。

よろしくお願いいたします。
この流れで、「ご質問です。」と書かれると、ネタとしか思えんなあ。
>>922
いくらなんでも自分のすることに「ご」をつけるのはおかしいと気づかないのか?
自分に対して尊敬語っていうのは相手に対して謙譲語と同じレベルだぞ?
空気を読んで軽くボケた>>922>>925がマジレスして
空気を凍らせてしまっているようにも見える。
ここは難しいインターネッツですね。
927デフォルトの名無しさん:04/08/04 17:34
>926
そのようですね。

>925
ここで「ご」についてだけ書き込みするなら、いちいちうるさいですよ。
意味は通じてるはずですからね。
928デフォルトの名無しさん:04/08/04 17:48
922の 「ご質問です」は、だんだんと一般化していくのかも。

これ読んでみて。
ttp://home.alc.co.jp/db/owa/jpn_npa?stage=2&sn=79
929デフォルトの名無しさん:04/08/04 17:49
ところで、1000になる前に922の質問内容に答えてあげたらどうなの。
Micro3D V3を使っていて、
複数のモデルを描画したいんだけど、具体的にどんな手順を踏めばいいの?

ちなみに、1つのモデルを描画、2つのモデルを同一座標に描画はできました。

モデル自身が持っている座標を変える方法が分からなかったので、
ViewMatrixに平行移動を無理やり合成して、1つ描画するたびにViewを更新、
2回に分けて描画したら、2回目のほうによってしまいました。これは間違いだった模様・・

やはり、Figureの内部に座標を持っているとして、その座標をいじらないといけないのでしょうか?
それとも、低レベルライブラリを利用して自分で作らないと駄目?

教えてえらいひとー
>>930
iアプリでの経験だけど、

1)単位行列を用意
2)スケーリング
3)回転
4)平行移動
5)ビューポート変換

の順で変換行列を作って、Graphics3D#setViewTrans()でMicro3Dの変換行列
自体に設定した上でGraphics3D#renderFigure()してやることでできることはできた。

ただ、動くんだけど釈然としない方法ではあるので、他にもっといい方法があるかも。
>>931

ありがとう、とりあえずは実績のあるその方法でチャレンジしてみるよ、ママン
933デフォルトの名無しさん:04/08/05 00:40
MIDP1.0 で、PNGファイルを実行時に編集することは可能でしょうか?
例えば、PNGファイルを読み込んで、上下反転とか、画像サイズを2倍にしたりとかってことなんですけど、、、
どなたかサンプルキヴォンヌ

また、resフォルダにBMPファイルを入れて置き、
実行時に BMP -> PNG と変換して、表示させるようなことをしてる方はいらっしゃいますか?
>933
>PNGファイルを読み込んで、上下反転とか、画像サイズを2倍にしたりとか
MIDP1.0の範囲内では無理。
読み込んだ画像に文字を入れる、くらいなら可能だけど。
(Image#getGraphics()でGraphicsインスタンス取って(ry )
BMPをPNGに変換するのは……やってできんことはないかもしれんが、
多分エンコーダで20kは食う。素直に開発機上でPNGにしなされ。
>>933
できるかできないかということなら、できないということはない、ってとこかな。
PNGのバイナリデータを直接いじる必要があります。
JSCL1.2ならImageに読み込んで、描画する際にいろいろできるけど。

わざわざBMPからPNGに変換してるような変な人はいないと思われ。
>>934,935
純粋なMIDP1.0だけではやはり無理ですか。

ただ、画像ファイルがいっぱいあり、どうにかしてアプリサイズを小さくしたくて、
実行時に画像ファイルを作り出すようなことをしようと思っております。
幸い、左右対称、上下対象な画像データが多いので、どちらか半分だけ画像データとしてもっておいて、
実行時に反転して読み込んで一枚の画像にしようかと、、、

その際、PNGデータを直接扱うよりかは、BMPの方が簡単そうなので、
BMPで元データを作って、実行時にPNGデータを作り出すのはどうだろうか?
と考えた付いた次第です。

みなさんは、大量にデータファイルがある場合にどうやってアプリサイズを小さくしているのでしょうかねぇ・・
どんなにたくさん画像使ってんだろ。
VならとっととSprite使うのがいいな。
>>922
その質問は、Javaではなく、HTTPの質問ってこと?
設定するってのは、リクエストのAcceptヘッダと
レスポンスのContent-Typeヘッダのことだよね?

application/java や application/java-archive は Java。
テキストなら text/* 、イメージなら image/* などになる。

あと、VはDと違って、TCP/IP上のHTTPのはずだから、
特別なことはないと思う。でもゲートウェイが邪魔することはあり。
>>936
サイズを小さくするのに BMP を使うって、なぜ?
BMPの方がでかくない?

どんな画像データか知らないけど、プログラムで描けないの?
>>936
容量制限ギリギリの攻防でないならアプリサイズを小さくする努力はしない。
画像ファイルが多くて容量の関係からリソースに含めきれない場合、
アプリ起動後にサーバから取得してストレージ領域に保存する。
画像は基本的にPNGフォーマット。

いくら線対称な画像だろうと内部で生成することは考えない。
90度単位の回転、上下反転、左右反転で使い回せる画像なら
正位置の画像だけ持っておき、描画時にそれらの操作を指定して表示する。
もちろんauやVodafoneが用意している拡張Graphicsクラスを使ってだ。
自分の場合はMIDP1.0のみにこだわる必要がないのでこのようにしている。
>>936
透過属性がなくてもいいなら、
Image.createImage(w, h)
で動的に作り出せるよ。

あとスピードを求めないなら、左右対称とかは楽勝だけど。
1ドット幅づつ逆からdrawImageしていけばいい。
942デフォルトの名無しさん:04/08/05 09:32
VアプリにてPNGを仮想画面(drawBackgroundで描画する領域)に描画することは
出来るのでしょうか?
出来るのなら方法を教えてください。
Vアプリ開発ガイドによると
C型だとACanvas、P型だとSpriteCanvasでpaint()をオーバーライドすれば
Graphicsメソッドを呼び出せるらしいです。
注意点が幾つかあるようなのでガイドを参照した方が良いと思う。
ガイドは
http://developers.vodafone.jp
のVアプリ開発ガイド[開発編]
http://developers.vodafone.jp/dp/tool_dl/download.php?docid=302
です。
945デフォルトの名無しさん:04/08/05 10:18
iアプリだとカメラ画像を読み込んでアプリの背景等にdrawImageをすることができるのですが、
Vアプリでも同様なことができるのでしょうか?
サンプルサイト等ご存知でしたら教えて下さい。
>>945
SpricateCanvasのpaintのGraphicsに対する描画は背景になされるので、
paintでGraphicsに描画後copyAreaで転送して、
フレームバッファでさらに加工してdrawFrameBufferすればOK
947945:04/08/05 10:50
>>946
レスありがとうございます。
私は942の方とは別人です。
カメラ画像のファイル名選択および読み込みの部分はご存じないでしょうか?
948922:04/08/05 14:13
938さん レスありがとうございます。

サンプルプログラムがあるサイトなど、
ご存知でしたらリンク貼って頂けますと助かります。
VODAで、アプリからクリップボードにテキストをコピーする方法ってないですか?
VODAのJAVADOC探してるんですが見つけられません。
>>949
ありません。
951933 & 936:04/08/05 23:07
みなさん、レスありがとうございます。

>>937
>VならとっととSprite使うのがいいな。

残念ながら、SprintPCSなんです。

>>939
>サイズを小さくするのに BMP を使うって、なぜ?
>BMPの方がでかくない?

確かに元データはでかいですけど、JARにすれば小さくなるので、
ひとまずOKかな、と。
まずは実行ファイルサイズ容量をどうにかするのが先決なので、、
その後、ヒープが足りなーいとなるのかもしれませんが orz..

>>940
>画像ファイルが多くて容量の関係からリソースに含めきれない場合、
>アプリ起動後にサーバから取得してストレージ領域に保存する。

これが有力候補ですね。

>>941
>透過属性がなくてもいいなら、

残念ながら透過属性が必要なんですよ。。
>>951
普通に考えてBMPをJarに入れたとき、PNGより小さくなるとは思えないよ。
PNGの圧縮は効率が良くなるようにフィルタ処理も加わるから、大抵素の物をdeflateするよりは小さくなるの。
Jarの圧縮によっぽど優秀なdeflateツールを使って、PNGのツールがヘタレなら逆転するかもしれないけど。
953946:04/08/06 00:52
>>949
機種依存になるかもしれないけど、
東芝機種はTextFieldなどでユーザに文字入力をしてもらっている画面でコピーができるので、
ユーザに手動でコピーしてもらえる環境を用意することはできる。
あんま使えんけど。

>>947
なら、CameraConnectionとStorageConnectionのクラス概要くらい嫁。

>>951
試しに、BMPをzip圧縮してみ。
どれだけ使えないかがわかる。
とっととPNGにしる。
俺は1ドットずつ打つ処理を高速化するために、バイト配列→無圧縮PNGやってた。

>>953
携帯で使うサイズくらいならPNGファイルよりもBMPのときの方がいい場合が多いよ。
余計なヘッダないし。
使うグラフィックを大きな画像一つにまとめて、Imageの切り出しで使うってのはどうなんだろ。
>>955
そこが不思議なんだよな。
大きな画像1つにまとめた段階で、透過属性がなくなってしまうのだが…。
まとめた段階でというか、切り出したときに透過属性が付加されないんでしょう。
958デフォルトの名無しさん:04/08/06 18:00
すみません、JARツールのことで質問です。

JARにディレクトリを指定し、その中の特定のファイルだけをアーカイブに
含めないようにしたいのですが、JARツールでこのようなことは可能でしょうか?
オプションを見る限り無理っぽいのですが、別のツールを使った方法などで
やり方をご存知の方いらっしゃったら宜しくお願いします。

具体的には以下の様なケースです。
res/aaa.gif  ←
res/bbb.gif  ←resフォルダ中のファイルはJARに含めたい。
res/ccc.gif  ←
res/.svn/・・・ ←このディレクトリ以下のファイルはJARに含めたくない。

要はファイルをSubversionで管理しているのですが、その情報がディレクトリに
含まれてしまうのでJARから除去したいのです・・・
バッチファイルで
resフォルダをcopy、
コピったフォルダから.svnフォルダ削除、
jar -C コピッたフォルダ
削除 /Q コピッたフォルダ
むにゃむにゃ。元通り。jarゲット。なんてね
eclipse は楽でっせ
eclipse起動遅いからイヤン
うちは、
resOrgフォルダっての作って、そこをSubversionの対象にして
resフォルダは対象外にしてる。
で、バッチファイルでresOrgからresにコピーしてから、jarを作成するようにしてる
これじゃめ?
963962:04/08/06 20:16
あ、結局リソースを削除したときに残るから
make前にresフォルダ内をクリアしてるわ

やってることは、959とほぼ一緒でした。
>958
antのjarタスクで、filesetのexclude使えば解決。
そろそろ次スレ準備?
立てたっす
CLDC+MIDP+携帯電話用Javaスレッド part 3
http://pc5.2ch.net/test/read.cgi/tech/1091798483/
>>966
乙!
968951:04/08/07 00:10
>>952,953
おっしゃる通りですね。BMPより強力なPNG圧縮かけたほうが、
サイズが小さくなりました。

>試しに、BMPをzip圧縮してみ。

1. BMP 474KB -> JAR 24KB
2. 1.のBMP無圧縮PNG 475KB -> JAR 25KB
3. 1.のBMP圧縮PNG 20KB -> JAR 20KB

素直に、最大限圧縮したPNGファイルを反転したファイルも含めて
JAR化してやった方がいいのかな・・

>>954
無圧縮PNGで実行時に画像ファイル作成されたんですね!
実機での調子はいかがでしたか?
メモリ使用量、読み込み、表示レスポンスなど、問題なかったでしょうか?

969954:04/08/07 22:14
>>968
A5403CAだったけど、256*240の画像でバイト配列から無圧縮PNGにするのに1秒強くらいかかるよ。
メモリ使用量までは覚えてないや、ゴメン。
>969=954
横からスマソだが
何かそれだと、オフスクリーンのImage持っといてそこに描いた方が
早そうに思えるんだけど……漏れ何か読み落としてマスカ??
971954:04/08/08 00:29
>>970
俺の場合、リアルタイムに256*240の画像を作成する必要があって、
普通に1pixづつ描いていたら時間がかかるから、バイト配列→PNG
という手段にでただけ。なので、オフスクリーンとかは関係ない。
お世話になってます。
おかげさまで作成しているアプリがアプリらしくなってきました。

Vアプリでブラウザ起動がうまくいかないのですが・・・・

BrowserConnection brs;
String url2 = "http://www.yahoo.co.jp";

try {
    brs = ( BrowserConnection ) Connector.open(url2);
    brs.connect();
    brs.close();
  } catch (Exception e) {}


jadファイルはMIDlet-Network: Y 以外に必要なものとかありますかね?

なんかお気づきの点がありましたらお願いします。
>>972
String url2 = "http://www.yahoo.co.jp";
じゃなくて
String url2 = "url://www.yahoo.co.jp";
でやってみ。
>>973

ありがとうございます!
いけました。