このコードを使用して、その場で BlackBerry で復号化されたオーディオを再生します (簡単にするために、TEAを使用します)
public void play(String path){
try {
FileConnection fc = (FileConnection) Connector.open(path, Connector.READ);
InputStream is = fc.openInputStream();
byte[] rawData = IOUtilities.streamToBytes(is);
processEncryptedAudio(rawData);
is.close();
fc.close();
}
catch (IOException ioex){
}
}
// TEA code is taken from http://www.winterwell.com/software/TEA.php
private void processEncryptedAudio(byte[] data) throws IOException {
TEA tea = new TEA("ABCDE ABCDE ABC A ABCDEF".getBytes());
byte[] decrypted_data = tea.decrypt(data);
ByteArrayInputStream stream = new ByteArrayInputStream(decrypted_data);
ByteArrayInputStreamDataSource source = new ByteArrayInputStreamDataSource(stream, "audio/mpeg");
try {
player = Manager.createPlayer(source);
player.start();
}
catch (MediaException me){
Dialog.alert("MediaException: "+me.getMessage());
}
}
問題は、復号化が完了するまでにかなりの時間がかかることです。例: シミュレーターでは、9 MB のオーディオの復号化に約 5 秒かかりますが、BlackBerry Torch 9860 では 20 秒以上かかります。
これを改善する方法はありますか?実際には、ファイル全体が隠されている/直接再生できない限り、ファイル全体を暗号化する必要はありません。