我正在开发一个需要加密视频文件的应用程序,它运行得很好.但是我用来解密的方法返回像Byte数组一样的视频.所以无论如何我可以使用该阵列播放视频而无需创建新文件.
我的方法解密:
private static byte[] decrypt(byte[] raw, byte[] encrypted) throws EncrypterException {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
try {
final Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
return cipher.doFinal(encrypted);
} catch (Exception e) {
throw new EncrypterException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我,我被困在这里?
我正在使用免费的jCIFS库通过CIFS连接到我的NAS设备,它运行良好.我可以连接并获取文件名列表等,没有任何问题.
现在我想打开默认Android应用程序中的一个文件 - 即音乐文件应该在音乐播放器中打开,图库中的图像,视频播放器中的视频文件等等.问题不在于获取MIME类型等等.问题是我不想先下载文件,应该流式传输.
有谁知道如何实现这一目标?我知道CifsManager(另一个第三方应用程序)能够做类似的事情,但它不使用jCIFS,它需要root权限才能挂载驱动器.我的应用程序不需要root访问权限.
你可以在这里找到jCIFS库:http: //jcifs.samba.org/
在Android中,是否可以直接从字节数组生成FileDescriptor,而不必先打开文件?
在 Android 2.2 中,我即时生成一个 MIDI 文件,然后使用 MediaPlayer 播放它。我在下面包含了成功执行此操作的 Main.java 文件的文本。到现在为止还挺好。
然而,这个过程首先调用...
FileOutputStream outputStream = openFileOutput(file, MODE_PRIVATE);
outputStream.write(byteStream);
outputStream.close();
Run Code Online (Sandbox Code Playgroud)
...写出文件,然后调用...
FileInputStream inputStream = new FileInputStream(midifile);
FileDescriptor fileDescriptor = inputStream.getFD();
Run Code Online (Sandbox Code Playgroud)
...在调用之前重新阅读它:
mediaPlayer.setDataSource(fileDescriptor);
Run Code Online (Sandbox Code Playgroud)
在我看来,这很浪费。我可以直接从 byteArray 创建 FileDescriptor,以便立即播放 MIDI 流吗?
== 工作代码 ==
package com.example.midi;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
public class Main extends Activity {
private String file = "midi.mid";
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试修改(扩展)FileInputStream类,以便我可以打开加密文件并将该流用于MediaPlayer setDataSource(FileDescriptor).问题是我不知道应该覆盖哪个方法来在流内进行解密.我尝试覆盖所有read()方法,但mediaPlayer似乎没有使用它们.
有什么建议?