processing-sound icon indicating copy to clipboard operation
processing-sound copied to clipboard

Android mode " no such file or directory"

Open Henry-derbug opened this issue 1 year ago • 2 comments

Running the SimplePlayback example (processing4.2) on an android 13 (and others) phone throws the error:

java.io.FileNotFoundException: /data/user/0/processing.test.simpleplayback/files/null.wav: open failed: ENOENT (No such file or directory)

command that causes the error: soundfile = new SoundFile(this, "null.wav");

the "null.wav" file is located in the data directory of the app.

i also checked absolute path on internal or external storage but the SoundFile Class doesnt accept sparators in the path.

The path that the SoundFile(this, "null.wav"); throws is different from the correct android path.

path from error SoundFile(this, "null.wav"); /data/user/0/processing.test.simpleplayback/files ####### path from
SDcards = context.getExternalFilesDirs(null); sdPath0 = SDcards[0].toString() ; sdPath1 = SDcards[1].toString() ; sdPath0: /storage/emulated/0/Android/data/processing.test.simpleplayback/files

what can I do to get the SoundFile playing the .wav file from internal memory or external SDCard on an android?

Henry-derbug avatar May 18 '24 15:05 Henry-derbug

Could you try loading the file using its full absolute path? I.e.:

new SoundFile(this, "/storage/emulated/0/Android/data/processing.test.simpleplayback/files/null.wav");

kevinstadler avatar May 19 '24 11:05 kevinstadler

SoundFile Class doesnt accept sparators in the path.

java.lang.IllegalArgumentException: File /temp.wav contains a path separator

not a single one and not several in the absolute path.

I found out that openFile behaves different in java and in android, One should use streams to open files with separators but this is too sophisticated for me to find out a working code. Im so happy to use processing without deepdiving into android tricks. https://stackoverflow.com/questions/5963535/java-lang-illegalargumentexception-contains-a-path-separator

In the same android app I use output = createWriter(sdPath+logfilename+"_log"+".csv"); to write a log file to an absolute path "sdPath" and this works without rejecting the / slash file separator.

Henry-derbug avatar May 19 '24 12:05 Henry-derbug