5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 ::03/12/08 13:49
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あたりにリンク集


167 :デフォルトの名無しさん:04/01/22 17:59
>>166
「クラスが見つからない例外」
・・・これで意味がわからなければ、Javaを基礎から勉強してみた方がいいかも。

168 :デフォルトの名無しさん:04/01/23 01:21
Vアプリの待ち受けで、メールの着信通知の見分け方って
どうすればよい?
普通に待ち受けアプリを作ってみたら、着信通知でもメールが
来たことになってしまった
エミュレータにもそれらしいイベントないし。。。。

普通のSKYメールと着信通知は、何を見分ければよいか
教えてプリーズ!>JAVAのエロイ人


169 :デフォルトの名無しさん:04/01/23 01:38
>>168
MailListener

170 :デフォルトの名無しさん:04/01/23 02:19
>>163
>単にHelloWorldと表示する
の前に、HellowWorldとログ出力するだけのでも作ってみ。
それから、Canvasに文字や図を書くのをやってみよう。

171 :デフォルトの名無しさん:04/01/23 03:49
レコードストアにJARを保存して、JARに含まれるファイルを個別に取り出すことってできるんですか?
そのあたりの仕様が載っているサイトや本があれば教えていただきたいのですが・・・

172 :デフォルトの名無しさん:04/01/23 08:44
>>168
VアプリのP5型のJavaDocを見たけど
MailListenerのトコには、それらしい記述が
無いのですが?
もうちっとヒントをお願いします

173 :163:04/01/23 09:47
>170
ありがとうございます。少しずつ調べながらがんばってみます!

174 :デフォルトの名無しさん:04/01/23 10:20
>>171
JARに含まれるファイルをとりだすことは可能。
しかし、レコードストアをJARに保存するできない。
というか、JARは書き換えられないのでは?

175 :デフォルトの名無しさん:04/01/23 13:33
>>172
>このインタフェースを実装したリスナを、DeviceControlのsetMailListener()メソッドを呼び出して
>登録してください。 メール着信に関するイベントは、MailListenerインタフェースのreceived()
>メソッドに通知されます。
と思いっきり書いてあるのだが。

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

>>174
レコードストアをJARに保存するのではなくて、JARをレコードストアに保存したいのだと思われ。


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

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

177 :174:04/01/23 23:20
げ。日本語が読めてなかった。

>> 175
"jar://" スキームは、単にJAR内のファイルを読むだけでなかったけ?

178 :デフォルトの名無しさん:04/01/23 23:35
Vアプリ開発ガイド概要編の4.6 JAR の項を読む限りではできそうに思えるんだけどなあ。
今月いっぱいは試そうにも試せないから、質問者の人に試してもらうって事で。

179 :デフォルトの名無しさん:04/01/25 00:00
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〜は移動描画をしています)押しっぱなし状態だと
一歩動いてその後押してた方向に動きっぱなしになってしまいます。
スレッドの扱い方が悪いのでしょうか?

ご教授おねがいしまつ。



181 :デフォルトの名無しさん:04/01/25 18:47
>>180
キー入力がキューイングされてるためだと思う。
keyPressed()で重い処理をすると、どうしてもキーに遅れが発生する。

keyPressed()と描画が、N:1 にできるように作れば、大丈夫とおもう。

182 :wikiのVアプリスレまとめサイト”管理”人 ◆zaLvCUpNTU :04/01/25 19:42
○○キーは押されてるの?放されてるの?テーブル を作って
押されたり放されたりしたときにフラグを上げ下げするとか?

183 :デフォルトの名無しさん:04/01/25 21:02
>>174
resさんきゅ
しかし、MailListenerのJavaDocを読む限りは、
recieveのSMSの種類ってやつは
通常ステーション着信
緊急ステーション着信
グリーティング
スーパーメール
リレーメール
スカイメール
ウェブ着信
しか無いんだよ
実機で試してみると、skyMailの着信通知のときは
スカイメールが帰ってきてるみたい
なんか、そもそものアプローチが何か間違ってる?

184 :デフォルトの名無しさん:04/01/25 21:20
>>183
そもそものアプローチというか、何がやりたいのかわからんのだけどなぁ。
一応整理しておくと、
・RingStateListener
→(ユーザーへの)着信通知(端末側での呼出音鳴動など)の開始、終了の際に呼び出される。
・MailListener
→端末にメールが着信した場合に呼び出される。
・TelephonyListener
→端末に音声着信した場合、電話が切れた場合に呼び出される。


185 :デフォルトの名無しさん:04/01/25 21:47
>>183
済まん、用語の使い方が間違っていたよ>おれ
知りたいのは、SkyMailを送信した後の「配信確認」というやつです。

配信確認の通知もreceived()に来るみたいなんですが、
その時のSMSの種類がスカイメールみたいなので
困ってます
という話でした(^^;

186 :デフォルトの名無しさん:04/01/26 05:13
>>180
MIDPじゃ、Keyイベントはすぐに処理を終わらせないといけない。
50msecを8回も待つとかやっちゃダメ。

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

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


>>185
実機使って実際にイベント起こして、
int detailの値を調べてみるしかないのでは。
そもそもDocに載ってないから、返ってくる値の保証もないだろうけど。
(時間や日付によって違う・機種によって違う、など)

187 :デフォルトの名無しさん:04/01/26 14:54
ボーダホン用のエミュレータってどこを探せばありますか?

188 :デフォルトの名無しさん:04/01/26 14:56
>>187
>>2

189 :デフォルトの名無しさん:04/01/27 14:39
Vアプリでhttpconnectionを使うアプリを作成中です。
通信相手は自分で立てた外部アクセス可能なサーバで、
エミュレータからはうまくいったのですが実機からはダメでした。
これは、やはりサーバの設定に問題があるということなのでしょうか?
以下、仕様&ソースです。

190 :189:04/01/27 14:42
サーバ
・Tomcat+java servlet
実機
・SH-52


191 :189: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;


192 :189: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);
}

193 :189: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 ){

194 :189:04/01/27 14:47

destroyApp(false);
notifyDestroyed();

}
}

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

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

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

}

195 :189: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){
}

196 :189:04/01/27 15:53
あ、URLもそのまま書き込んでしまった・・・・

197 :デフォルトの名無しさん:04/01/27 19:29
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>

なにかわかるかたが、いらっしゃいましたらおしえてください。

199 :デフォルトの名無しさん:04/01/27 21:04
そうそう。Port80しか繋がらないね。
これが意外と不便。

200 :189: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);
}
のようにしても、途中で途切れてしまいます。

何かよいお知恵はありませんでしょうか?

201 :デフォルトの名無しさん:04/01/28 22:05
URLの制限があったような。

202 :デフォルトの名無しさん:04/01/30 14:09
QVGAで画面自動拡大されたアプリって、文字サイズはどうなんの?
Vはまだいいんだがauの方で文字がでかくなりすぎるんだが・・。


203 :デフォルトの名無しさん:04/01/30 14:59
文字も画像もそのまま拡大されるはず。

204 :デフォルトの名無しさん:04/01/31 06:57
どなたか神の人に、激しくお伺いしたい。

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がレジュームをサボりやがって
音が復元しないで止まってしまうのも、漏れが童貞なせいですか?

205 :デフォルトの名無しさん:04/01/31 17:18
auのはPhase3.0でも、データフォルダからの画像読みだしは公式CP
じゃないとムリですか?
表示できればいいのでImageオブジェクトで十分なのですけど、
Phase2.5ではそれすらできなくて鬱。


206 :デフォルトの名無しさん:04/01/31 20:25
>>204
jargのバグかもよ
バイトコードの最適化を切ってみそ

207 :デフォルトの名無しさん:04/02/01 03:06
>>203
自分のアプリで使ってみたよ
上の行をそのままDOS窓から叩いてみた
70kが68kになった
画像が多かったから、あまりお徳では無かったよー
動作は特に支障なし
ちなみに、童貞は卒業済み

208 :デフォルトの名無しさん:04/02/01 03:08
追伸
スプライトは使っていない(実は使ったこと無い)
forループは満載
C出身なので、クラス分けも盛大にやってる

209 :デフォルトの名無しさん:04/02/01 12:33
>>207
おれも使ってみよう
ちなみにまだ卒業してません(もうすぐ30歳)

210 :デフォルトの名無しさん:04/02/01 12:38
>>209
魔法が使えるようになるまでもう少しだね。

211 :デフォルトの名無しさん:04/02/02 05:15
UDPパケットを送ることはできますか?

212 :デフォルトの名無しさん:04/02/02 13:14
そもそもTCP/IPどころか、httpしか対応してないような。

213 :デフォルトの名無しさん:04/02/02 18:22
>>204
retroguardじゃだめなの?

214 :デフォルトの名無しさん:04/02/02 22:01
アプリ動作中に携帯電話本体の終了ボタンを押すと、
ソフトキーのボタンが利かなくなってしまうのですが
どのように対応すればよいのでしょう?

215 :204:04/02/03 02:32
遅レスだけど魔法使えるようになりますた。
もとい、>>206氏の指摘どおり -noboc でバイトコード最適化切ったら動くようになりました。
他のオプションもひとしきりためしたけど、動作が変わったのは -noboc だけですた。
似たような構造のほかのプログラムにも jarg かけたけど、普通に動いちゃったし、レアケースなのかなあ。
とにかく、マゾでありがとうございます。

ついでに 7zip かけたら、トータル 30KB が 25KB くらいまでダイエットされました。
漏れの童貞もらってやってください。

216 :デフォルトの名無しさん:04/02/03 10:08
やっぱjargのバイトコード最適化にはバグがあるって事か…
ProGuardとかに乗り換えた方がいいのかな?

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

DTはイラネ。適当にその辺に捨ててくれ
不法投棄になりそうなら、業者に引き取ってもらえ

217 :デフォルトの名無しさん:04/02/05 01:38
MIDPやろうと開発環境の準備を始めました。Vodafoneです。
でもどうしてもSun ONE Studio4 Mobile Edition と
VodafoneエミュのIDE統合ができない。
http://zdn.zentek.co.jp
のサポートからダウンできる資料を参考にやってみたけど。
この通りやって実行すると「メインクラスがない」とか怒られて
うまくアプリが動作しない。何を勘違いしているのだろう。
だれか出来た人います? JBuilderではどうでしょう?

218 :217:04/02/05 01:46
補足。エミュを自分で立ち上げて実行すると上手く動く。当然か。。。

219 :デフォルトの名無しさん:04/02/05 09:19
>>216
メインクラスがないって言われるのは、
きちんと大抵はCLASSPATHが通ってないか、
そんな理由ではなかったか?


220 :217: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を設定したら上手くいきました。
うーむ謎だ。エミュが起動すればよいから、これで良いのですかね?

221 :217: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」を使用して問題なく動作したんだけどな・・


223 :デフォルトの名無しさん:04/02/06 12:44
InputStream#available()は常に0が返ってくるからだろ。
javadoc読めよ

224 :222: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

226 :デフォルトの名無しさん:04/02/06 14:28
>>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();


227 :244:04/02/06 14:55
>>226 resサンキューです。

どうも、byte配列には読み込めてるみたい。
Phraseのコンストラクタに渡しているところで、データのチェックが失敗しているみたい・・
なんでだろう?

228 :デフォルトの名無しさん:04/02/06 17:02
わろた
http://www.geocities.jp/p_java_lang/

229 :デフォルトの名無しさん:04/02/06 18:46
>>227
読み込むファイルのサイズと、バイト配列のサイズが一緒じゃないとエラーになるぞ。

230 :227:04/02/06 18:57
>>229
そうかと思ってやってみたんだけど、エラーになるなー。

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

mmfファイルってC4端末で読めるんだよね?

231 :デフォルトの名無しさん:04/02/06 19:33
SMAF Phraseって、.spfじゃないのか?

232 :デフォルトの名無しさん:04/02/06 20:07
>>230
.mmfはAudio Phraseだよ

Audio Pharse再生できるのはP型以降、よってC4型では再生不可かと

233 :230:04/02/06 23:00
231,232>>
え!?mmfってAudioPhraseなんだ!
スマン、入り口が間違ってた・・
みんなサソキュ。

234 :デフォルトの名無しさん:04/02/08 00:11
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


236 :235:04/02/08 01:19
それから、IEで取得した場合は正常に日本語が表示されています。

宜しくお願いします。

237 :235:04/02/08 04:49
なんどもすいません。
CGIはパールです。

238 :デフォルトの名無しさん:04/02/08 08:58
>>235
shift-jisしか駄目なはず。
IEでエンコードがどれになってるかを調べて、shift-jisになって
なかったらCGIが原因でしょう。
jcodeなりで変換してから出力しましょう。

239 :235:04/02/08 12:07
>>283さん
どうもありがとうございます。

ところが
今IEで確認したのですが、
(表示)->(エンコード)
シフトJISになってました。

240 :デフォルトの名無しさん:04/02/08 15:08
>>234
WTKはJPEG未サポートだったはず

>>235
その部分のソースコードさらしてみ?

241 :デフォルトの名無しさん:04/02/08 15:32
俺はネットから画像(jpeg)を↓のように(途中は省く)して取得してるが。

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

あかんのか?

242 :デフォルトの名無しさん:04/02/08 15:35
MIDP1.0では、PNG形式をサポートしなければならない、としか決まってないと思うた。
JPEGでも動くし、動くならそれでもいいような、、、

243 :デフォルトの名無しさん:04/02/08 15:40
出来る限り、バグの元は取っときたいので、上と掛け合ってみよう。


244 :デフォルトの名無しさん:04/02/08 17:49
>>235
文字列化するときに、SJISを指定してる?

245 :デフォルトの名無しさん:04/02/08 21:17
デフォルトがSJISなので無指定でもOKだった気がしないでもない
なので、変換をやってないと思われ
バイト列にSJISのデータを読み込んで、変換すればヨロシ
詳しくはCLDCのAPIマニュアルのStringクラスを参照の事

246 :235: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"になりました)でした。

全く見当違いなのか、惜しいところまで行ってるのかも分かりません。
出来ましたらぜひ更なるご教授をお願いいたします。

247 :235、246:04/02/09 02:21
ちなみに、
getByte(String)
String(byte[],String)
で、文字コードを指定する引数は以下のものを試しましたが、
”SJIS" 以外、全て UnsupportedEncodingException が返されます

"SJIS",
"Shift_JIS","EUC_JP","EUC_JP" (この3つは例外が返る)

248 :デフォルトの名無しさん:04/02/09 02:22
あ、最後は
"EUC-JP"でした。。

249 :235: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;
}

250 :235: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);

252 :235 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;
 }

253 :235 test 4/4:04/02/09 03:25
以上です。失礼しました。m(_ _)m

254 :デフォルトの名無しさん:04/02/09 13:38
なんか難しく考えすぎな気が…

>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()メソッド
を使いたいのですが、なぜか一時停止から再生
を始めると、最初から再生が始まってしまうのです。
どうしてでしょうか?

256 :235:04/02/09 23:42
(ToT) おぉーー出来ました。。。m(_ _)m
>>254さん、ありがとうございました。
今度コーヒーでも奢らせてください。(*´∀`)

そのほかの皆さんも本当にありがとうございました。

257 :デフォルトの名無しさん:04/02/10 18:10
>255
resumeした時はフレーズデータの先頭から再生される仕様

258 :デフォルトの名無しさん:04/02/11 13:11
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の外で作れとか書いてあったからそうしてます。
何か間違ってる?

259 :258:04/02/11 13:14
上の通りだと文字が白で見えないな。どうでも良いことですが。m(__)m

260 :デフォルトの名無しさん:04/02/12 00:38
単に、キャリア側で複数のサイズのフォントを
用意して無いからじゃない?

261 :デフォルトの名無しさん:04/02/12 10:09
>>258
機種ごとにフォントサイズが決められてて、
一部機種はsmall/large/mediumともすべて同じサイズに規定されてたりする。
なんで実質いじれないと思った方がいいかも。
サイズ一覧はdp.j-phone.comサイトにあったハズ(今サイト落ちてるみたい)

262 :七誌:04/02/12 10:11
>>257さん、ありがとう(^o^)/
では、Vアプリで一時停止・一時停止からの再生
はどのようにすればよいのですか?


263 :デフォルトの名無しさん:04/02/12 10:50
停止ポイントを覚えておいて次回はそこから再生?
MIDIだと途中で止めて状態保持したまま再開って面倒なんだけど
これはどうなんだろ

264 :七誌:04/02/12 11:32
あつかましいと思われるかもしれないですが、
具体的にどのようにすればよいのでしょうか?


265 :デフォルトの名無しさん:04/02/12 15:19
>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アプリを開発したいのですが
コンパイルエラーを起こして、先に進めません(;_;)
どうすればよいでしょうか?
エミュレータ設定もちゃんとしたはずなのに・・・

271 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)