processingでandroidアプリケーションを作成しています。 風鈴があり、マイクに息を吹きかけると風鈴が揺れて音が鳴るというものです。 ###発生している問題・エラーメッセージ ソースコードの方にはエラーメッセージが出ないのですが、android端末の方で「問題が発生しました」と表示され、アプリが落ちてしまいます。 エラーコードです
コード
java
FATAL EXCEPTION: Animation Thread java.lang.IllegalArgumentException: File 鬚ィ驤エ/1.png contains a path separator at android.app.ContextImpl.makeFilename(ContextImpl.java:2000) at android.app.ContextImpl.getFileStreamPath(ContextImpl.java:841) at android.content.ContextWrapper.getFileStreamPath(ContextWrapper.java:189) at processing.core.PApplet.sketchPath(Unknown Source) at processing.core.PApplet.createInputRaw(Unknown Source) at processing.core.PApplet.createInput(Unknown Source) at processing.core.PApplet.loadImage(Unknown Source) at processing.test.sketch_kari.sketch_kari.setup(sketch_kari.java:61) at processing.core.PApplet.handleDraw(Unknown Source) at processing.core.PGraphicsAndroid2D.requestDraw(Unknown Source) at processing.core.PApplet.run(Unknown Source) at java.lang.Thread.run(Thread.java:841)
###該当のソースコード
java コード import ketai.sensors.*; import android.media.MediaPlayer; import android.content.res.AssetFileDescriptor; import android.content.Context; import android.app.Activity; MediaPlayer mp; Context context; Activity act; AssetFileDescriptor afd; KetaiAudioInput mic; short[] data; String filename; PImage[] m; int ugo=0,FPS; void setup() { orientation(LANDSCAPE); imageMode(CENTER); textSize(45); colorMode(RGB, 255,255,255,100); act = this.getActivity(); context = act.getApplicationContext(); size(1920,1080); frameRate(15); m=new PImage[100]; for(int i=1;i<42;i++){ filename="風鈴/"+i+".png"; m[i]=loadImage(filename); } }; void settings(){ size(displayWidth,displayHeight); } void draw() { background(0); updata(); if (data != null) { image(m[FPS],100,500); try { mp = new MediaPlayer(); afd = context.getAssets().openFd("wind_bell.mp3");//which is in the data folder mp.setDataSource(afd.getFileDescriptor()); mp.prepare(); } catch(IOException e) { println("file did not load"); } mp.start(); } } void updata(){ FPS++; if(FPS==41){FPS=1;} } void onAudioEvent(short[] _data) { data= _data; }
###補足情報(言語/FW/ツール等のバージョンなど)
processing3.0.2
実機はNexus7
android Mode
ライブラリ Ketai
permission はANDROID->Sketch permissionからRECORD_AUDIOを用いています。
風鈴の画像に関してはLive2Dを用いて作成し、ソースコードを引っ張ってきました。
xmlなどインターネットに必要なデータは消しました。
授業課題で制作しているのですが、ほぼ初心者のため、何もわかりません。
何か説明が足りていないところがあれば、その都度答えれる範囲で答えたいと思います。
落ちてしまいますだけでは、回答することができないと思います。 使用している開発環境でエラーメッセージが表示されていると思うので、それを提示してください。 開発に何を使っているかも書くと良いと思います。あといきなり実機ではなくて最初は、エミュレータでやってみるのが良いと思いますよ。
それとコードはコードタグで囲ってくださいね、編集画面の右上の</>というボタンです。
BJCRobotさんありがとうございます!!
エラーメッセージの方追加します。
追記ありがとうございます、ですが、WARNINGというのは、警告なのでエラーではありません。 実行した時にExceptionと表示される内容を書いてくださいね。あと、先ほども書きましたが非常に見難いのでコードタグを使ってください。右側にプレビューが出ると思うので確認しながら作業してくださいね。
BJCRobotさん、色々迷惑をかけてしまってすみません。
xmlはまた後に変更をします
pngファイルの名前に日本語が含まれているようなので、fuurin.pngなどに変えて試してみてください
pngの方はすべて1,2・・・といった連番でした。全角かどうかも確認して、すべて半角であることを確認しました。
フォルダの方が「風鈴」となっていたので「huurin」と変えましたがerrorログに変化はありませんでした。
loadImage()の中身が分からないのでなんとも言えませんが、エラーログを見る限り、"contains a path separator"(パス区切り文字が含まれている)と読めるので、huurin/1.png のhuurin/がフォルダパスではなくファイル名として認識されているのでは?