iモード携帯電話用Jav ..
1:デフォルトの名無しさん
06/11/22 13:10:01
NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。
※DoCoMo以外は下記スレへ。
CLDC+MIDP+携帯電話用Javaスレッド part 6
スレリンク(tech板)
■ iアプリ特有ではなくJava一般に関する質問はこちらへ
【初心者】Java質問・相談スレッド94【大歓迎】
スレリンク(tech板)
■ iモード携帯電話用Java(iアプリ)まとめサイト
URLリンク(ton.my-sv.net)
■関連スレ
【日本携帯】Mascot Capsule/Micro3D【標準】
スレリンク(tech板)
過去スレ
Part 1 URLリンク(piza2.2ch.net)
Part 2 URLリンク(pc3.2ch.net)
Part 3 スレリンク(tech板)
Part 4 スレリンク(tech板)
Part 5 スレリンク(tech板)
Part 6 スレリンク(tech板)
Part 7 スレリンク(tech板)
Part 8 スレリンク(tech板)
Part 9 スレリンク(tech板)
Part 10 スレリンク(tech板)
Part 11 スレリンク(tech板)
Part 12 スレリンク(tech板)
2:デフォルトの名無しさん
06/11/22 13:10:44
■ 開発環境
NTT DoCoMo - iアプリコンテンツの作成について
URLリンク(www.nttdocomo.co.jp)
Java[tm] 2 Platform, Standard Edition v 1.4
URLリンク(java.sun.com)
CLDC仕様書 日本語版
URLリンク(java.sun.com)
Eclipse.org
URLリンク(www.eclipse.org)
■ 機種依存情報
ん・ぱか工房(iアプリ機種依存情報)
URLリンク(www.saturn.dti.ne.jp)
NTT DoCoMo - アプリケーション作成上の注意点
URLリンク(www.nttdocomo.co.jp)
Overflow! さかきけいのページ(504iまでの機種依存情報つきAPIリファレンスあり)
URLリンク(godwood.allnet.ne.jp)
■ アプリを省サイズ化するツール(ObfuscatorまたはOptimizer)
Java Blender
URLリンク(homepage.mac.com)
jarg - Java Archive Grinder
URLリンク(jarg.sourceforge.net)
3:デフォルトの名無しさん
06/11/22 13:11:59
■ 主なアプリ配布サイト
ギガアプリ
URLリンク(g-appli.net)
アプリ★ゲット
URLリンク(appget.com)
ゲームチャンネルi
URLリンク(appli.channel.or.jp)
■ 携帯関連ニュース
ITmedia:モバイル
URLリンク(www.itmedia.co.jp)
ケータイ Watch
URLリンク(k-tai.impress.co.jp)
Nekomaru What's New
URLリンク(snget.hp.infoseek.co.jp)
■ 関連板
携帯・PHS
URLリンク(hobby7.2ch.net)
携帯機種
URLリンク(hobby7.2ch.net)
携帯コンテンツ
URLリンク(hobby7.2ch.net)
携帯電話ゲー
URLリンク(hobby7.2ch.net)
4:デフォルトの名無しさん
06/11/22 13:20:25
>>2
NTTのリンク切れてる
URLリンク(www.nttdocomo.co.jp)
5:デフォルトの名無しさん
06/11/22 13:24:12
ごめん
こっちだった…
URLリンク(www.nttdocomo.co.jp)
6:デフォルトの名無しさん
06/11/22 13:32:47
一乙
7:デフォルトの名無しさん
06/11/22 13:33:58
system.out.print(">>1乙");
8:デフォルトの名無しさん
06/11/22 22:06:53
while(res<=1000) System.out.print(">>1乙");
9:デフォルトの名無しさん
06/11/22 23:09:06
>>1乙。
>>8マテコラ
10:934
06/11/23 00:48:01
helloworld.terminate();
11:デフォルトの名無しさん
06/11/23 01:22:50
System.out.printって実機では何も意味無いよね?
無いからいいんだけどさ。
12:デフォルトの名無しさん
06/11/23 01:49:24
>>11
AppTrace = on
13:デフォルトの名無しさん
06/11/23 02:27:12
>>12
トレースて。初めて知った。
機種依存バグとか判別するのに使えそうだな。ありがとう。
14:デフォルトの名無しさん
06/11/23 17:59:09
赤外線使って連続してデータ送ろうとすると2つめからデータが壊れてるんだが
何かデータを制御(?)しないとダメなの?
15:デフォルトの名無しさん
06/11/23 20:12:11
iアプリでRSAを作成したいんだが、とりあえずBouncy CastleのHPから
J2ME用の lcrypto-j2me-134.zip をDL。
展開すると zipで固められたclassファイルとソースファイルが入ってるんだけど、
どっちをつかえばいいのかな?
外部ライブラリの使い方がいまいちわからなくて・・・
16:デフォルトの名無しさん
06/11/23 20:55:35
>>14
そんなこと無いはず。
連続してデータを送るって部分のソースの書き方が
何か間違ってるか、受け取り方が悪いか・・・
>>15
ソースをオススメする。
17:14
06/11/23 21:53:49
2つの文字列を受け取るときにgetContentLength()を使ってるのが原因かな?
赤外線通信について詳しく解説してるサイトとか無いかな?
18:15
06/11/23 22:19:03
レスありがと。 ソースつかってやってみたけど、
とりあえずEclipseで、インポート→ファイル・システム で
ソースを全部インポートするといくつかのソースがエラーがでてるんだよね。
エラーの内容見てみると
FileInputStream を型に解決できません。
FileNotFoundException を型に解決できません。
IllegalStateException を型に解決できません。
それでソースみると、
import java.io.BufferedReader;
import java.io.FileInputStream;
とかimportしてるんだけど、これってJ2MEでは使えないよね?
どうしたらいいのかな?
19:デフォルトの名無しさん
06/11/23 22:59:06
BufferedReaderはcom.nttdocomo.io.BufferedReaderで代用
FileInputStreamはConnector.openを使ってソース直してなんとかする
20:デフォルトの名無しさん
06/11/24 02:49:53
>>17
ドコモの開発ガイドじゃダメなの?ちゃんとサンプルソースも載ってるし。
連続してデータを送るってのは、2回PUTしてるのかと思ってたけど、
2つの文字列ってことは もしかして違う?
>>18
RSAやるのに全てのクラスが必要な訳ではない。
org.bouncycastle.crypto.test.RSATestとか見て
(用途に合わせて参照するTestクラスを探して)
必要なクラス以外取り除けばスッキリ。
21:15
06/11/24 03:20:32
必要なクラスだけつかってやってみる。
ホント助かった。 ありがと
22:15
06/11/24 06:40:21
とりあえず最低限のクラスだけで実行してみたんだが、
newでオブジェクトを作成したら無事にコンパイルはできるけど
実行したらエラーが起きてしまう。
インポートしたクラスファイルは、
デフォルト・パッケージ で sample.java
java.math の BigInteger.java
java.security の SecureRandom.java
org.bouncycastle.crypto の Digest.java
org.bouncycastle.crypto の ExtendedDigest.java
org.bouncycastle.crypto.digests の SHA1Digest.java
org.bouncycastle.crypto.digests の GeneralDigest.java
で、sample.javaのなかで
BigInteger pubExp = new BigInteger("11", 16); とやると携帯画面が消えちゃうんだよね。
でもおなじようにクラスをインポートしてJavaアプリとして作成したら問題なくうごくから
iアプリとして作る場合はほかになんか設定とかあるのかな?
23:デフォルトの名無しさん
06/11/24 10:07:26
ヒント:BigInteger
それだけじゃ、かわいそうだから下のサイトも紹介してあげるんだからね!
URLリンク(www.atmarkit.co.jp)
べつにRSA完成させて公開してほしいんじゃないから勘違いしないでよね!
24:デフォルトの名無しさん
06/11/24 12:15:52
>>前スレ997
入門書読んだ程度のレベルでいきなり外部の偽装画像からの読み込みは
大変だから段階を踏んで作って行きなよって言ったつもりだったんだが。
外部データがどうこう言うよりもテキストデータの処理そのもので詰まるはず。
まずはそこをやってみてダメなら相談するといい。
とりあえずソースに直接テキストデータを書き込んで
それを思い通りに描画できるようになりなさい。
それが出来たらリソースに用意したテキストファイルを読み込み
画面表示ができるかどうか。それが無事できたら初めて
偽装画像からのテキスト取り出しにかかるといい。
作りたい強い意思があるならもっと段階踏んでチャレンジしていくべき。
俺の勘違いで文字の処理そのものはまったく平気で偽装データの読み込みだけが
できないんだ!って言うのならそのデータ読み込みをしている部分の
ソースをある程度提示してくれればアドバイスのやり方はあるかと思うよ。
25:デフォルトの名無しさん
06/11/24 21:05:21
ところでSDカードのデータリードって出来るの?
禁則事項です?
26:デフォルトの名無しさん
06/11/24 22:38:10
>>22
java で始まるパッケージ名はSunに予約されているので、
java.math.BigInteger
java.security.SecureRandom
はパッケージ名を変更する必要がある。
eclipse ならリファクタリングで一発
27:デフォルトの名無しさん
06/11/25 01:06:41
以下のように、ユーザーに携帯内の画像を選んでもらう時、
画像のサイズからかUIException.NO_RESOURCESの
エラーがでて困っているんですが、
これって、端末の画面サイズ以上はダメ、とか
○○kb以上の画像はダメ、とか決まってるんでしょうか?
ImageStore is = ImageStore.selectEntry();
imgId = is.getId();
28:14
06/11/25 11:12:52
>>20
2回PUTってのが盲点だった。
そりゃ2回別々に送信すればgetContentLength()で巻き込まれないよなぁ。
ありがとう。
29:デフォルトの名無しさん
06/11/25 12:40:25
>>20
> 必要なクラス以外取り除けばスッキリ。
そんなのproguardにやらせろよ
30:15
06/11/25 14:44:32
>>26
パッケージ変更したらうまく動作したよ。
eclipseって便利だな。
これでなんとかやってみれそう。サンクス
31:デフォルトの名無しさん
06/11/25 21:39:07
Panelを使い、KeyListener使ったときにDisplay.KEY_CLEAR使っても
エミュ上でクリアキーで動かないのは仕様?
それとも実際に携帯上だと動くの?
同じ内容を他のキーに設定したら動くから実装ミスではない。
それとも俺が間違ってて他にやり方があるの?
解決法があれば教えてください。
32:デフォルトの名無しさん
06/11/25 21:51:34
ソフトキー1を押すとメニュー画面を表示するようにしたいです。
メニュー画面はどのように製作したらいいか知恵を貸してを頂きたいです。
パネルをDisplay.setCurrentで切り替えた際に古いPanelなりCanvasなりに
描画したものを破棄したい場合はどうしたらよろしいでしょうか?
よろしければご教授ください。
33:デフォルトの名無しさん
06/11/25 23:05:00
>>31
KEY_IAPPに変えると悩みは解決するかもしれない
34:デフォルトの名無しさん
06/11/25 23:10:20
前スレで俺が0x18と教えてやったろ。
35:デフォルトの名無しさん
06/11/25 23:42:15
キーリピートの判定みんなどうやってる?
36:デフォルトの名無しさん
06/11/26 00:19:24
>>33
レスサンクスです。
大体最近の機種は切り替えとクリアがかぶってることが多いからですかね?
それでもエミュ上ではクリアが動作しませんでした。
>>34
ごめんなさい。
タイマーとして時間を計るのはカレントタイム取得して、差を出すしかありませんかね?
60秒経ったら終了とかにしてみたいので…。
他に方法があったら教えていただけたら嬉しいです。
37:36
06/11/26 00:45:44
自己解決したと思ったんだけど不可だった。
なんでだろう。
private count=0;
private Timer time;
private Label sec = new Label();
time = new Timer();
time.setTime(1000);
time.start();
public void timerExpired(Timer source) {
if(souce==time) {
count++;
sec.setText(" "+count+"秒");
sec.start(); //これ入れるかどうかわからなかったが…。
}
ちゃんとadd(sec);はしているのにずっと0秒のまま。
38:デフォルトの名無しさん
06/11/26 01:36:33
>>37
sec.startってなんだよ?
timerの間違い?
動いてないのは恐らくリスナを登録してないから。
あとリピートタイマにしたいならタイマクラスにそれを設定するAPIあったはず。API嫁。
39:デフォルトの名無しさん
06/11/26 01:54:41
>>38
レスありがとうございます。
sec.start();はtime.start();の間違いでした。
元のソースが汚くて書き直したので混同してしまいました。
おっしゃるとおりリスナの登録を忘れていました。
的確にありがとうございます。
APIは読みながらやっているのですが知らないクラスばかりでどうも手際が悪いです。
繰り返しはsetRepeat()というやつみたいです。
ありがとうございました。
40:デフォルトの名無しさん
06/11/26 02:09:47
>>38
レスありがとうございます。
sec.start();はtime.start();の間違いでした。
元のソースが汚くて書き直したので混同してしまいました。
おっしゃるとおりリスナの登録を忘れていました。
的確にありがとうございます。
APIは読みながらやっているのですが知らないクラスばかりでどうも手際が悪いです。
繰り返しはsetRepeat()というやつみたいです。
ありがとうございました。
41:デフォルトの名無しさん
06/11/26 05:15:53
LocationProviderが一般人に使えるようになることはないのかね・・・
標準のアプリが糞過ぎてムカつくのに手が出せない悔しさ
42:デフォルトの名無しさん
06/11/26 15:01:54
音楽ファイルってmidiから変換できると聞いたんですが、
何かツールがあるのでしょうか?
43:デフォルトの名無しさん
06/11/26 15:20:46
DoJa5.0 まだー?
44:デフォルトの名無しさん
06/11/27 00:10:52
MediaListnerを使用してiメロディを再生したいです。
hoge.mldというファイルでしたらどこに配置すればよいですか?
bin以下とC:\iDKDoJa4.1\lib\multimediaに配置したのですが
AudioPresenter#setSound: UIException(ILLEGAL_STATE) : Media sound is not usable
com.nttdocomo.ui.UIException: Media sound is not usable
com.nttdocomo.ui.UIException: Media sound is not usable
という例外が吐き出されてしまいます。
解決法をご存知でしたらご教授いただけると嬉しいです。
45:デフォルトの名無しさん
06/11/27 00:48:06
すみません自己解決しました。
resフォルダに入れたら無事に鳴らすことができましたので一応報告しておきます。
それでは。
46:デフォルトの名無しさん
06/11/27 02:13:47
panel上に配置したLabelなどを一度全部破棄して再描画するにはどうしたらいいですか?
dispose()も使えない様ですし新しく同じPanelを作って作り直すしかありませんかね?
47:デフォルトの名無しさん
06/11/27 04:59:21
Display.setCurrent ?
48:デフォルトの名無しさん
06/11/27 10:34:57
BGMとしてmldを永続的に再生する事ってできませんか?
Timerの様にsetRepeat()が使えるわけでも無いようなのでどうしたら良いかわかりません。
どうか知恵をお貸しください。
よろしくお願いします。
49:デフォルトの名無しさん
06/11/27 10:54:59
>>47
レスありがとうございます。
出先からなので携帯から失礼します。
Display.setCurrent()ですと例えばpanel1からpanel2に切り替えまたpanel1に切り替えると
切り替えた時点の情報を維持したまま画面に表示してしまいます。
新しくインスタンス化すれば新しいパネルとして使えますが
新しくインスタンス化した場合は古いものはgcが破棄してくれるのでしょうか?
出来れば同じパネルを初期化して使いたいのですが…。
変数だけ初期化してもカーソルの位置は戻らないようです。
50:デフォルトの名無しさん
06/11/27 11:43:55
>>48
MediaListenerで見張って
AudioPresenter.AUDIO_COMPLETEが来たらすかさずplay()
51:デフォルトの名無しさん
06/11/27 11:47:25
>>31
クリアキーはキーグループが違う。
使いたい場合はキーグループの有効化を先に行わないと使えない。
詳細は前スレ。
>>35
リピートって言っても色々ありすぎてどれを指してるのか不鮮明。
連打系のリピートならキーバッファを用意してイベント事に格納する。
長押し系なら毎フレーム処理の頭でキー情報を取得する。
>>48
MediaListenerを登録してAUDIO_COMPLETEイベントを受け取ったら
もう一度再生する。曲が短い場合は負荷がでかくなるので注意。
52:デフォルトの名無しさん
06/11/27 12:55:38
>>50,51
レスありがとうございます。
BGMを鳴らしながらSEもなるんですけどってどうしたら(ryと書こうとしてましたけど
public void mediaAction(MediaPresenter source, int type, int param) {
if((source==boss)&&(type==AudioPresenter.AUDIO_COMPLETE)) {
boss.play();
}
}
としたら無事に目的のソースのみを再生する事ができました。
ありがとうございました。
53:デフォルトの名無しさん
06/11/27 19:04:30
>>24
前スレ997です。
アドバイス本当にありがとうございます!すごくうれしいです。
おっしゃるとおり、段階を踏めば、どこがわからないのかがわかってきました。
ソースにテキストデータを書き込んでCanvasで描画するのはできるようになりました。
この場合は
class MyCanvas extends Canvas{
public void paint(Graphics g){
g.drawString("hoge", 10, 30);
g.drawString("hogehoge"", 10, 50);
g.drawString("hogehogehoge", 10, 70);
}
}
という感じで良いですよね。
次の、リソースに用意したテキストファイルを読み込む場合となると、途端に分からなくなってしまいました…。
上の場合は、一行ずつ描画するのは逐一 drawString() で書いていけばいいということは分かったのですが、
ファイルを読み込んで描画する場合はどうなんでしょうか。
読み込みは、 Connector.open() を使って、その読み込んだものを同じく drawString() で描画するのですか?
このばあい、折り返しは自動ではできないのですよね?
54:デフォルトの名無しさん
06/11/27 23:02:49
Canvasでタイマーイベントが発生した場合、またはKEY_SELECTを
押した場合にどんどん文字を表示させていく事はできますか?
public void paint(Graphics g){
g.drawString("hoge", 10, 30);
g.drawString("hogehoge"", 10, 30);
g.drawString("hogehogehoge", 10, 30);
}
とどんどん増やしていきたいです。
ShortTimerがでイベント発生時に毎回それごとのフラグを立てて
repaint();と考えたのですがすこし回りくどい気がします。
何かいい方法があればよろしくお願いします。
55:デフォルトの名無しさん
06/11/27 23:59:03
>>53
>>54
俺様が親切丁寧にConnectorの使い方教えてあげたのにまだわからんかね?
g.drawString("hoge", 10, 30);
と
String str = "hoge";
g.drawString(str, 10, 30);
の
違いがわかるならば、str=readLine()の意味もわかるはずだ。
だがしかしお前の話方見てるとまだまだ遠いかなたの時限の話だ。
諦めて初心者サイトのソース手書きでコピーして覚えろ。
普通の後者のやり方はメインループを作って、フレーム処理をして回すもんだ。
何を言っているかわからんと思うから、がんばれ。
簡易版はこちら。
public void mainloop(){
Graphics g = getGraphics();
String str = "hoge";
while(true){
g.drawString(str, 10, 30);
str += "hoge";
try{
Thread.sleep(1000);
}catch(Exception e){}
}
俺も暇だな。
56:デフォルトの名無しさん
06/11/28 00:00:51
>>53
readLineはテキストファイルを段落毎に一行読み取る関数です。
行数を分けたいときはお前の言うように3度読んで3回書け。
57:54
06/11/28 01:08:37
ごめんねごめんね俺>>53じゃないんだ…。
ただ例文にそのまま使わせてもらっただけで…。
>>55
ってことでConnectorについてはわかりません笑
違いはわかるけどさstr=readLine();の意味がわからない。
コンソール上での標準入力は慣例的に
String str="";
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
str=input.readLine();
として使うとしか覚えていないです。
この場合は意味が違ってくる気がする…。
スレッドは使ったことが無いけどThread.sleep(1000);で1秒間スレッド
(無限ループ)を止めてることはわかりました。
現状ではprocessEventでKEY_SELECTを受けた場合にclickをインクリメントrepaint();
switch(click)をしてケースで毎回書き直してるので結構手間ですね。
納期が明日なので時間があれば見直してみます。
ありがとうございました。
関係ないけどCanvasの方がグラフィカルに使えるのにPanelの方が使い勝手がいいのは…。
Panelですとlabel.setText("");とするだけでrepaint()もしてくれるのは魅力ですね。
Panelでフォントの色が変えれるかCanvasでLabelが使えれば便利なのにな…。
58:デフォルトの名無しさん
06/11/28 01:24:50
>>57
・・・納期、間に合うのか?
59:57
06/11/28 02:13:02
>>58
気配りありがとうございます。
納期とは言っても知人に頼まれたことなので万が一でも大丈夫です(笑)
期限という書き方の方が良かったかな?
やる気がでてきました。
がんばります!
60:デフォルトの名無しさん
06/11/28 03:40:59
キーの同時押しの判定って無いの?
KEY_SOFT1とKEY_SOFT2を同時押しした時に隠し要素が出るとかやりたいんだけど。
1が0x15で2が0x16だからって0x2bにしても意味が無かった。
スーファミとかプレステとかだったらこういう考え方だったんだけどな。
61:デフォルトの名無しさん
06/11/28 03:55:38
>>60
getKeypadState()使えばできるはず。
ただし端末によってはボタンの同時押しを認識できなかったりする場合がある。
62:デフォルトの名無しさん
06/11/28 06:42:17
すみません質問があります。
BGMとして流しているiメロディの音量を調整したいのですがどうしたらよいでしょうか?
AudioPresenterクラスのSET_VOLUMEを使おうとしてるのですがどうも上手くいきません。
十字キーの上を押すと音量を上げて下で下げるようにしたいです。
AudioPresenter hoge;
int volume;
中略
public void keyReleased(Panel panel, int key) {
if((key==Display.KEY_UP) && (volume>=0 && volume<100)) {
volume = volume*(int)1.25;
hoge.setAttribute(AudioPresenter.SET_VOLUME, volume );
}}としてみましたが音量が変わりません。(KEY_DOWNも記述しています。)
この時点で既にhoge.play();になっております。
試しにvolumeの条件を消してvolumeは実数でやってみましたがそれでもできませんでした。
どこがまずいかよくわからないのでよろしければ教えていただけると光栄でございます。
63:デフォルトの名無しさん
06/11/28 06:47:36
intにキャストしたら小数点以下が切り捨てられて
>volume = volume*(int)1.25;
volume = volume*1;
になってるんでしょ。
64:デフォルトの名無しさん
06/11/28 06:56:37
>>57
>Panelでフォントの色が変えれるか
つ setForeground
65:デフォルトの名無しさん
06/11/28 07:07:30
>>63
その可能性も考えて
hoge.setAttribute(AudioPresenter.SET_VOLUME, 25);
66:デフォルトの名無しさん
06/11/28 07:09:37
ImageをMediaImageに変換するにはどうするんですか?
というのはImage.createImageしたものを
ImageStore.addEntryで端末に保存したいんですが。
67:デフォルトの名無しさん
06/11/28 07:10:52
連投になってしまいすみません。
>>63
その可能性も考えて
hoge.setAttribute(AudioPresenter.SET_VOLUME, 25);
と通常のint型の実数でも試してみましたが動作していないようでした。
hoge.setMediaListener(this);とも宣言してありますので全く理由がわからなくて。
hoge.start();もhoge.stop();もちゃんと動くので自分の使い方が間違っているのかと
思いこちらに書き込ませていただきました。
68:デフォルトの名無しさん
06/11/28 07:21:52
>>66
ImageEncoderを使うと良いよ。
オレは使ったことないけど、API見る限りはこれでいけるはず。
69:63
06/11/28 08:25:50
>>67
PanelクラスのsetKeyListenerは使ってる?
70:デフォルトの名無しさん
06/11/28 08:50:10
>>69
レスありがとうございます。
オブジェクト指向が下手っぴなのでそのPanelのクラスには
TimerListener, SoftKeyListener, KeyListener, MediaListener
を実装してます。
KEY_SOFT1,2とKEY_0〜9,SELECT,IAPPキーの機能は問題なく動きますので
KEY_UP,DOWNが動作していないという事はなさそうに思えます。
hoge.setAttribute(AudioPresenter.SET_VOLUME, volume);
を使うタイミングとかにもよるんですかね?
71:63
06/11/28 09:19:31
>>70
DoJaのバージョンは何?
72:63
06/11/28 09:23:23
連投ごめん。
>>70
DoJaのバージョンは何?
URLリンク(acerola.org)
DoJa-3.0 (505i) より前だったりしない?
73:デフォルトの名無しさん
06/11/28 11:57:08
>>53
そこで詰まっているならもう少し戻った方が良いかな。
直接テキストデータをってのは次のようにしてみて欲しかったんだ。
String moji = "この文字列を自在に描画してみよう。長い文の方が良い。";
上のように変数mojiに長文を定義して思うように
描画できるように工夫していけばいい。当然そのまま
g.drawString(moji,10,30);
ってやっちゃうと文字のサイズにもよるけど文字の後半部分が
画面外に行く事になる。うまくやるには工夫が必要。
やり方はプログラマ次第で変わってくるけど判りやすい?かな
と思うヒントをいくつか。
1:DoJa内のFontクラス。これは一行に何文字まで表示するかという基準がいるし
文字の描画などでもベースラインの位置をちゃんと扱う為に知っておいたほうがいい。
2:CLDC内のStringクラス。言わずがな文字列を扱うクラス。文字列から文字列の
取り出し方とか色々弄っていると良いかと。
とりあえずはこの2つをまずしっかり調べてみよう。
文字の描画には色々面倒が多いので場数踏んで行きませう。
理解が深まったらStringBufferクラスやらも弄ってみれば良いね。
結果は同じでもやり方は千差万別。
74:デフォルトの名無しさん
06/11/28 12:28:14
>>54
違う人だったようなので再回答。
int key;
while(true){
key = getKeypadState();
if((key&(1<<Display.KEY_SELECT)) != 0){
str += hoge;
g.drawString(str, 10, 30);
}
Thread.sleep(10);
}
ちなみにこれはスレッドは使わないよ。
Thread.sleepは携帯電話を寝かせる省エネモードにするだけ。
75:デフォルトの名無しさん
06/11/28 13:27:48
>>>ちなみにこれはスレッドは使わないよ。
>>>Thread.sleepは携帯電話を寝かせる省エネモードにするだけ。
クマー?
76:70
06/11/28 13:55:43
>>63
レス遅くなりました。
DoJa-4.1ですね。
クリアキーの場合はグループ化が必要って教えてもらったけどこれは間違ってないのかな…。
あまり迷惑掛けるのもなんなので少し自分で調べてみてからまた来ますね!
今は20k近いゲームの中に組み込んだのでどこかにミスがあるかもしれないですし…。
77:デフォルトの名無しさん
06/11/28 14:59:01
>>75
だいたいそういう認識でよいと思うのだがな。
78:70
06/11/28 15:33:45
新しくテストアプリを作ってみた結果無事に動作させる事ができました。
その時の動作確認はSOFT_KEYでやりました。
しかしながら何故かDisplay.KEY_UPとDOWNでは動作しませんでした。
変わりにASTERISKとPOUNDを使ったらすんなり行きました。
KEY_UPとKEY_DOWNはオプションなんですかね?
>>63様には大変ご迷惑をおかけしました。
本当にありがとうございます。
関係ないけどDisplay.KEY_SOFT1とFrame.SOFT_KEY1の使い分けがいまいちで困ってました笑
79:デフォルトの名無しさん
06/11/28 20:37:02
急にscratchpad:///5だけ書き込めなくなるとか
意味の分からない症状が出てるんだがこれは一体?
80:デフォルトの名無しさん
06/11/28 20:52:10
またエスパーきぼんぬですか
81:79
06/11/28 21:17:41
何度やっても///5だけ書き込めない。
1回目は書き込めるんだが、2回目からエラー吐き出す。
何が原因なのか全く検討つきません。
エスパーの方ご教授お願いします。
82:デフォルトの名無しさん
06/11/28 21:19:39
close()してないだけかと
83:デフォルトの名無しさん
06/11/28 21:26:04
>>82
正直すまんかった。仰る通りで。
84:デフォルトの名無しさん
06/11/29 00:39:07
D902iで右キーを押しっぱなしにすると、下キーもときおり反応すると言われたのですが、
Canvasを継承したクラスで、processEventからDisplay.KEY_PRESSED_EVENTをひろって処理してるので、リピートはないと思うのですが、なにか思い当たる点とかないでしょうか。
85:デフォルトの名無しさん
06/11/29 01:22:52
>>84
ファームのバグか、
マトリックスのダイオードケチってるとか
そんなもんじゃないの?
86:( ^ω^) ◆wKJpObkR5w
06/11/29 01:41:35
今さらだけど
PanelでKEY_UPとKEY_DOWNは使えないと思うぉ。(要は方向キー)
だってコンポーネントのフォーカスを操作するために
予約されてるのだから。( ^ω^)
87:デフォルトの名無しさん
06/11/29 04:36:07
?
88:デフォルトの名無しさん
06/11/29 04:55:28
上で紹介されているBouncy Castleを作ってiアプリのプログラムを
作成しているのですが、RSAでキーの生成の仕方がよくわかりません。
RSATest.javaをみてみると、キーは生成してないですよね?
あと、暗号化のやり方もネットでいろいろ調べてみて
Cipherクラスを使ってるサイトがいくつかあるんですが、
このクラスがなくて暗号化の仕方がわかりません。
どのようにしたらよいのでしょうか?
89:デフォルトの名無しさん
06/11/29 05:46:00
>>88
いや、作ってるよ。
このライブラリではCipherクラスは使ってない。
そもそもCipherクラスが無いような環境でも使えるようにしてあるわけだし、
だからこそこのライブラリを使おうって訳だ。
#ドキュメントの少なさには正直オレもウンザリしてる
ヒント:207行目〜
90:デフォルトの名無しさん
06/11/29 06:31:48
iモードJavaプログラミング FOMA対応版の話だけどHPに行ったらサンプルコードの
他にプログラム事例編の本書には載ってないソースもうpしてあるのな。
本書の解説だけでわからないところはどうしたら良いんだって思ってたけど助かった。
こいつは便利だからじっくり見て勉強しようっと。
91:デフォルトの名無しさん
06/11/29 06:36:53
どれのことを言っているのか分かりません
92:デフォルトの名無しさん
06/11/29 06:56:17
>>91
誰に言ってるのか分かりません
俺に言ってる?
本書には解説しか載っていない中の人の作ったアプリのソースがうpされてるってこと。
補足だけどそのソースがまず間違っていた事。
あと関係ないけど拡張APIも買ったんだけど殆どFOMA対応版に載ってる事だね。
拡張APIが3年の月日で標準APIになったんだな。
93:デフォルトの名無しさん
06/11/29 07:03:20
>>90
初めて気付いた。ありがとう。。。
94:デフォルトの名無しさん
06/11/29 07:25:55
>>89
レスありがとうございます。
暗号化、複合化が一通りできました。
確認なんですが、RSATest.javaのeng.init();の引数しだいで
暗号・複合ができるってことでいいんですよね?
あとPublicKeyの表示は、
System.out.println("public: " + ((RSAKeyParameters)pair.getPublic()).getModulus());
でできるのですがPrivateKeyはどのように表示したらよいのでしょうか?
スクラッチパッドに保存したいのですが、PrivateKeyは文字列で確認はできないのでしょうか?
95:デフォルトの名無しさん
06/11/29 08:04:45
>>90俺もたまたま前スレの>>816,819,820のやり取りを見てて
何があるのかな?って覗きに行ったら偶然見つけたんだ。
これで本書の活用度がマジで3割増しになったと思った。
あのしょぼい解説だけでは無能な俺には設計がわからなかったので。
96:デフォルトの名無しさん
06/11/29 10:42:07
結局TransparentImageってどれで使えるの?
API実装状況によるとSH系だけだけど、
902とか載ってないやつはどんな感じですか。
しかも5.0じゃ標準になるようですが。
97:デフォルトの名無しさん
06/11/29 12:48:33
P902isとp903iにiアプリ本体をSDカードへ移動って機能があるけど、
あれは暗号化してくれてるのかな?
難読化もタダじゃないんだが。。。
98:デフォルトの名無しさん
06/11/29 13:01:24
あたりまえでしょ
99:デフォルトの名無しさん
06/11/29 15:06:50
>>94
正直オレは暗号にはあまり詳しくないんで鍵の表示ってのがよくわからないんだが、
ソースを見た限りキーパラメータは全部BigIntegerのようだし
全部保存しとけば復元出来るかと。
あくまで暗号屋さんではなくプログラマとしての意見。
100:デフォルトの名無しさん
06/11/29 20:26:14
配列の要素のソートってどうやってる?
J2SEなら使えるクラスがあるんだけど、iアプリではやはり手作り?
101:デフォルトの名無しさん
06/11/29 21:47:34
>>100
ほっかほっかの手作りです。(何年も前のだけどw)
102:デフォルトの名無しさん
06/11/29 23:17:46
>>101
サンクス。
やっぱりそうですか・・・。
103:デフォルトの名無しさん
06/11/29 23:38:22
男は黙ってバブルソート
104:デフォルトの名無しさん
06/11/30 00:35:41
>>103
要素数もたいしたことないし、自作アプリなんで速度も気にしないので、シンプルにそれでいこうと思います。
男は黙って・・・オモロカッタ
男なら速度とかチマチマ気にすんなって?
オス了解!!
105:デフォルトの名無しさん
06/11/30 01:06:37
女はどうしたらいいの?
106:デフォルトの名無しさん
06/11/30 01:17:51
愛嬌たっぷりマージソート
107:デフォルトの名無しさん
06/11/30 01:33:17
じゃ俺はゴールドソードで
108:デフォルトの名無しさん
06/11/30 01:43:00
ついでにオイラはマジニート
109:デフォルトの名無しさん
06/11/30 08:56:49
Display.setCurrent(canvas);
の前に
PhoneSystem.setAttribute(PhoneSystem.DEV_KEYPAD, Display.KEY_CLEAR>>5);
をしてもクリアキー動かないんだけど?
なんでですか?
それ以外のグループ1のボタン押してもkeypadに反応がありません。
110:デフォルトの名無しさん
06/11/30 09:00:48
if ((key & (1<<(Display.KEY_CLEAR-0x20))) != 0)
111:デフォルトの名無しさん
06/11/30 10:51:36
>>110
while(true){
key = getKeyPadState();
System.out.println("key: +key);
}
クリアキー連打
key:0
key:0
key:0
key:0
key:0
key:0
key:0
となるんです。反応ありません。どうしましょう?
112:デフォルトの名無しさん
06/11/30 10:56:33
>>109
ちゃんと取得できてるのか?
getKeypadState(1)の戻り値は0?
113:デフォルトの名無しさん
06/11/30 10:57:28
>>111
グループ0取得してるじゃんw
114:84
06/11/30 11:04:28
>>85 ありがとう。
115:デフォルトの名無しさん
06/11/30 12:34:31
>>112
>>113
お前ら神サンクス。
マジ知らんかった。
116:110
06/11/30 12:40:49
エスパーしてみたけど外れてた
間違えてたのはそっちだったのか
117:デフォルトの名無しさん
06/11/30 13:02:59
>>110
お前もありがとう。
118:デフォルトの名無しさん
06/11/30 18:52:47
画像をサーバーに置いて1回目の起動時にその画像を取ってきてスクラッチパッドに読み込もうとしているのですが、
なぜか、エミュではうまくいくのに、実機で実行すると画像を取得できないみたいです。
URLの取得は、
IApplication.getCurrentApp().getSourceURL();
で取得してます。
実機でのデバッグ方法もよく分からない状態です。
アドバイス御願いします。
119:デフォルトの名無しさん
06/11/30 19:32:01
>>118
jamに
AppTrace = on
と書いて、通信処理付近にSystem.out.println()を挿し込むと
実機にアプリ実行情報ってのが記録されるから
どこで何のエラーが発生しているのかを、まず調べましょう。
120:118
06/11/30 19:59:11
>>119
レスありがとうございます。
トレースで調べてみたところURLはあってました。
そして、ゲーム事態は進むのですが画像が出ない状態なのです。
スクラッチパッドを使わずにjarファイルに画像データを入れる方法もやってみましたが、
こちらもゲームは進むのに画像が表示されない状態です。
エミュでは、どちらも正常に動作します。
何故なのでしょうか?
121:デフォルトの名無しさん
06/11/30 20:07:02
プログラムにバグがあるから
122:デフォルトの名無しさん
06/11/30 20:18:24
画面にデバッグを表示するプログラムを作りましょう。
多分つうしんえらー じゃね?
えらーめっせーじこおにさらしてみ
123:118
06/11/30 20:47:32
すいません。Java始めたばかりでよく分からないのですが、
エラーというエラーは出てない(トレースを見る限り)のですが、
自分がデバッグ用に書いた画像が表示されない時のエラー文はでます。
もうちょっと勉強してきた方がいいみたいですね。
出直してきます。
124:デフォルトの名無しさん
06/11/30 21:46:56
画像の読み込みとか通信とかでエラーが投げられたらキャッチしてエラークラスからエラーをプリントさせなさい
で、実機でトレース情報見てどんなエラーが出たのか確認
125:デフォルトの名無しさん
06/11/30 22:17:20
>>123
try{
〜〜〜
〜〜〜
}catch(Exception e){
g.setColor(WHITE);
g.fillRect(0,0,240,240);
g.setColor(BLACK);
g.drawString(""+e, 0, 0);
}
}
126:118
06/11/30 22:25:02
>>124,125
助言ありがとうございます。
Exception eでエラー文をはき出せるんですか!?
そのような書き方をしてましたが、その中にエラーとだけ書いてました・・・
今から試してみます
127:デフォルトの名無しさん
06/12/01 11:24:56
SH902iでKEY_CLEARが上がってこない。・゚・(ノД`)・゚・。
DoJa-4.1のエミュでは動いてるのに。
public void processEvent(int type, int param)
{
if( ( getKeypadState(1) & ( 1 << ( Display.KEY_CLEAR - 0x20 ) ) ) > 0 ){
.......
なんか間違ってるのかな。
128:デフォルトの名無しさん
06/12/01 11:47:05
池沼クラスの質問態度だな。
129:デフォルトの名無しさん
06/12/01 12:35:01
>>128
ここに書いてあることを応用してやってみようと思ってやる。
それはほめられるべきことですよザーボンさん?
でも俺processEvent使ったことないからわかんない。
if( ( getKeypadState(1) & ( 1 << ( Display.KEY_CLEAR - 0x20 ) ) ) > 0 ){
はメインループの中で書いて使っていいんだよ。
130:デフォルトの名無しさん
06/12/01 14:54:16
>>127
あげ足取るようで悪いがprocessEventはキー関係のイベント以外でも
呼ばれるからその記述だとイベント発生するたびにキー処理はいるぞ。
多分、省略しているんだと思うんだけどさ・・・。
で、実機でトレースをつかってイベント発生時
getKeypadState(1)の戻り値を出力してみなよ。
値を出力するのはデバッグの基本中の基本だろうて・・・。
131:デフォルトの名無しさん
06/12/01 15:12:26
>>127
一応ついでにいえば、getKeypadState(1)はオプションAPIだが
SH902iは対応している。他機種では対応してない機種も多い。半々くらいかな。
132:デフォルトの名無しさん
06/12/01 17:56:23
SH902iはDisplay.KEY_CLEAR ダメみたいです。
メールボタンのビットは無事に上がってくるけど、クリアキーのビットだけ立ち上がらない。
SH902iあきらめました。
133:デフォルトの名無しさん
06/12/01 18:04:22
前スレから似たような質問が続いてるような。
134:デフォルトの名無しさん
06/12/01 18:19:45
>>132
Docomo使い続けてる人はクリアキー使う習慣が無いと思うのだけれど。
SH902を蹴るより、クリアキー使う仕様をどうにかした方がいいのでは?
135:デフォルトの名無しさん
06/12/01 21:36:57
iモードつながりづらくて今、インターネット喫茶の
パソコンから書き込んでいるんだけど皆さんの携帯のつながり
具合はどうですか?ちなみに私2ヶ月前に生まれて初めて
携帯持った者です。
136:デフォルトの名無しさん
06/12/01 21:44:52
>私、2ヶ月前に生まれて、初めて携帯持った者です。
生後2ヶ月で携帯持ってるんですか。凄いですね。
137:デフォルトの名無しさん
06/12/01 21:50:01
>>135は
URLリンク(event.yahoo.co.jp)
で文章打ってるのか?
生後2ヶ月でキーボード使いこなしてるならすごいぞ
138:デフォルトの名無しさん
06/12/02 00:06:42
>>136
ムダに句読点いれて笑かすなw
139:デフォルトの名無しさん
06/12/02 02:46:03
>>134
>Docomo使い続けてる人はクリアキー使う習慣が無いと思うのだけれど。
これが良くわからん。
なんでドコモだとクリアキーを使う習慣が無いの?
メールで文字を削除する時はクリアキーだよね?
言ってる事が違うのか?
アプリでとかってことなのかな?
140:デフォルトの名無しさん
06/12/02 11:00:35
>139
>131
141:デフォルトの名無しさん
06/12/02 12:45:41
>139
Docomo「使い続けてる人」、つまり古くからのドコモユーザーを指してるんだろ。
503の時代から今までドコモ端末はクリアキーが標準装備とは決まっていない。
今でもクリアキーがない端末が結構あるなら、それを使う仕様は避けた方が無難。
>134はそういうことを言っているのかと。
142:デフォルトの名無しさん
06/12/02 12:48:50
アプリの開発始めた頃は決定ボタンがあるのに
キャンセルボタンが無くて困った覚えがあるな。
結局ソフトキーに「戻る」を入れるわけだがw
143:139
06/12/02 14:22:12
>>140さんので>>131をみてアプリとしてだと思いました。
>>141
自分も503iから使ってるんですけどずっとクリアキーがあったので
クリアキーが無い端末があるとは知りませんでした。
N、P、D、SO、SAしか使ってないのでその他の端末でしょうね。
わざわざありがとうございました。
144:デフォルトの名無しさん
06/12/02 15:20:43
>>143
実機にクリアキーが存在しない、と勘違いしていまいか。
アプリでクリアキーを押した/離したという状態が拾えないということだよね?
145:デフォルトの名無しさん
06/12/02 15:26:32
PhoneSystem.setAttribute(PhoneSystem.DEV_KEYPAD, 1);
146:デフォルトの名無しさん
06/12/02 15:43:28
>>144
えっと
>>131さんをを見たらアプリ上で拾えないと言う意味だと思ったのですが
>>141さんの書き込みを見たら
>503の時代から今までドコモ端末はクリアキーが標準装備とは決まっていない。
今でもクリアキーがない端末が結構あるなら、それを使う仕様は避けた方が無難。
と書いてあったので実機で無い端末があるのかと思いました。
147:デフォルトの名無しさん
06/12/02 15:49:14
>>31-34と同じ質問じゃないのか。
148:デフォルトの名無しさん
06/12/02 15:55:31
>>141だが、勘違いされても当然の書き方だよな。訂正する。
標準装備とは、アプリの立場でのことを指してるつもり(>>144の指摘どおり)。
くどいけど補足すると、Display.KEY_CLEARはDoJa-3.0からオプションで定義された。
本体に実際にクリアキーがついてるかどうかということを指したつもりではなかった。
(手持ちのN505にもクリアキーついてるよ)
「標準装備」って言葉を使ったのが悪かった。スマン。
149:デフォルトの名無しさん
06/12/02 16:05:37
505以降になって、クリアキー標準装備だよ。
150:デフォルトの名無しさん
06/12/02 16:44:14
>>149
だからといって、動作しなかったり、変なリスナー番号になってたり、ボタンが変なところについていたり様々だから、
必須のキーに置くのは絶対だめだよ。
あくまでソフトキーに戻るを実装して、そのおまけ程度に・・・。
151:デフォルトの名無しさん
06/12/02 16:47:27
>>149
嘘を書かないようにw
152:デフォルトの名無しさん
06/12/02 20:48:07
>>151
え、嘘だっけ?
505から標準APIになったし、クリアキーがついてない機種はなくなったと思ったんだけど
153:デフォルトの名無しさん
06/12/02 20:51:53
KEY_CLEAR
public static final int KEY_CLEAR [iアプリオプションAPI]
クリアキーを表します(=0x20)。
端末によってはキーがない場合もあります。 このキーにアプリケーションの動作上必須の機能を割り当てると、 キーを持たない端末で支障が出る場合がありますので注意してください。
導入されたバージョン:
DoJa-3.0 (505iS)
関連項目:
定数フィールド値
DoJa5.0javadocより。
154:デフォルトの名無しさん
06/12/03 00:51:26
QVGA機種だと小さいサイズで表示されちゃうんだけど、QVGAに合わせて拡大表示するにはどうすればいいの?
155:デフォルトの名無しさん
06/12/03 00:53:38
>>154
拡大できたら比がおかしくなるんじゃない?
156:デフォルトの名無しさん
06/12/03 01:28:55
>>154
jam設定で余計な真似をしなければ240x240だと思われ。
157:デフォルトの名無しさん
06/12/03 07:47:55
とりあえず、通話キーと終話キーの間にキーは
P505iにはねぇ
P902iにはある
ですよ。いや505は他のボタンに割り当てられてるかもですが(壊れてるので確かめられない)
158:デフォルトの名無しさん
06/12/04 13:49:55
カメラから取得した画像に閾値処理などを書ける場合は
どうしたらいいのでしょう?
159:デフォルトの名無しさん
06/12/04 14:18:44
>>158
やったことないけどこんな感じ?
int[] pixels;
Camera camera = Camera.getCamera(id);
camera.takePicture();
MediaImage mi = camera.getImage(index);
mi.use();
Image img = mi.getImage();
Graphics g = img.getGraphics();
g.getPixels(x, y, width, height, pixels, off);
//pixelsで閾値処理
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4659日前に更新/108 KB
担当:undef