Player p = Manager.createPlayer("capture://audio?rate=8000&bits=8&channels=1"); p.realize(); RecordControl rc = (RecordControl) p.getControl("RecordControl"); ByteArrayOutputStream output = new ByteArrayOutputStream(); rc.setRecordStream(output); rc.startRecord(); p.start(); Thread.currentThread().sleep(1000); rc.commit(); p.close(); buf = output.toByteArray();
I'm using series 60 midp sdk 2_1_beta and it's emulator.
1. Bits are set to 8 and buf if byte array. But how data will be saved when i change bits=16. I must use something different that ByteArrayOutputStream or then two array cells store one 16bit number (then correct values is something like that: array[i]+255*array[i+1])?? 2. Record time is set to 1000 and rate 8000 so output array size should be 8000, but every time i save i have different array size (about 7000 to 9000). Why is that. It does mean that emulator didn't save exactly one second or saving rate isn't equal 8000?? 3. How can i play sound, that i have saved (stored in buf)??