iモードのプログラムについて質問です

このQ&Aのポイント
  • iアプリのプログラム作成中の疑問です。現在、iアプリで資料をCanvasで作成しています。容量オーバーのエラーが出てしまい、他のプログラムに移動する方法があるのか教えて欲しいです。
  • iアプリのプログラム作成中の疑問です。プログラム行数が過大で容量オーバーのエラーが出てしまい、まだまだ盛り込みたいものがあるので他のプログラムに移動する方法があるのか教えて欲しいです。
  • iモードのプログラム作成中に出てきた疑問です。現在、iアプリで資料を作成していますが、容量オーバーのエラーが出てしまいました。他のプログラムに移動する方法を教えていただけると幸いです。
回答を見る
  • ベストアンサー

iモードのプログラムについて質問です

iアプリのプログラム作成中の疑問です。 現在、iアプリで資料をCanvasで作成しています。 初心者ということもあり、必要事項を単純にプログラムしておりましたが、プログラム行数が過大となり、容量(32k)オーバーというエラーが出てしまい、まだまだ盛り込みたいものがあるので何か方法があるのではないか、ということで記入した次第です。 自分なりに考えた方法はあるのですが、実際できるのであればプログラムを教えてください。 HTML等のようにクリック一つで別のプログラムに移動できるようなことは出来るのでしょうか? 例) 親 子1 子2 (キーイベントを利用し、親ファイルから子を呼び出す) if (keyEvent==Display.KEY1) 子1ファイルを呼び出す else if (keyEvent==Display.KEY2) 子2ファイルを呼び出す よろしくお願いいたします。

  • Java
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • isle
  • ベストアンサー率51% (77/150)
回答No.1

『iアプリコンテンツ開発ガイド 詳細編』に『連携モードによるiアプリ連携起動』というのが紹介されています。 # iアプリ技術資料ダウンロード # http://www.nttdocomo.co.jp/service/imode/make/content/iappli/index.html#p04 余談ですが、30KBオーバーということはDoja3.0ですか? 505iにも対応しなければならないのでしょうか? 新しい機種(FOMA以降とか)に限定すればもっと大きい容量で作れますよ? Doja3.0の場合でも、データファイルを分離、初回起動時にロードしてスクラッチパッドに保存して読み出すようにすればzip形式で圧縮して200KBまでのデータも使えます。 それからclassファイル難読化ツールというのを使うとclassファイルのサイズを小さくすることができます。 わたしはProGuardというのをふだん使っています。

関連するQ&A

  • このwhile文、ずっと回っているのでしょうか?(iアプリ・Java)

    このwhile文、ずっと回っているのでしょうか?(iアプリ・Java) //trueを入れたwhile文 while(true){  if(keyEvent == Display.KEY_1){   //ボタン「1」をプッシュされた時の処理(内容は文字列出力など、適当に。)  }  //keyEventを初期化。(少なくとも、「1」ではない数字に)  keyEvent = -555; } //キーイベント(※iアプリ)の処理  public void processEvent(int type, int param) {  if (type==Display.KEY_PRESSED_EVENT) keyEvent=param; } このような記述を書籍で見掛けました。 動作としては、問題なく動いているのですが、 これは、キーイベント待ちの無限ループという感じなのでしょうか? ループしている間、常に回っていて、ハードウェアに仕事をさせている(電力消費)ということなのでしょうか?

    • ベストアンサー
    • Java
  • iアプリの作成で画像が再描画されません。

    iアプリの作成で画像が再描画されません。 どうしても解決できないのでご教示下さい。 iアプリの作成をしながら勉強しています。 利用しているプロファイルはdoja 5.1です。 class MainCanvas extends Canvas {  public void paint(Graphics g) {   MediaImage mi = MediaManager.getImage("resource:///6.gif");   try {    mi.use();   } catch(Exception e) {    //何らかの例外処理   }   Image image = mi.getImage();   getGraphics().drawImage(image, 20, 0);  }    public void processEvent(int type, int param) {  if (type==Display.KEY_PRESSED_EVENT) {     if (param == Display.KEY_SELECT) {      Dialog dlg = new Dialog(Dialog.DIALOG_YESNO, "終了");      dlg.setText("終了しますか?");      int result = dlg.show();      if (result == Dialog.BUTTON_YES) {       IApplication.getCurrentApp().terminate();      }     }   if (param == Display.KEY_SOFT1) {    MediaImage mi = MediaManager.getImage("resource:///9.gif");    try {     mi.use();    } catch(Exception e) {     //何らかの例外処理    }    Image image = mi.getImage();    getGraphics().drawImage(image, 0, 0);         }    }  } } こんなクラスがあった時、ダイアログがキャンセルされると、 「9.gif」の方がキャンバス上から消えてしまいます。 どういう作りにすると、キャンバスから画像が消えなくなる のでしょうか?

    • ベストアンサー
    • Java
  • iモードの嫌がらせメールについて

    他人事だとばかり思っていたのですが、つい先日ニュースにもなった、iモードの「フリーズボム」を送られました。 一時的に固まったように見せかけると言うあれです。 で、やむなくメアドを変更したのですが、このフリーズボム(固まらせメール)について教えて欲しいのです。 そもそも、iモードはメールのプログラムや添付ファイルは送信できないはずですが、届いたボムを見ると画像のようなファイルが添付されているようなのです。 このファイルを調べようとしても、フリーズするだけで中身を開くことすら出来ません。 一体、このメールはどういうものなのでしょうか? また、一説には巨大なプログラムで携帯に過大な処理をさせていると言うことですが、パケ代に影響することはないのでしょうか? ウイルスとかメールボムとか、しょうもない悪さをする輩が多くて、全く腹立たしいこの頃ですが、仕組みを知ることも防衛手段の1つかと思い、質問した次第です。 おわかりになる方、宜しくお願いします。

  • iアプリ/サイコロの作り方

    Doja5.1 J2SDK1.4.2 を使ってソースを書いています。 まずサイコロを振るプログラムを作って、そのあとサイコロの数字を画像で表示できるようなものを作りたいです。 サイコロの画像はgifで用意してあります。 まずサイコロを振るプログラムですが以下のように書きました。 しかし、エラーが出ないにも関わらずエミュレータで動きません。 どこが間違っているのかどなたか教えてください。 また、画像を表示するほうのプログラムはどこを変えれば良いでしょうか。 よろしくお願い致します。 import com.nttdocomo.ui.*; import java.util.Random; class MainCanvas extends Canvas { int dice[] = new int[8*2]; Random rnd = new Random(); boolean init_flg = false; public MainCanvas() { setSoftLabel(Frame.SOFT_KEY_1,"サイコロ"); setSoftLabel(Frame.SOFT_KEY_2,"終了"); } public void paint( Graphics g ) { if(init_flg == false) { init_flg = true; return; } g.clearRect(0,0,200,2*8*13+30); int i; for(i=0;i<8*2;i++) { g.drawString(Integer.toString(i+1)+"回目のサイコロ",0,i*13+30); g.drawString(Integer.toString(dice[i]),100,i*13+30); } } public void processEvent( int type, int param ) { if( type == Display.KEY_PRESSED_EVENT ) { if( param == Display.KEY_SOFT1 ) { int i; for(i=0;i<8*2;i++) { dice[i] = rnd.nextInt(11)+2; } repaint(); } else if( param == Display.KEY_SOFT2 ) { IApplication.getCurrentApp().terminate(); } }

    • ベストアンサー
    • Java
  • プログラムの改良

    文章を単語毎に分割するプログラムを作っています。 下記のプログラムだと I□am□a□boy. の場合、Iとamとaとboyと.に分割され、ここまではいいのですが。 さらにI□am□□a□□□boy□.とスペースが余計に入ってしまってる文章の場合に、Iとamと□aと□□boyと□. と表示させたいのですがどう改良したらいいのか分かりません。 下記のプログラムだとI□am□□a□□□boy□.はIとamとaとboyと.になってしまいます。 どなたかプログラムの追加を教えていただけないでしょうか。□はスペース一個を表しております。 #include <stdio.h> int main() { int i,key,len,num ; char str[256],*ptr[128] ; num = 0 ; len = 0 ; ptr[0] = str ; do { key = getchar(); str[len] = (char)key ; if ( key == ' ' || key == '.' || key == ',' || key == '!' || key == '?' || key == '"' || key == 0x0a || key == 0x0d ){ str[len] = '\0' ; if ( str+len-ptr[num] ){ num ++ ; } ptr[num] = str+len+1 ; if( key=='.' || key== '!' || key=='?' || key=='"'){ str[++len]=(char)key; str[++len]='\0'; ptr[++num]=&str[len+1]; } } len ++ ; } while ( key != 0x0a && key != 0x0d && len < 255 ); str[255] = '\0' ; for (i=0 ;i<num ;i++){ printf("%d. %s\n",i+1,ptr[i]); } return i ; }

  • iアプリでカーソルの位置取得

    今回はじめてiアプリを作成中なのですが、panelクラスで何かのキーが押された時にどの入力項目上にカーソルがあるかを取得したいのですが、やり方がわかりません。どなたか教えて下さい。イベントがあった時にどの項目にあるかがわかるか、それともY軸の座標(項目は縦に並んでいるので)がわかればいいのですが、よろしくお願いします。 PS.出来ればCanvasではなくpanelでの方法を教えて下さい。

  • iアプリ CanvasとPanelの切り替え

    こんにちは、iアプリ作成のことで質問させてください。 CanvasとPanelを切り替える方法が分かりません。 今までCanvasだけ、Panelだけのアプリケーションは作成したことがあるのですが、今回VisualPresenterで動画再生するときだけPanelで表示させ、それ以外の時はCanvasで表示させたいと考えています。どのような方法で切り替えればいいのでしょうか。またそのようなことは可能なのでしょうか。 ヒントだけでも結構です、よろしくお願い致します。

    • ベストアンサー
    • Java
  • プログラムのことについてご質問します。

    プログラムのことについてご質問します。 先日から以下のプログラムのことについて悩んでいます。 このプログラムは、テキストファイル(内容は「名前,成績」)を読み込んで、テキストファイル(内容は「名前,成績,偏差値」)を書きだすというものなのです。てか、そのつもりで作りました。 コンパイルの時は、エラーが出ないのですが、いざ起動してみると、プログラムが終了せず、書き出しも行われません。 #include<stdio.h> #include<math.h> int main(int argc,char *argv[]){ FILE *rfp; FILE *wfp; int nline = 0; double score[100]; double sum_score = 0; char name[100][256]; int i; double heikinn; double hensati[100]; double ga[100]; double g[100]; double gg=0; double d=0; if (argc != 3){ fprintf(stderr,"使い方:%s 入力ファイル 出力ファイル\n",argv[0]); return -1; } if ((rfp=fopen(argv[1],"r")) ==NULL){ fprintf(stderr,"%sが開けません\n",argv[1]); return -1; } if ((wfp=fopen(argv[1],"w")) ==NULL){ fprintf(stderr,"%sが開けません\n",argv[2]); return -1; } while(fscanf(rfp,"%[^,],%lf\n", name[nline], &score[nline]) >0){ sum_score += score[nline]; nline ++; } heikinn=sum_score/nline; for (i=0; i<=nline; i++){ ga[i]=(score[i]-heikinn); g[i] = ga[i]*ga[i]; gg += g[i]; } for (i=0; i<=nline; i++){ d= gg/(nline-1); hensati[i]=10*ga[i]/sqrt(d)+50; } for(i=0; i<=nline; i++){ fprintf(wfp,"Average score is %s, %5.2lf,%5.2lf.\n",name[i],&score[i],hensati[i]); } fclose(wfp); fclose(rfp); return 0; } 皆様のお力をおかりできないでしょうか? よろしくお願いします。

  • このプログラムを改良したい

    この単語分割プログラムを区切り文字である( . ? ! " )等も一つの単語として表示させたいのですが、どう改良したらいいかわかりません。 どなたかプログラムの追加削除を教えていたたけないでしょうか。 #include <stdio.h> int main() { int i,key,len,num ; char str[256],*ptr[128] ; num = 0 ; len = 0 ; ptr[0] = str ; do { key = getchar(); str[len] = (char)key ; if ( key == ' ' || key == '.' || key == ',' || key == '!' || key == '?' || key == '"' || key == 0x0a || key == 0x0d ){ str[len] = '\0' ; if ( str+len-ptr[num] ){ num ++ ; } ptr[num] = str+len+1 ; } len ++ ; } while ( key != 0x0a && key != 0x0d && len < 255 ); str[255] = '\0' ; for (i=0 ;i<num ;i++){ printf("%d. %s\n",i+1,ptr[i]); } return i ; } *教えてgoo 質 問 No.919881 arukamunさんのプログラムを引用しました。

  • プログラムのことについてご質問します。

    プログラムのことについてご質問します。 先日から以下のプログラムのことについて悩んでいます。 #include<stdio.h> #include<math.h> int main(int argc,char *argv[]){ FILE *rfp; FILE *wfp; int nline = 0; double score[100]; double sum_score = 0; char name[100][256]; int i; double heikinn; double hensati[100]; double ga[100]; double g[100]; double gg=0; double d=0; if (argc != 3){ fprintf(stderr,"使い方:%s 入力ファイル 出力ファイル\n",argv[0]); return -1; } if ((rfp=fopen(argv[1],"r")) ==NULL){ fprintf(stderr,"%sが開けません\n",argv[1]); return -1; } if ((wfp=fopen(argv[1],"w")) ==NULL){ fprintf(stderr,"%sが開けません\n",argv[2]); return -1; } while(fscanf(rfp,"%[^,],%lf\n", name[nline], &score[nline]) >0){ sum_score += score[nline]; nline ++; } heikinn=sum_score/nline; for (i=0; i<=nline; i++){ ga[i]=(score[i]-heikinn); g[i] = ga[i]*ga[i]; gg += g[i]; } for (i=0; i<=nline; i++){ d= gg/(nline-1); hensati[i]=10*ga[i]/sqrt(d)+50; } for(i=0; i<=nline; i++){ fprintf(wfp,"Average score is %s, %5.2lf,%5.2lf.\n",name[i],&score[i],hensati[i]); } fclose(wfp); fclose(rfp); return 0; } エラーは、出ないのですがプログラムが完了できません。 皆様のお力をおかりできないでしょうか? よろしくお願いします。

専門家に質問してみよう