• ベストアンサー

iアプリ:スクラッチパッド

お世話になっております、dwtです。 テキストやWEB片手に独学でiアプリ開発をやっているのですが どうしても解決できない点があり質問させて頂きました。 現在、Eclipseを用いて開発していて エミュレータ上では意図する通り動くのですが 実機(SO506iC)では上手く動作しません。 動作させたい流れは以下となっております 初回起動かを確認 ↓ 特定のフラグが0なら初回読み込みと判定 WEBから画像をDLしスクラッチパッド2に保存 ↓ 読み込み済みフラグを書き込み ↓ その他の処理 という流れを行っているのですが 実機ではスクラッチパッドが書き込まれていないのか 常に初回起動扱いの動作をします。 読み込み部 //----------------------------------------- os_in = Connector.openInputStream("scratchpad:///0;pos=0"); byte_data = new byte[1]; int_size = (int)(os_in.read()&0xEF); byte_data = new byte[int_size]; os_in.read(byte_data); str_retdata = new String(byte_data , 0 , int_size ); WEBから画像を取得しスクラッチパッド2に画像を保存する処理 //------------------------------------ (コネクト部字数制限により略) OutputStream out = Connector.openOutputStream("scratchpad:///2;pos=0"); byte[] byte_buf = new byte[1000]; while(( int_size = in.read(byte_buf)) != -1) { out.write(byte_buf,0,int_size ); } また次の点も解決できずにいます。 ・gif画像を90kb程度のサイズにした場合、最初の画像表示部でエラー停止してしまう →画像サイズに制限? ・スクラッチパッド0のデータを読み込む際 最後まで読み込めず途中で途切れてしまう。 スクラッチパッド0のデータを途切れる事なくSTRING型に格納する良い方法は…? 何かご存知の方がいらっしゃいましたらお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#257915
noname#257915
回答No.1

フラグもスクラッチパッドに保存していると思いますが 初回起動チェックするためのフラグを保存する処理は正 常に動いていますか。 JAMファイルのSpsizeは正しくかかれていますか。 実機デバッグ用にJAMファイルにAppTraceという項目が あるのでonにすると、System.out.printlnで出力した ものが携帯端末でそのまま確認できます。 確認方法は機種により若干変わりますが、履歴表示など で見ることができるはずです。 >・gif画像を90kb程度のサイズにした場合、最初の画像表示部でエラー停止してしまう 具体的なエラーの内容は確認されたのでしょうか。 それがわからなければ、可能性しか指摘できません。 機種によっては画像の幅と高さが液晶画面より大きいと 表示できないことがあります。 メモリを使いすぎていませんか。それにしても大きな画像 データを使っていますね。別のサイズが違う画像で試され てはいかがでしょう。 >int_size = (int)(os_in.read()&0xEF); スクラッチパッド0のサイズ取得が0xEFと&を取っている のでデータ途中で途切れているのではないでしょうか。 とにかくエラーを具体的にtry-catchやメモリ使用量を確 認しつつ特定しないことにはあまり具体的に解答すること はできません。 この程度の回答で申し訳ないですが、解決につながれば幸いです。

dwt
質問者

お礼

返信ありがとうございます。 また、対応が遅くなってしまい申し訳ありません >SPサイズなど 正常に指定しています …が履歴吐き出しについてははじめてしりました レスを拝見してからは使うようにしています ありがとうございます。 >メモリの使いすぎ 私もそれを考えたのですが 小さいサイズでもNullPointerErrorになってしまいます。 画像サイズを液晶ドットより小さくしても駄目でした。 …がそれだと普通に表示できてる小さい画像が表示できて なぜこっちが表示できない?という事になりますので まずはそのへんから詳しく調査しようと思います。 >SP途中から切れる 本のまま書いていたのですがこれじゃ切れて当然ですよね(苦笑 とんでもないくらいうっかりしてました… 参考になりました。ありがとうございます。

その他の回答 (1)

  • pomo
  • ベストアンサー率61% (11/18)
回答No.2

・毎回初回起動の件  1の方もおっしゃるように、実機でなにか変なことが起こった場合にはJAMファイルにAppTrace=onと書いて、実機で動作させた場合のアプリトレースを確認する必要があります。実際にSPに書き込んでみて、直後に読み込んでそれをSystem.out.printlnしてみるということです。実際、エミュレータって結構実機とちがった挙動しますから。 ・gif90KBの件 多分ファイルサイズよりもピクセルサイズ(画素数)が問題になっているものと思います。iアプリで読み込める画像のピクセルサイズは端末によって機種依存が大きいものの1つです。参考URLはSO505のものですが、いろいろ機種依存があることがわかります。一度小さい画素数でテストしてみることをおすすめします。 対応している画素するより大きい画像が入力された場合のふるまいも端末によってさまざまです。いきなりアプリが落ちる場合や、ダイヤログを出して落ちるもの、画面に読み込んだ画像ではなくバツマークを表示するものなどいろいろです。 ・SP0で途中で切れる件 StringをSPに読む場合は、 DataInputStream.readUTF()を使ってはいかがでしょうか?当然書くときには逆のDataOutputStream.writeUTF(String)で  

参考URL:
http://www.nttdocomo.co.jp/p_s/imode/java/pdf/so505is_iappli_notes_1.pdf
dwt
質問者

お礼

返信ありがとうございます。 また遅くなってしまい申し訳ありませんでした。 >実際、エミュレータって結構実機とちがった挙動しますから。 どうやらそのようですね 今回の件で初めてそれを感じました。 エミュ機で動くからOK…って判断はまずいと言う事ですね >エラー依存 そこまで配慮できてませんでした。。。 サイズを動作するレベルまで調整した後も 他の機器の対応を注意しようと思います…。 >DataInputStream.readUTF() 記事を拝見したあと調べてこれの動作を知りました。 うまく使い分けるようにしたいと思います。 ありがとうございました。

関連するQ&A

専門家に質問してみよう