#java #android
#java #Android
Вопрос:
Я пытаюсь создать приложение, которое загружает и воспроизводит музыку. Чтобы запретить пользователям копировать музыкальные файлы, я хочу зашифровать файл сразу после его загрузки. Я борюсь с кодом в течение нескольких дней, но не могу выяснить, что вызывает ошибки. Вот соответствующий код —
private BroadcastReceiver onDownloadComplete = new BroadcastReceiver() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onReceive(Context context, Intent intent) {
long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if (downloadID == id) {
Toast.makeText(DownloadActivity.this, "Download completed", Toast.LENGTH_SHORT).show();
Context appContext = getApplicationContext();
MasterKey mainKey = new MasterKey.Builder(appContext)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build();
String fileToWrite = songName ".mp3";
EncryptedFile encryptedFile = new EncryptedFile.Builder(context,
new File(getExternalFilesDir(null), fileToWrite),
mainKey,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build();
byte[] fileContent = convert(getExternalFilesDir(null).getAbsolutePath() "/" songName ".mp3");
OutputStream outputStream = encryptedFile.openFileOutput();
outputStream.write(fileContent);
outputStream.flush();
outputStream.close();
}
}
public byte[] convert(String path) throws IOException {
FileInputStream fis = new FileInputStream(path);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
for (int readNum; (readNum = fis.read(b)) != -1;) {
bos.write(b, 0, readNum);
}
byte[] bytes = bos.toByteArray();
return bytes;
}
};
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(onDownloadComplete);
}
Я также добавляю необходимые строки с помощью try-catch . Удалил его здесь для упрощения кода.
Кроме того, я был бы очень признателен, если бы мог получить совет о том, как лучше всего воспроизводить зашифрованные аудиофайлы, сохраняя их в безопасности. Является ли создание временного файла для воспроизведения хорошим вариантом?
Комментарии:
1. О каких ошибках вы говорите в своем сообщении?